* Finish task#49221

This commit is contained in:
zenggang
2022-02-21 08:33:58 +00:00
parent 07f8b9c797
commit 1c503bcf58
4 changed files with 19 additions and 11 deletions

View File

@@ -282,13 +282,15 @@ class gitlab
* @param string $path
* @param string $fromRevision
* @param string $toRevision
* @param string $fromProject
* @param string $extra
* @access public
* @return array
*/
public function diff($path, $fromRevision, $toRevision, $fromProject = '')
public function diff($path, $fromRevision, $toRevision, $fromProject = '', $extra = '')
{
if(!scm::checkRevision($fromRevision)) return array();
if(!scm::checkRevision($toRevision)) return array();
if(!scm::checkRevision($fromRevision) and $extra != 'isBranchOrTag') return array();
if(!scm::checkRevision($toRevision) and $extra != 'isBranchOrTag') return array();
$api = "compare";
$params = array('from' => $fromRevision, 'to' => $toRevision);

View File

@@ -261,13 +261,14 @@ class GitRepo
* @param string $path
* @param string $fromRevision
* @param string $toRevision
* @param string $extra
* @access public
* @return array
*/
public function diff($path, $fromRevision, $toRevision)
public function diff($path, $fromRevision, $toRevision, $extra = '')
{
if(!scm::checkRevision($fromRevision)) return array();
if(!scm::checkRevision($toRevision)) return array();
if(!scm::checkRevision($fromRevision) and $extra != 'isBranchOrTag') return array();
if(!scm::checkRevision($toRevision) and $extra != 'isBranchOrTag') return array();
$path = ltrim($path, DIRECTORY_SEPARATOR);
chdir($this->root);

View File

@@ -115,11 +115,15 @@ class scm
*/
public function diff($path, $fromRevision = 0, $toRevision = 'HEAD', $parse = 'yes', $extra = '')
{
if(!scm::checkRevision($fromRevision)) return array();
if(!scm::checkRevision($toRevision)) return array();
if(!scm::checkRevision($fromRevision) and $extra != 'isBranchOrTag') return array();
if(!scm::checkRevision($toRevision) and $extra != 'isBranchOrTag') return array();
if(!$extra) $diffs = $this->engine->diff($path, $fromRevision, $toRevision);
if($extra) $diffs = $this->engine->diff($path, $fromRevision, $toRevision, $extra);
if($extra)
{
if(get_class($this->engine) == 'gitlab') $diffs = $this->engine->diff($path, $fromRevision, $toRevision, '', $extra);
if(get_class($this->engine) != 'gitlab') $diffs = $this->engine->diff($path, $fromRevision, $toRevision, $extra);
}
if($parse != 'yes') return implode("\n", $diffs);
return $this->engine->parseDiff($diffs);

View File

@@ -709,10 +709,11 @@ class repo extends control
* @param string $newRevision
* @param string $showBug
* @param string $encoding
* @param bool $isBranchOrTag
* @access public
* @return void
*/
public function diff($repoID, $objectID = 0, $entry = '', $oldRevision = '0', $newRevision = 'HEAD', $showBug = 'false', $encoding = '')
public function diff($repoID, $objectID = 0, $entry = '', $oldRevision = '0', $newRevision = 'HEAD', $showBug = 'false', $encoding = '', $isBranchOrTag = false)
{
$this->commonAction($repoID, $objectID);
@@ -745,7 +746,7 @@ class repo extends control
$encoding = empty($encoding) ? $repo->encoding : $encoding;
$encoding = strtolower(str_replace('_', '-', $encoding));
$info = $this->scm->info($entry, $newRevision);
$diffs = $this->scm->diff($entry, $oldRevision, $newRevision);
$diffs = $this->scm->diff($entry, $oldRevision, $newRevision, 'yes', $isBranchOrTag ? 'isBranchOrTag': '');
foreach($diffs as $diff)
{
if($encoding != 'utf-8')