Fixed issues 137 and 138, support of the git submodules.

This commit is contained in:
Loic d'Anterroches
2009-02-27 13:38:22 +01:00
parent e40485c56f
commit cfafdbfde4
3 changed files with 38 additions and 1 deletions

View File

@@ -165,6 +165,10 @@ class IDF_Scm_Git
$file->author = 'Unknown';
}
$file->fullpath = ($folder) ? $folder.'/'.$file->file : $file->file;
if ($file->type == 'commit') {
// We have a submodule
$file = $this->getSubmodule($file, $commit);
}
$res[] = $file;
}
return $res;
@@ -418,4 +422,33 @@ class IDF_Scm_Git
escapeshellarg($commit));
}
/*
* =====================================================
* Specific Git Commands
* =====================================================
*/
/**
* Get submodule details.
*
* Given a "commit" file in the tree, find the submodule details.
*
* @param stdClass File description of the module
* @param string Current commit
* @return stdClass File description
*/
public function getSubmodule($file, $commit)
{
$file->type = 'extern';
$info = $this->getFileInfo('.gitmodules', $commit);
if ($info == false) {
return $file;
}
$gitmodules = $this->getBlob($info);
if (preg_match('#\[submodule\s+\"'.$file->fullpath.'\"\]\s+path\s=\s(\S+)\s+url\s=\s(\S+)#mi', $gitmodules, $matches)) {
$file->extern = $matches[2];
}
return $file;
}
}