Issue 112: Missing git information for some files
This commit is contained in:
parent
fef995b1e4
commit
7f1ef7dc40
@ -724,7 +724,7 @@ class IDF_Scm_Git extends IDF_Scm
|
|||||||
$details = array();
|
$details = array();
|
||||||
for ($i=0;$i<$n;$i++) {
|
for ($i=0;$i<$n;$i++) {
|
||||||
if ($tree[$i]->type == 'blob') {
|
if ($tree[$i]->type == 'blob') {
|
||||||
$details[$tree[$i]->hash] = $i;
|
$details[sha1($tree[$i]->hash . $tree[$i]->fullpath)] = $i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!count($details)) {
|
if (!count($details)) {
|
||||||
@ -778,17 +778,26 @@ class IDF_Scm_Git extends IDF_Scm
|
|||||||
sprintf($cmd, $skip), $rawlog);
|
sprintf($cmd, $skip), $rawlog);
|
||||||
while (count($rawlog) and count($blobs)) {
|
while (count($rawlog) and count($blobs)) {
|
||||||
$rawlog = implode("\n", array_reverse($rawlog));
|
$rawlog = implode("\n", array_reverse($rawlog));
|
||||||
foreach ($blobs as $blob => $idx) {
|
$newRawLog = substr($rawlog, 0, strrpos(rtrim($rawlog), "\n"));
|
||||||
if (preg_match('/^\:\d{6} \d{6} [0-9a-f]{40} '
|
$rawLogArr = explode("\n", $rawlog);
|
||||||
.$blob.' .*^([0-9a-f]{40})/msU',
|
$lastLine = $rawLogArr[count($rawLogArr) - 1];
|
||||||
$rawlog, $matches)) {
|
$commit = explode(" ", $lastLine)[0];
|
||||||
$fc = $this->getCommit($matches[1]);
|
$fc = $this->getCommit($commit);
|
||||||
$res[$blob] = (object) array('hash' => $blob,
|
|
||||||
'date' => $fc->date,
|
|
||||||
'title' => $fc->title,
|
foreach(explode("\n", $newRawLog) as $line) {
|
||||||
'author' => $fc->author);
|
$sides = explode("\t", $line);
|
||||||
unset($blobs[$blob]);
|
$leftSide = trim($sides[0]);
|
||||||
}
|
$rightSide = trim($sides[1]);
|
||||||
|
$leftSideSplit = explode(" ", $leftSide);
|
||||||
|
$newHash = sha1($leftSideSplit[3] . $rightSide);
|
||||||
|
$res[$newHash] = (object) [
|
||||||
|
"hash" => $newHash,
|
||||||
|
'date' => $fc->date,
|
||||||
|
'title' => $fc->title,
|
||||||
|
'author' => $fc->author
|
||||||
|
];
|
||||||
|
unset($blobs[$newHash]);
|
||||||
}
|
}
|
||||||
$rawlog = array();
|
$rawlog = array();
|
||||||
$skip += 5000;
|
$skip += 5000;
|
||||||
|
@ -161,15 +161,7 @@ class IDF_Views_Source
|
|||||||
$in_branches = $scm->inBranches($commit, '');
|
$in_branches = $scm->inBranches($commit, '');
|
||||||
$tags = $scm->getTags();
|
$tags = $scm->getTags();
|
||||||
$in_tags = $scm->inTags($commit, '');
|
$in_tags = $scm->inTags($commit, '');
|
||||||
// Cache may work only if we filter for "default" or "tip" commits
|
|
||||||
//$cache = Pluf_Cache::factory();
|
|
||||||
$res = new Pluf_Template_ContextVars($scm->getTree($commit));
|
$res = new Pluf_Template_ContextVars($scm->getTree($commit));
|
||||||
$key = sprintf('Project:%s::IDF_Views_Source::treeBase:%s::',
|
|
||||||
$request->project->id, $commit);
|
|
||||||
/*if (null === ($res=$cache->get($key))) {
|
|
||||||
|
|
||||||
$cache->set($key, $res);
|
|
||||||
}*/
|
|
||||||
$scmConf = $request->conf->getVal('scm', 'git');
|
$scmConf = $request->conf->getVal('scm', 'git');
|
||||||
$props = $scm->getProperties($commit);
|
$props = $scm->getProperties($commit);
|
||||||
$res->uasort(array('IDF_Views_Source', 'treeSort'));
|
$res->uasort(array('IDF_Views_Source', 'treeSort'));
|
||||||
|
Loading…
Reference in New Issue
Block a user