mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-12-23 14:00:55 +01:00
Avoid parsing git "remote show" using "ls-remote"
Summary: Ref T5554. This makes git remote URL detection locale-agnostic. The previously suggested `git config remote.origin.url` command does almost the same, but does not support the URL rewriting features in git-config (`url.<base>.insteadOf`). This one does, although it has the unintuitive behavior of just printing the passed remote name when the remote does not exist, or even when called outside a git repo. Test Plan: * Switched to non-english locale in which git has a translation. * Ran `arc which` on the Arcanist repo. It could not determine the remote URI. * Applied patch, `arc which` found the URI. Reviewers: #blessed_reviewers, epriestley Reviewed By: #blessed_reviewers, epriestley Subscribers: johnny-bit, Korvin Maniphest Tasks: T5554 Differential Revision: https://secure.phabricator.com/D13983
This commit is contained in:
parent
9b8c9d280e
commit
6ecb3fb87d
1 changed files with 5 additions and 5 deletions
|
@ -501,14 +501,14 @@ final class ArcanistGitAPI extends ArcanistRepositoryAPI {
|
|||
}
|
||||
|
||||
public function getRemoteURI() {
|
||||
list($stdout) = $this->execxLocal('remote show -n origin');
|
||||
list($stdout) = $this->execxLocal('ls-remote --get-url origin');
|
||||
|
||||
$matches = null;
|
||||
if (preg_match('/^\s*Fetch URL: (.*)$/m', $stdout, $matches)) {
|
||||
return trim($matches[1]);
|
||||
$uri = rtrim($stdout);
|
||||
if ($uri === 'origin') {
|
||||
return null;
|
||||
}
|
||||
|
||||
return null;
|
||||
return $uri;
|
||||
}
|
||||
|
||||
public function getSourceControlPath() {
|
||||
|
|
Loading…
Reference in a new issue