split: avoid strip if split is a no-op (identical to original)
Differential Revision: https://phab.mercurial-scm.org/D10389
--- a/hgext/split.py Mon Apr 12 17:52:46 2021 -0700
+++ b/hgext/split.py Mon Apr 12 19:25:34 2021 -0700
@@ -182,12 +182,15 @@
if not committed:
raise error.InputError(_(b'cannot split an empty revision'))
- scmutil.cleanupnodes(
- repo,
- {ctx.node(): [c.node() for c in committed]},
- operation=b'split',
- fixphase=True,
- )
+ if len(committed) != 1 or committed[0].node() != ctx.node():
+ # Ensure we don't strip a node if we produce the same commit as already
+ # exists
+ scmutil.cleanupnodes(
+ repo,
+ {ctx.node(): [c.node() for c in committed]},
+ operation=b'split',
+ fixphase=True,
+ )
return committed[-1]
--- a/tests/test-split.t Mon Apr 12 17:52:46 2021 -0700
+++ b/tests/test-split.t Mon Apr 12 19:25:34 2021 -0700
@@ -1086,16 +1086,9 @@
HG: branch 'default'
HG: added foo
warning: commit already existed in the repository!
- saved backup bundle to $TESTTMP/noop/.hg/strip-backup/ae694b2901bb-28e0b457-split.hg (obsstore-off !)
- transaction abort! (obsstore-on !)
- rollback completed (obsstore-on !)
- abort: changeset ae694b2901bb cannot obsolete itself (obsstore-on !)
-FIXME: this should not have stripped the commit we just no-op split
-(obsstore-off only)
$ hg log -G -T'{phase} {rev}:{node|short} {desc}'
- warning: ignoring unknown working parent ae694b2901bb! (obsstore-off !)
- @ draft 1:ae694b2901bb foo (obsstore-on !)
- | (obsstore-on !)
+ @ draft 1:ae694b2901bb foo
+ |
o public 0:222799e2f90b r0