# HG changeset patch # User Kyle Lippincott # Date 1618280734 25200 # Node ID ca0049946e9a36ccc4e3e399e0abd577337d9492 # Parent 8ee1ac083ee743c9416af8666f5124c62147ceaa split: avoid strip if split is a no-op (identical to original) Differential Revision: https://phab.mercurial-scm.org/D10389 diff -r 8ee1ac083ee7 -r ca0049946e9a hgext/split.py --- 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] diff -r 8ee1ac083ee7 -r ca0049946e9a tests/test-split.t --- 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