mirror of
https://we.phorge.it/source/phorge.git
synced 2025-01-22 12:41:19 +01:00
Support Git renames in the middle of path
Test Plan: Blame previous revision with such rename. Reviewers: epriestley Reviewed By: epriestley CC: aran, Korvin Differential Revision: https://secure.phabricator.com/D2670
This commit is contained in:
parent
ee916859ea
commit
a8b5ca63bf
1 changed files with 21 additions and 6 deletions
|
@ -44,18 +44,33 @@ final class DiffusionGitRenameHistoryQuery
|
||||||
list($action, $info) = explode(' ', $line, 2);
|
list($action, $info) = explode(' ', $line, 2);
|
||||||
switch ($action) {
|
switch ($action) {
|
||||||
case 'rename':
|
case 'rename':
|
||||||
// rename path/to/file/{old.ext => new.ext} (86%)
|
// We support these cases:
|
||||||
|
// rename README => README.txt (100%)
|
||||||
|
// rename src/README => README (100%)
|
||||||
|
// rename src/{README => README.txt} (100%)
|
||||||
|
// rename {resources => rsrc}/README (100%)
|
||||||
|
// rename src/{aphront => }/README (100%)
|
||||||
|
// rename src/{ => aphront}/README (100%)
|
||||||
|
// rename src/{docs => ducks}/README (100%)
|
||||||
$matches = null;
|
$matches = null;
|
||||||
$ok = preg_match(
|
$ok = preg_match(
|
||||||
'/^(.*){(.*) => (.*)} \([0-9%]+\)$/',
|
'/^(.*){(.*) => (.*)}(.*) \([0-9%]+\)$/',
|
||||||
$info,
|
$info,
|
||||||
$matches);
|
$matches);
|
||||||
if (!$ok) {
|
if ($ok) {
|
||||||
throw new Exception(
|
$name = $matches[1].ltrim($matches[2].$matches[4], '/');
|
||||||
"Unparseable git log --summary line: {$line}.");
|
} else {
|
||||||
|
$ok = preg_match(
|
||||||
|
'/^(.*) => (.*) \([0-9%]+\)$/',
|
||||||
|
$info,
|
||||||
|
$matches);
|
||||||
|
if (!$ok) {
|
||||||
|
throw new Exception(
|
||||||
|
"Unparseable git log --summary line: {$line}.");
|
||||||
|
}
|
||||||
|
$name = $matches[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
$name = $matches[1].$matches[2];
|
|
||||||
break;
|
break;
|
||||||
case 'create':
|
case 'create':
|
||||||
// create mode 100644 <filename>
|
// create mode 100644 <filename>
|
||||||
|
|
Loading…
Reference in a new issue