mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-12-23 14:00:55 +01:00
Fix a check when deciding to destroy the local branch after "arc land"
Summary: Fixes T9660. The behavior for this check wasn't quite right -- we want to check the "source ref" (what we're landing) against the "target onto" (the branch we're landing it onto). Test Plan: - Landed from `master` (tracking origin/master). No delete. - Landed from `feature1` (tracking local/master). Delete. - Landed from `feature2` (tracking origin/master). Delete. Reviewers: chad Reviewed By: chad Maniphest Tasks: T9660 Differential Revision: https://secure.phabricator.com/D14358
This commit is contained in:
parent
aa5c023fe8
commit
411a4f4a39
1 changed files with 9 additions and 5 deletions
|
@ -36,6 +36,9 @@ final class ArcanistGitLandEngine
|
||||||
$this->pushChange();
|
$this->pushChange();
|
||||||
$this->reconcileLocalState();
|
$this->reconcileLocalState();
|
||||||
|
|
||||||
|
$api = $this->getRepositoryAPI();
|
||||||
|
$api->execxLocal('submodule update --init --recursive');
|
||||||
|
|
||||||
if ($this->getShouldKeep()) {
|
if ($this->getShouldKeep()) {
|
||||||
echo tsprintf(
|
echo tsprintf(
|
||||||
"%s\n",
|
"%s\n",
|
||||||
|
@ -269,7 +272,6 @@ final class ArcanistGitLandEngine
|
||||||
|
|
||||||
$api->execxLocal('checkout %s --', $this->getTargetOnto());
|
$api->execxLocal('checkout %s --', $this->getTargetOnto());
|
||||||
$api->execxLocal('pull --');
|
$api->execxLocal('pull --');
|
||||||
$api->execxLocal('submodule update --init --recursive');
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -284,7 +286,6 @@ final class ArcanistGitLandEngine
|
||||||
$this->getTargetFullRef()));
|
$this->getTargetFullRef()));
|
||||||
|
|
||||||
$api->execxLocal('checkout %s --', $this->getTargetOnto());
|
$api->execxLocal('checkout %s --', $this->getTargetOnto());
|
||||||
$api->execxLocal('submodule update --init --recursive');
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -303,17 +304,20 @@ final class ArcanistGitLandEngine
|
||||||
|
|
||||||
$api->execxLocal('checkout %s --', $this->getTargetOnto());
|
$api->execxLocal('checkout %s --', $this->getTargetOnto());
|
||||||
$api->execxLocal('reset --hard %s --', $this->getTargetFullRef());
|
$api->execxLocal('reset --hard %s --', $this->getTargetFullRef());
|
||||||
$api->execxLocal('submodule update --init --recursive');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function destroyLocalBranch() {
|
private function destroyLocalBranch() {
|
||||||
$api = $this->getRepositoryAPI();
|
$api = $this->getRepositoryAPI();
|
||||||
|
|
||||||
if ($this->localRef == $this->getSourceRef()) {
|
if ($this->getSourceRef() == $this->getTargetOnto()) {
|
||||||
// If we landed a branch onto itself, don't destroy it.
|
// If we landed a branch into a branch with the same name, so don't
|
||||||
|
// destroy it. This prevents us from cleaning up "master" if you're
|
||||||
|
// landing master into itself.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Maybe this should also recover the proper upstream?
|
||||||
|
|
||||||
$recovery_command = csprintf(
|
$recovery_command = csprintf(
|
||||||
'git checkout -b %R %R',
|
'git checkout -b %R %R',
|
||||||
$this->getSourceRef(),
|
$this->getSourceRef(),
|
||||||
|
|
Loading…
Reference in a new issue