split: add a option to discard remaining change during split
authorPierre-Yves David <pierre-yves.david@octobus.net>
Tue, 20 Feb 2018 09:35:16 +0100
changeset 4293 d4902d48d095
parent 4292 caaa89adf3eb
child 4294 8974a05a49fa
split: add a option to discard remaining change during split This is useful to drop unwanted remaining change spotted during the split.
hgext3rd/evolve/cmdrewrite.py
tests/test-evolve-obshistory-complex.t
tests/test-evolve-obshistory-lots-of-splits.t
tests/test-evolve-obshistory-split.t
tests/test-evolve-orphan-split.t
tests/test-evolve-templates.t
tests/test-prev-next.t
tests/test-rewind.t
tests/test-split.t
tests/test-topic-stack-complex.t
tests/test-topic-stack.t
--- a/hgext3rd/evolve/cmdrewrite.py	Tue Feb 20 09:35:16 2018 +0100
+++ b/hgext3rd/evolve/cmdrewrite.py	Tue Feb 20 09:35:16 2018 +0100
@@ -1205,17 +1205,27 @@
             if haschanges():
                 nextaction = None
                 while nextaction is None:
-                    nextaction = ui.prompt('Done splitting? [yNq?]', default='n')
+                    nextaction = ui.prompt('Done splitting? [yNdq?]', default='n')
                     if nextaction == 'y':
                         commands.commit(ui, repo, **opts)
                         newcommits.append(repo['.'])
                         break
                     elif nextaction == 'q':
                         raise error.Abort(_('user quit'))
+                    elif nextaction == 'd':
+                        # TODO: We should offer a way for the user to confirm
+                        # what is the remaining changes, either via a separate
+                        # diff action or by showing the remaining and
+                        # prompting for confirmation
+                        ui.status(_('discarding remaining changes\n'))
+                        target = newcommits[0]
+                        cmdutil.revert(ui, repo, repo[target],
+                                       (target, node.nullid), all=True)
                     elif nextaction == '?':
                         nextaction = None
                         ui.write(_("y - yes, commit all remaining changes\n"))
                         ui.write(_("n - no, continue selection\n"))
+                        ui.write(_("d - discard, discard remaining changes\n"))
                         ui.write(_("q - quit, abort the split\n"))
                         ui.write(_("? - ?, display help\n"))
                 else:
--- a/tests/test-evolve-obshistory-complex.t	Tue Feb 20 09:35:16 2018 +0100
+++ b/tests/test-evolve-obshistory-complex.t	Tue Feb 20 09:35:16 2018 +0100
@@ -164,7 +164,7 @@
   examine changes to 'B'? [Ynesfdaq?] N
   
   created new head
-  Done splitting? [yNq?] N
+  Done splitting? [yNdq?] N
   diff --git a/B b/B
   new file mode 100644
   examine changes to 'B'? [Ynesfdaq?] Y
@@ -198,7 +198,7 @@
   examine changes to 'D'? [Ynesfdaq?] N
   
   created new head
-  Done splitting? [yNq?] N
+  Done splitting? [yNdq?] N
   diff --git a/D b/D
   new file mode 100644
   examine changes to 'D'? [Ynesfdaq?] Y
@@ -233,7 +233,7 @@
   examine changes to 'F'? [Ynesfdaq?] N
   
   created new head
-  Done splitting? [yNq?] N
+  Done splitting? [yNdq?] N
   diff --git a/F b/F
   new file mode 100644
   examine changes to 'F'? [Ynesfdaq?] Y
--- a/tests/test-evolve-obshistory-lots-of-splits.t	Tue Feb 20 09:35:16 2018 +0100
+++ b/tests/test-evolve-obshistory-lots-of-splits.t	Tue Feb 20 09:35:16 2018 +0100
@@ -82,7 +82,7 @@
   examine changes to 'd'? [Ynesfdaq?] n
   
   created new head
-  Done splitting? [yNq?] n
+  Done splitting? [yNdq?] n
   diff --git a/b b/b
   new file mode 100644
   examine changes to 'b'? [Ynesfdaq?] y
@@ -99,7 +99,7 @@
   new file mode 100644
   examine changes to 'd'? [Ynesfdaq?] n
   
-  Done splitting? [yNq?] n
+  Done splitting? [yNdq?] n
   diff --git a/c b/c
   new file mode 100644
   examine changes to 'c'? [Ynesfdaq?] y
@@ -112,7 +112,7 @@
   new file mode 100644
   examine changes to 'd'? [Ynesfdaq?] n
   
