# HG changeset patch # User Pierre-Yves David # Date 1519115716 -3600 # Node ID d4902d48d095283daf1484d8cd8a8dee5109176c # Parent caaa89adf3ebd2a9b9b4981f624393b2b8bf9531 split: add a option to discard remaining change during split This is useful to drop unwanted remaining change spotted during the split. diff -r caaa89adf3eb -r d4902d48d095 hgext3rd/evolve/cmdrewrite.py --- 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: diff -r caaa89adf3eb -r d4902d48d095 tests/test-evolve-obshistory-complex.t --- 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 diff -r caaa89adf3eb -r d4902d48d095 tests/test-evolve-obshistory-lots-of-splits.t --- 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 diff -r caaa89adf3eb -r d4902d48d095 tests/test-evolve-obshistory-split.t --- 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 diff -r caaa89adf3eb -r d4902d48d095 tests/test-evolve-orphan-split.t --- 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 diff -r caaa89adf3eb -r d4902d48d095 tests/test-evolve-templates.t --- 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 diff -r caaa89adf3eb -r d4902d48d095 tests/test-prev-next.t --- 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 diff -r caaa89adf3eb -r d4902d48d095 tests/test-rewind.t --- 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 diff -r caaa89adf3eb -r d4902d48d095 tests/test-split.t --- 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 < [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 diff -r caaa89adf3eb -r d4902d48d095 tests/test-topic-stack-complex.t --- 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 diff -r caaa89adf3eb -r d4902d48d095 tests/test-topic-stack.t --- 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