From 9a373c88d74793a21857b07735059212d5ad7bba Mon Sep 17 00:00:00 2001 From: epriestley Date: Sun, 13 Dec 2015 03:08:06 -0800 Subject: [PATCH] Explain how to move forward or backward from `arc land --hold` Summary: Fixes T9973. When users run `arc land --hold`, give them the commands to move forward (push) or backward (checkout the branch/tag/commit they were on) and be explicit that branches have not changed. Test Plan: Ran `arc land --hold`, got lots of explanatory text. Reviewers: chad Reviewed By: chad Maniphest Tasks: T9973 Differential Revision: https://secure.phabricator.com/D14762 --- src/land/ArcanistGitLandEngine.php | 41 +++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/src/land/ArcanistGitLandEngine.php b/src/land/ArcanistGitLandEngine.php index 7256b050..068124d0 100644 --- a/src/land/ArcanistGitLandEngine.php +++ b/src/land/ArcanistGitLandEngine.php @@ -29,9 +29,7 @@ final class ArcanistGitLandEngine $this->updateWorkingCopy(); if ($this->getShouldHold()) { - $this->writeInfo( - pht('HOLD'), - pht('Holding change locally, it has not been pushed.')); + $this->didHoldChanges(); } else { $this->pushChange(); $this->reconcileLocalState(); @@ -542,4 +540,41 @@ final class ArcanistGitLandEngine ); } + private function didHoldChanges() { + $this->writeInfo( + pht('HOLD'), + pht( + 'Holding change locally, it has not been pushed.')); + + $push_command = csprintf( + '$ git push -- %R %R:%R', + $this->getTargetRemote(), + $this->mergedRef, + $this->getTargetOnto()); + + $restore_command = csprintf( + '$ git checkout %R --', + $this->localRef); + + echo tsprintf( + "\n%s\n\n". + "%s\n\n". + " %s\n\n". + "%s\n\n". + " %s\n\n". + "%s\n", + pht( + 'This local working copy now contains the merged changes in a '. + 'detached state.'), + pht('You can push the changes manually with this command:'), + $push_command, + pht( + 'You can go back to how things were before you ran `arc land` with '. + 'this command:'), + $restore_command, + pht( + 'Local branches have not been changed, and are still in exactly the '. + 'same state as before.')); + } + }