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.')); + } + }