-  Done splitting? [yNq?] n
+  Done splitting? [yNdq?] n
   diff --git a/d b/d
   new file mode 100644
   examine changes to 'd'? [Ynesfdaq?] y
--- a/tests/test-evolve-obshistory-split.t	Tue Feb 20 09:35:16 2018 +0100
+++ b/tests/test-evolve-obshistory-split.t	Tue Feb 20 09:35:16 2018 +0100
@@ -58,7 +58,7 @@
   examine changes to 'b'? [Ynesfdaq?] n
   
   created new head
-  Done splitting? [yNq?] n
+  Done splitting? [yNdq?] n
   diff --git a/b b/b
   new file mode 100644
   examine changes to 'b'? [Ynesfdaq?] y
--- a/tests/test-evolve-orphan-split.t	Tue Feb 20 09:35:16 2018 +0100
+++ b/tests/test-evolve-orphan-split.t	Tue Feb 20 09:35:16 2018 +0100
@@ -59,7 +59,7 @@
   examine changes to 'b'? [Ynesfdaq?] n
   
   created new head
-  Done splitting? [yNq?] y
+  Done splitting? [yNdq?] y
   1 new orphan changesets
 
   $ hg glog
@@ -152,7 +152,7 @@
   record change 3/3 to 'c'? [Ynesfdaq?] y
   
   created new head
-  Done splitting? [yNq?] y
+  Done splitting? [yNdq?] y
   1 new orphan changesets
 
   $ hg glog
--- a/tests/test-evolve-templates.t	Tue Feb 20 09:35:16 2018 +0100
+++ b/tests/test-evolve-templates.t	Tue Feb 20 09:35:16 2018 +0100
@@ -292,7 +292,7 @@
   examine changes to 'b'? [Ynesfdaq?] n
   
   created new head
-  Done splitting? [yNq?] n
+  Done splitting? [yNdq?] n
   diff --git a/b b/b
   new file mode 100644
   examine changes to 'b'? [Ynesfdaq?] y
--- a/tests/test-prev-next.t	Tue Feb 20 09:35:16 2018 +0100
+++ b/tests/test-prev-next.t	Tue Feb 20 09:35:16 2018 +0100
@@ -534,7 +534,7 @@
   examine changes to 'b'? [Ynesfdaq?] n
   
   created new head
-  Done splitting? [yNq?] N
+  Done splitting? [yNdq?] N
   diff --git a/b b/b
   new file mode 100644
   examine changes to 'b'? [Ynesfdaq?] y
--- a/tests/test-rewind.t	Tue Feb 20 09:35:16 2018 +0100
+++ b/tests/test-rewind.t	Tue Feb 20 09:35:16 2018 +0100
@@ -478,7 +478,7 @@
   examine changes to 'D'? [Ynesfdaq?] d
   
   created new head
-  Done splitting? [yNq?] y
+  Done splitting? [yNdq?] y
   $ hg log -G
   @  changeset:   5:9576e80d6851
   |  tag:         tip
--- a/tests/test-split.t	Tue Feb 20 09:35:16 2018 +0100
+++ b/tests/test-split.t	Tue Feb 20 09:35:16 2018 +0100
@@ -79,7 +79,7 @@
   record change 2/2 to '_d'? [Ynesfdaq?] n
   
   created new head
-  Done splitting? [yNq?] N
+  Done splitting? [yNdq?] N
   diff --git a/_d b/_d
   new file mode 100644
   examine changes to '_d'? [Ynesfdaq?] y
@@ -201,7 +201,7 @@
   record change 2/2 to '_c'? [Ynesfdaq?] n
   
   created new head
-  Done splitting? [yNq?] y
+  Done splitting? [yNdq?] y
   2 new orphan changesets
 
 Stop before splitting the commit completely creates a commit with all the
@@ -302,7 +302,7 @@
   examine changes to '_d'? [Ynesfdaq?] n
   
   created new head
-  Done splitting? [yNq?] y
+  Done splitting? [yNdq?] y
   $ hg log -G -r "3f134f739075::"
   @  changeset:   16:452a26648478
   |  bookmark:    bookA
@@ -454,7 +454,7 @@
   new file mode 100644
   examine changes to 'celeste'? [Ynesfdaq?] N
   
-  Done splitting? [yNq?] Y
+  Done splitting? [yNdq?] Y
   diff --git a/celeste b/celeste
   new file mode 100644
   examine changes to 'celeste'? [Ynesfdaq?] Y
