mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-28 17:52:43 +01:00
104 lines
2.9 KiB
PHP
104 lines
2.9 KiB
PHP
|
<?php
|
||
|
|
||
|
/*
|
||
|
* Copyright 2011 Facebook, Inc.
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
class DifferentialDiff extends DifferentialDAO {
|
||
|
|
||
|
protected $revisionID;
|
||
|
protected $ownerPHID;
|
||
|
|
||
|
protected $sourceMachine;
|
||
|
protected $sourcePath;
|
||
|
|
||
|
protected $sourceControlSystem;
|
||
|
protected $sourceControlBaseRevision;
|
||
|
protected $sourceControlPath;
|
||
|
|
||
|
protected $lintStatus;
|
||
|
protected $unitStatus;
|
||
|
|
||
|
protected $lineCount;
|
||
|
|
||
|
protected $branch;
|
||
|
|
||
|
protected $parentRevisionID;
|
||
|
protected $arcanistProject;
|
||
|
protected $creationMethod;
|
||
|
|
||
|
public function loadChangesets() {
|
||
|
if (!$this->getID()) {
|
||
|
return array();
|
||
|
}
|
||
|
return id(new DifferentialChangeset())->loadAllWhere(
|
||
|
'diffID = %d',
|
||
|
$this->getID());
|
||
|
}
|
||
|
|
||
|
public function delete() {
|
||
|
$this->openTransaction();
|
||
|
foreach ($this->loadChangesets() as $changeset) {
|
||
|
$changeset->delete();
|
||
|
}
|
||
|
$ret = parent::delete();
|
||
|
$this->saveTransaction();
|
||
|
return $ret;
|
||
|
}
|
||
|
|
||
|
public static function newFromRawChanges(array $changes) {
|
||
|
$diff = new DifferentialDiff();
|
||
|
|
||
|
$lines = 0;
|
||
|
foreach ($changes as $change) {
|
||
|
$changeset = new DifferentialChangeset();
|
||
|
$add_lines = 0;
|
||
|
$del_lines = 0;
|
||
|
foreach ($change->getHunks() as $hunk) {
|
||
|
$dhunk = new Hunk();
|
||
|
$dhunk->setOldOffset($hunk->getOldOffset());
|
||
|
$dhunk->setOldLen($hunk->getOldLength());
|
||
|
$dhunk->setNewOffset($hunk->getNewOffset());
|
||
|
$dhunk->setNewLen($hunk->getNewLength());
|
||
|
$dhunk->setChanges($hunk->getCorpus());
|
||
|
$changeset->addHunk($dhunk);
|
||
|
$add_lines += $hunk->getAddLines();
|
||
|
$del_lines += $hunk->getDelLines();
|
||
|
$lines += $add_lines + $del_lines;
|
||
|
}
|
||
|
$changeset->setHunkCount(count($change->getHunks()));
|
||
|
|
||
|
$changeset->setOldFile($change->getOldPath());
|
||
|
$changeset->setNewFile($change->getCurrentPath());
|
||
|
$changeset->setFilename($change->getCurrentPath());
|
||
|
$changeset->setChangeType($change->getType());
|
||
|
|
||
|
$changeset->setFileType($change->getFileType());
|
||
|
$changeset->setMetadata($change->getAllMetadata());
|
||
|
$changeset->setOldProperties($change->getOldProperties());
|
||
|
$changeset->setNewProperties($change->getNewProperties());
|
||
|
$changeset->setAwayPaths($change->getAwayPaths());
|
||
|
$changeset->setAddLines($add_lines);
|
||
|
$changeset->setDelLines($del_lines);
|
||
|
|
||
|
$diff->addChangeset($changeset);
|
||
|
}
|
||
|
$diff->setLineCount($lines);
|
||
|
|
||
|
return $diff;
|
||
|
}
|
||
|
|
||
|
}
|