Mercurial > hg-stable
changeset 46924:ca0049946e9a
split: avoid strip if split is a no-op (identical to original)
Differential Revision: https://phab.mercurial-scm.org/D10389
author | Kyle Lippincott <spectral@google.com> |
---|---|
date | Mon, 12 Apr 2021 19:25:34 -0700 |
parents | 8ee1ac083ee7 |
children | b5e8bf10436e |
files | hgext/split.py tests/test-split.t |
diffstat | 2 files changed, 11 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- 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