Description
Hi there and thanks for this wonderful project.
It seems that submodules are not supported.
I have a directory structure as such
.git
|_ modules
|_ plugin
|_ ... actual git files
|_ plugin
|_ .git
|_ vendor
|_ ... module files
... root repo files
Where the /plugin/.git
file contains the standard module entry: gitdir: ../.git/modules/plugin
If I try to run the vendor/bin/roave-backward-compatibility-check
command from within the plugin
directory, I get the error: Directory "/plugin" is not a GIT repository
, because as far as I can understand /plugin/.git
in my case needs to be a directory and not a file.
I can see that a possible patch would be to have a statement as such $sourceRepo = CheckedOutRepository::fromModuleFileOrPath(Env\current_dir())
in AssertBackwardsCompatible::execute
where the CheckedOutRepository
code could include something as such:
public static function fromModuleFileOrPath(string $path): self {
if($fromModuleFile = self::fromModuleFile($path)) {
return $fromModuleFile;
}
return self::fromPath($path);
}
public static function fromModuleFile(string $path): ?self {
if(Psl\Filesystem\is_file("$path/.git")) {
$content = Psl\File\read("$path/.git");
// Check that content contains a map to an actual git repo and get it
// 1. It starts with the gitdir: wording (?)
// 2. Grab and normalize the content after the gitdir: and assign it to an $actualPath variable
// 3. Is it relative? If yes concatenate the two paths "$path/$actualPath" otherwise replace $path with $actualPath
// 4. Does the map folder exists and contains a .git folder?
// 5. Return new self($path);
}
return NULL;
}
I could try to create a PR but I am not sure that the proposed approach fits in your current design
Activity