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

Fix "arc diff" under Mercurial with a dirty working copy

Summary:
In D962, I switched us from using "hg summary" to "hg id" to find the working
copy revision. However, "hg id" reports the revision with a trailing "+" if the
working copy is dirty, so we fail before hitting the explicit check for this
later.

Trim off the trailing '+' if it is present.

Test Plan:
Ran "arc diff" in a dirty Mercurial working copy and got a good error message
about uncommitted changes.

  ~/repos/hg-working-copy $ arc diff
  WARNING: Mercurial support is largely imaginary right now.
  Usage Exception: You have uncommitted changes in this branch. Commit (or
revert) them before proceeding.

    Working copy: /INSECURE/repos/hg-working-copy/

    Uncommitted changes in working copy
      hello.c

Reviewers: Makinde, jungejason, nh, tuomaspelkonen, aran

Reviewed By: Makinde

CC: aran, Makinde

Differential Revision: 1070
This commit is contained in:
epriestley 2011-11-01 15:07:39 -07:00
parent c0007ffd44
commit f1874ddf33

View file

@ -283,7 +283,12 @@ class ArcanistMercurialAPI extends ArcanistRepositoryAPI {
list($stdout) = execx( list($stdout) = execx(
'(cd %s && hg --debug id --id)', '(cd %s && hg --debug id --id)',
$this->getPath()); $this->getPath());
return trim($stdout);
// Even with "--id", "hg id" will print a trailing "+" after the hash
// if the working copy is dirty (has uncommitted changes). We'll explicitly
// detect this later by calling getWorkingCopyStatus(); ignore it for now.
$stdout = trim($stdout);
return rtrim($stdout, '+');
} }
public function supportsRelativeLocalCommits() { public function supportsRelativeLocalCommits() {