mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-10 08:52:39 +01:00
Don't try to download diffs-of-diffs
Summary: Ref T1715. When the user clicks "Download Raw Diff" in Differential, we try to build a diff of exactly what they're seeing. However: - This doesn't work if any of the changes have multiple hunks, and fixing it seems hard. - I suspect this diff is never actually useful anyway? And probably kind of confusing in the best case. You can't really apply it to anyhting, since you'd have to apply another diff first. Instead, just build the right-side diff, which should align well with user expectation and doesn't suffer from the multi-hunk bug. Some day, we could maybe add some of the fancy options in T1715. See: <https://github.com/facebook/phabricator/issues/461> Test Plan: Downloaded a multi-hunk diff, got the original back and applied it cleanly. Reviewers: btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T1715 Differential Revision: https://secure.phabricator.com/D7694
This commit is contained in:
parent
b111bc039d
commit
ff4e965c90
1 changed files with 1 additions and 32 deletions
|
@ -863,43 +863,12 @@ final class DifferentialRevisionViewController extends DifferentialController {
|
|||
|
||||
$viewer = $this->getRequest()->getUser();
|
||||
|
||||
$engine = new PhabricatorDifferenceEngine();
|
||||
$generated_changesets = array();
|
||||
foreach ($changesets as $changeset) {
|
||||
$changeset->attachHunks($changeset->loadHunks());
|
||||
$right = $changeset->makeNewFile();
|
||||
$choice = $changeset;
|
||||
$vs = idx($vs_map, $changeset->getID());
|
||||
if ($vs == -1) {
|
||||
$left = $right;
|
||||
$right = $changeset->makeOldFile();
|
||||
} else if ($vs) {
|
||||
$choice = $vs_changeset = $vs_changesets[$vs];
|
||||
$vs_changeset->attachHunks($vs_changeset->loadHunks());
|
||||
$left = $vs_changeset->makeNewFile();
|
||||
} else {
|
||||
$left = $changeset->makeOldFile();
|
||||
}
|
||||
|
||||
$synthetic = $engine->generateChangesetFromFileContent(
|
||||
$left,
|
||||
$right);
|
||||
|
||||
if (!$synthetic->getAffectedLineCount()) {
|
||||
$filetype = $choice->getFileType();
|
||||
if ($filetype == DifferentialChangeType::FILE_TEXT ||
|
||||
$filetype == DifferentialChangeType::FILE_SYMLINK) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
$choice->attachHunks($synthetic->getHunks());
|
||||
|
||||
$generated_changesets[] = $choice;
|
||||
}
|
||||
|
||||
$diff = new DifferentialDiff();
|
||||
$diff->attachChangesets($generated_changesets);
|
||||
$diff->attachChangesets($changesets);
|
||||
$raw_changes = $diff->buildChangesList();
|
||||
$changes = array();
|
||||
foreach ($raw_changes as $changedict) {
|
||||
|
|
Loading…
Reference in a new issue