1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-29 18:22:41 +01:00

Build correct corpus in copied or moved files

Summary:
This problem shows very far away.
One of the symptomps is that the contents of a moved file is displayed as added in Differential but it is not a big deal.

The real trouble happens when you try to `arc patch` this diff.
It tries to both copy the file and to add a new contents (which fails).

Fixes T1709.

Test Plan:
  $ git mv a b
  $ git commit -m.
  $ arc diff --only
  $ git reset --hard HEAD^
  $ arc patch --diff # of the created diff

  $ arc unit src/parser/__tests__

Reviewers: epriestley, btrahan

Reviewed By: btrahan

CC: aran, Korvin, boris, mroch, slawekbiel

Maniphest Tasks: T1709

Differential Revision: https://secure.phabricator.com/D3524
This commit is contained in:
vrana 2012-09-19 14:36:38 -07:00
parent 7119f0c4cc
commit 6929f4e57e

View file

@ -997,6 +997,10 @@ EOTEXT
if ($raw_change->getCurrentPath() == $path) { if ($raw_change->getCurrentPath() == $path) {
$change->setFileType($raw_change->getFileType()); $change->setFileType($raw_change->getFileType());
foreach ($raw_change->getHunks() as $hunk) { foreach ($raw_change->getHunks() as $hunk) {
// Git thinks that this file has been added. But we know that it
// has been moved or copied without a change.
$hunk->setCorpus(
preg_replace('/^\+/m', ' ', $hunk->getCorpus()));
$change->addHunk($hunk); $change->addHunk($hunk);
} }
break; break;