Restructured the control of the large commits.
This commit is contained in:
parent
df086f7a61
commit
e159185465
@ -287,15 +287,12 @@ class IDF_Scm_Git
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get commit size.
|
* Check if a commit is big.
|
||||||
*
|
|
||||||
* Get the sum of all the added/removed lines and the number of
|
|
||||||
* affected files.
|
|
||||||
*
|
*
|
||||||
* @param string Commit ('HEAD')
|
* @param string Commit ('HEAD')
|
||||||
* @return array array(added, removed, affected)
|
* @return bool The commit is big
|
||||||
*/
|
*/
|
||||||
public function getCommitSize($commit='HEAD')
|
public function isCommitLarge($commit='HEAD')
|
||||||
{
|
{
|
||||||
$cmd = sprintf('GIT_DIR=%s git log --numstat -1 --pretty=format:%s %s',
|
$cmd = sprintf('GIT_DIR=%s git log --numstat -1 --pretty=format:%s %s',
|
||||||
escapeshellarg($this->repo),
|
escapeshellarg($this->repo),
|
||||||
@ -316,7 +313,7 @@ class IDF_Scm_Git
|
|||||||
$added+=$a;
|
$added+=$a;
|
||||||
$removed+=$r;
|
$removed+=$r;
|
||||||
}
|
}
|
||||||
return array($added, $removed, $affected);
|
return ($affected > 100 or ($added + $removed) > 20000);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -306,17 +306,14 @@ class IDF_Scm_Mercurial
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get commit size.
|
* Check if a commit is big.
|
||||||
*
|
|
||||||
* Get the sum of all the added/removed lines and the number of
|
|
||||||
* affected files.
|
|
||||||
*
|
*
|
||||||
* @param string Commit ('HEAD')
|
* @param string Commit ('HEAD')
|
||||||
* @return array array(added, removed, affected)
|
* @return bool The commit is big
|
||||||
*/
|
*/
|
||||||
public function getCommitSize($commit='HEAD')
|
public function isCommitLarge($commit='HEAD')
|
||||||
{
|
{
|
||||||
return array(0, 0, 0);
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -290,17 +290,25 @@ class IDF_Scm_Svn
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get commit size.
|
* Check if a commit is big.
|
||||||
*
|
|
||||||
* Get the sum of all the added/removed lines and the number of
|
|
||||||
* affected files.
|
|
||||||
*
|
*
|
||||||
* @param string Commit ('HEAD')
|
* @param string Commit ('HEAD')
|
||||||
* @return array array(added, removed, affected)
|
* @return bool The commit is big
|
||||||
*/
|
*/
|
||||||
public function getCommitSize($commit='HEAD')
|
public function isCommitLarge($commit='HEAD')
|
||||||
{
|
{
|
||||||
return array(0, 0, 0);
|
if (substr($this->repo, 0, 7) != 'file://') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// We have a locally hosted repository, we can query it with
|
||||||
|
// svnlook
|
||||||
|
$repo = substr($this->repo, 7);
|
||||||
|
$cmd = sprintf('svnlook changed -r %s %s',
|
||||||
|
escapeshellarg($commit),
|
||||||
|
escapeshellarg($repo));
|
||||||
|
$out = IDF_Scm::shell_exec($cmd);
|
||||||
|
$lines = preg_split("/\015\012|\015|\012/", $out);
|
||||||
|
return (count($lines) > 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getDiff($rev='HEAD')
|
private function getDiff($rev='HEAD')
|
||||||
|
@ -225,8 +225,7 @@ class IDF_Views_Source
|
|||||||
}
|
}
|
||||||
$title = sprintf(__('%s Commit Details'), (string) $request->project);
|
$title = sprintf(__('%s Commit Details'), (string) $request->project);
|
||||||
$page_title = sprintf(__('%s Commit Details - %s'), (string) $request->project, $commit);
|
$page_title = sprintf(__('%s Commit Details - %s'), (string) $request->project, $commit);
|
||||||
$size = $scm->getCommitSize($commit);
|
$large = $scm->isCommitLarge($commit);
|
||||||
$large = ($size[2] > 100 or ($size[0] + $size[1]) > 20000);
|
|
||||||
$cobject = $scm->getCommit($commit, !$large);
|
$cobject = $scm->getCommit($commit, !$large);
|
||||||
$rcommit = IDF_Commit::getOrAdd($cobject, $request->project);
|
$rcommit = IDF_Commit::getOrAdd($cobject, $request->project);
|
||||||
$diff = new IDF_Diff($cobject->changes);
|
$diff = new IDF_Diff($cobject->changes);
|
||||||
|
Loading…
Reference in New Issue
Block a user