1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-26 16:52:40 +01:00

Search for SVN commit in Git SVN repository

Summary: `arc patch` currently warns about "This diff is against commit svn+ssh://... but the commit is nowhere in the working copy" in Git SVN repository.

Test Plan:
  $ arc patch # in Git SVN repository
  $ svn find-rev r121212112 # invalid revision

Reviewers: epriestley

Reviewed By: epriestley

CC: aran, Korvin

Differential Revision: https://secure.phabricator.com/D3539
This commit is contained in:
vrana 2012-09-21 14:02:27 -07:00
parent e58e408129
commit 36acc9a01d

View file

@ -384,8 +384,17 @@ final class ArcanistGitAPI extends ArcanistRepositoryAPI {
} }
public function getCanonicalRevisionName($string) { public function getCanonicalRevisionName($string) {
list($stdout) = $this->execxLocal('show -s --format=%C %s', $match = null;
'%H', $string); if (preg_match('/@([0-9]+)$/', $string, $match)) {
list($stdout) = $this->execxLocal(
'svn find-rev r%d',
$match[1]);
} else {
list($stdout) = $this->execxLocal(
'show -s --format=%C %s',
'%H',
$string);
}
return rtrim($stdout); return rtrim($stdout);
} }
@ -682,7 +691,9 @@ final class ArcanistGitAPI extends ArcanistRepositoryAPI {
public function hasLocalCommit($commit) { public function hasLocalCommit($commit) {
try { try {
$this->getCanonicalRevisionName($commit); if (!$this->getCanonicalRevisionName($commit)) {
return false;
}
} catch (CommandException $exception) { } catch (CommandException $exception) {
return false; return false;
} }