mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-26 00:32:41 +01:00
tighten remote URI error handling with idiosyncratic remote names
Summary: `git ls-remote` has an unusual way to indicate a URL was not found: echoing back user input ``` $ git ls-remote --get-url does_not_exist does_not_exist $ echo $? 0 ``` `getRemoteURI` handles checking for remotes other than 'origin', but the error handling always matched against the string 'origin' regardless of remote name. Test Plan: With a git config along the lines of: ``` [remote "my_special_name"] url = ssh://secure@secure.phabricator.com/diffusion/ARC/arcanist.git fetch = +refs/heads/*:refs/remotes/my_special_name/* [branch "master"] remote = github merge = refs/heads/master [remote "github"] # url = git@github.com:phacility/arcanist.git fetch = +refs/heads/*:refs/remotes/github/* ``` and running in a branch tracking `master` (github). `arc which` would (without this diff) show: ``` The remote URI for this working copy is "github". ``` With this diff, `arc which` correctly shows: ``` Unable to determine the remote URI for this repository. ``` When diffing against a tracking branch with a propertly configured remote (the happy path), `arc which` still correctly identifies the remote URI: ``` The remote URI for this working copy is "ssh://secure@secure.phabricator.com/diffusion/ARC/arcanist.git". ``` Reviewers: #blessed_reviewers, epriestley Reviewed By: #blessed_reviewers, epriestley Subscribers: Korvin, chad, epriestley Differential Revision: https://secure.phabricator.com/D17110
This commit is contained in:
parent
fad8584431
commit
c243cbbd9f
1 changed files with 4 additions and 2 deletions
|
@ -544,8 +544,10 @@ final class ArcanistGitAPI extends ArcanistRepositoryAPI {
|
||||||
}
|
}
|
||||||
|
|
||||||
$uri = rtrim($stdout);
|
$uri = rtrim($stdout);
|
||||||
// 'origin' is what ls-remote outputs if no origin remote URI exists
|
// ls-remote echos the remote name (ie 'origin') if no remote URI is found
|
||||||
if (!$uri || $uri === 'origin') {
|
// TODO: In 2.7.0 (circa 2016) git introduced `git remote get-url`
|
||||||
|
// with saner error handling.
|
||||||
|
if (!$uri || $uri === $remote) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue