mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-25 16:22:42 +01:00
If the base commit for arc patch
does not exist locally, try to fetch it
Summary: If the commit does not exist locally, aborting still leaves the user checked out on the branch. In nearly all cases, all that is necessary is a fetch -- but the branch must also be cleaned up. This leads to the pattern of: ``` arc patch D12345 [...base commit does not exist...] ^C git checkout master git branch -D arcpatch-D12345 git fetch arc patch D12345 ``` Solve this common problem by simply trying to fetch once if the commit does not exist locally. Test Plan: Ran `arc patch` on a recent diff. Reviewers: #blessed_reviewers, epriestley Reviewed By: #blessed_reviewers, epriestley Subscribers: epriestley Differential Revision: https://secure.phabricator.com/D17949
This commit is contained in:
parent
3c4735795a
commit
129d51fa09
1 changed files with 12 additions and 0 deletions
|
@ -430,6 +430,18 @@ EOTEXT
|
|||
$repository_api = $this->getRepositoryAPI();
|
||||
$has_base_revision = $repository_api->hasLocalCommit(
|
||||
$bundle->getBaseRevision());
|
||||
if (!$has_base_revision) {
|
||||
if ($repository_api instanceof ArcanistGitAPI) {
|
||||
echo phutil_console_format(
|
||||
"<bg:blue>** %s **</bg> %s\n",
|
||||
pht('INFO'),
|
||||
pht('Base commit is not in local repository; trying to fetch.'));
|
||||
$repository_api->execManualLocal('fetch --quiet --all');
|
||||
$has_base_revision = $repository_api->hasLocalCommit(
|
||||
$bundle->getBaseRevision());
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->canBranch() &&
|
||||
($this->shouldBranch() ||
|
||||
($this->shouldCommit() && $has_base_revision))) {
|
||||
|
|
Loading…
Reference in a new issue