diff tests/test-commit-unresolved.t @ 35704:41ef02ba329b

merge: add `--abort` flag which can abort the merge Currently we don't have a good functionality to abort the merge and tell user to do `hg update -C .` which can leads to different results if user missed the '.' and moreover does not align with other abort functionalities like rebase, shelve etc. This patch adds `hg merge --abort` which will abort the ongoing merge and take us back to the chagneset where we started from. Works in both cases when merge resulted in conflicts and when there were no conflicts. .. feature:: A `--abort` flag to merge command to abort the ongoing merge. Differential Revision: https://phab.mercurial-scm.org/D1829
author Pulkit Goyal <7895pulkit@gmail.com>
date Mon, 08 Jan 2018 19:41:47 +0530
parents c15f06109b7a
children 3bc400ccbf99
line wrap: on
line diff
--- a/tests/test-commit-unresolved.t	Thu Jan 04 21:37:03 2018 -0800
+++ b/tests/test-commit-unresolved.t	Mon Jan 08 19:41:47 2018 +0530
@@ -21,13 +21,63 @@
   $ commit "D" 3
   created new head
 
+State before the merge
+
+  $ hg status
+  $ hg id
+  e45016d2b3d3 tip
+  $ hg summary
+  parent: 3:e45016d2b3d3 tip
+   D
+  branch: default
+  commit: (clean)
+  update: 2 new changesets, 2 branch heads (merge)
+  phases: 4 draft
+
+Testing the abort functionality first in case of conflicts
+
+  $ hg merge --abort
+  abort: no merge in progress
+  [255]
+  $ hg merge
+  merging A
+  warning: conflicts while merging A! (edit, then use 'hg resolve --mark')
+  1 files updated, 0 files merged, 0 files removed, 1 files unresolved
+  use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
+  [1]
+
+  $ hg merge --abort e4501
+  abort: cannot specify a node with --abort
+  [255]
+  $ hg merge --abort --rev e4501
+  abort: cannot specify both --rev and --abort
+  [255]
+
+  $ hg merge --abort
+  aborting the merge, updating back to e45016d2b3d3
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+
+Checking that we got back in the same state
+
+  $ hg status
+  ? A.orig
+  $ hg id
+  e45016d2b3d3 tip
+  $ hg summary
+  parent: 3:e45016d2b3d3 tip
+   D
+  branch: default
+  commit: 1 unknown (clean)
+  update: 2 new changesets, 2 branch heads (merge)
+  phases: 4 draft
+
 Merging a conflict araises
 
   $ hg merge
   merging A
   warning: conflicts while merging A! (edit, then use 'hg resolve --mark')
   1 files updated, 0 files merged, 0 files removed, 1 files unresolved
-  use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
+  use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
   [1]
 
 Correct the conflict without marking the file as resolved
@@ -52,7 +102,7 @@
   merging A
   warning: conflicts while merging A! (edit, then use 'hg resolve --mark')
   1 files updated, 0 files merged, 0 files removed, 1 files unresolved
-  use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
+  use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
   [1]
   $ hg rm --force A
   $ hg commit -m merged
@@ -64,4 +114,28 @@
   $ hg commit -m merged
   created new head
 
+Testing the abort functionality in case of no conflicts
+
+  $ hg update -C 0
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ addcommit "E" 4
+  created new head
+  $ hg id
+  68352a18a7c4 tip
+
+  $ hg merge -r 4
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+
+  $ hg merge --preview --abort
+  abort: cannot specify --preview with --abort
+  [255]
+
+  $ hg merge --abort
+  aborting the merge, updating back to 68352a18a7c4
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+
+  $ hg id
+  68352a18a7c4 tip
+
   $ cd ..