@@ -551,7 +551,7 @@
   new file mode 100644
   examine changes to 'SPLIT2'? [Ynesfdaq?] N
   
-  Done splitting? [yNq?] N
+  Done splitting? [yNdq?] N
   diff --git a/SPLIT2 b/SPLIT2
   new file mode 100644
   examine changes to 'SPLIT2'? [Ynesfdaq?] Y
@@ -687,13 +687,91 @@
   ? - ? (display help)
   examine changes to 'SPLIT4'? [Ynesfdaq?] d
   
-  Done splitting? [yNq?] ?
+  Done splitting? [yNdq?] ?
   y - yes, commit all remaining changes
   n - no, continue selection
+  d - discard, discard remaining changes
   q - quit, abort the split
   ? - ?, display help
-  Done splitting? [yNq?] q
+  Done splitting? [yNdq?] q
   transaction abort!
   rollback completed
   abort: user quit
   [255]
+
+discard some of changeset during split
+
+  $ cat >> $HGRCPATH <<EOF
+  > [experimental]
+  > evolution=all
+  > evolutioncommands=
+  > EOF
+
+  $ hg export
+  # HG changeset patch
+  # User test
+  # Date 0 0
+  #      Thu Jan 01 00:00:00 1970 +0000
+  # Branch another-branch
+  # Node ID 56a59faa8af70dc104faa905231731ffece5f18a
+  # Parent  75695e3e2300d316cc515c4c25bab8b825ef1433
+  # EXP-Topic mytopic
+  split10
+  
+  diff --git a/SPLIT2 b/SPLIT2
+  new file mode 100644
+  $ hg add SPLIT3
+  $ hg amend
+  1 new orphan changesets
+  $ hg export
+  # HG changeset patch
+  # User test
+  # Date 0 0
+  #      Thu Jan 01 00:00:00 1970 +0000
+  # Branch another-branch
+  # Node ID 3acb634dc68ddb4dea75a9cee982955bc1f3e8cd
+  # Parent  75695e3e2300d316cc515c4c25bab8b825ef1433
+  # EXP-Topic mytopic
+  split10
+  
+  diff --git a/SPLIT2 b/SPLIT2
+  new file mode 100644
+  diff --git a/SPLIT3 b/SPLIT3
+  new file mode 100644
+  $ hg split << EOF
+  > Y
+  > d
+  > d
+  > EOF
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  adding SPLIT2
+  adding SPLIT3
+  diff --git a/SPLIT2 b/SPLIT2
+  new file mode 100644
+  examine changes to 'SPLIT2'? [Ynesfdaq?] Y
+  
+  diff --git a/SPLIT3 b/SPLIT3
+  new file mode 100644
+  examine changes to 'SPLIT3'? [Ynesfdaq?] d
+  
+  Done splitting? [yNdq?] d
+  discarding remaining changes
+  forgetting SPLIT3
+  $ hg export
+  # HG changeset patch
+  # User test
+  # Date 0 0
+  #      Thu Jan 01 00:00:00 1970 +0000
+  # Branch another-branch
+  # Node ID db690d5566962489d65945c90b468b44e0b1507a
+  # Parent  75695e3e2300d316cc515c4c25bab8b825ef1433
+  # EXP-Topic mytopic
+  split12
+  
+  diff --git a/SPLIT2 b/SPLIT2
+  new file mode 100644
+  $ hg status
+  ? SPLIT3
+  ? SPLIT4
+  ? editor.sh
+  ? num
--- a/tests/test-topic-stack-complex.t	Tue Feb 20 09:35:16 2018 +0100
+++ b/tests/test-topic-stack-complex.t	Tue Feb 20 09:35:16 2018 +0100
@@ -80,7 +80,7 @@
   new file mode 100644
   examine changes to 'd'? [Ynesfdaq?] n
   
-  Done splitting? [yNq?] y
+  Done splitting? [yNdq?] y
   1 new orphan changesets
 
   $ hg stack
--- a/tests/test-topic-stack.t	Tue Feb 20 09:35:16 2018 +0100
+++ b/tests/test-topic-stack.t	Tue Feb 20 09:35:16 2018 +0100
@@ -911,7 +911,7 @@
   new file mode 100644
   examine changes to 'ggg'? [Ynesfdaq?] n
   
-  Done splitting? [yNq?] y
+  Done splitting? [yNdq?] y
 
   $ hg --config extensions.evolve= obslog --all
   o  dde94df880e9 (21) c_G