diff --git a/tests/test-split.t b/tests/test-split.t --- a/tests/test-split.t +++ b/tests/test-split.t @@ -1046,3 +1046,117 @@ [ ui.warning|rollback completed] [ ui.error|abort: empty commit message] [10] + +Test that creating an empty split or "no-op" +(identical to original) commit doesn't cause chaos +-------------------------------------------------- + + $ hg init $TESTTMP/noop + $ cd $TESTTMP/noop + $ echo r0 > r0 + $ hg ci -qAm r0 + $ hg phase -p + $ echo foo > foo + $ hg ci -qAm foo + $ hg log -G -T'{phase} {rev}:{node|short} {desc}' + @ draft 1:ae694b2901bb foo + | + o public 0:222799e2f90b r0 + +FIXME: This should not show "So far it has been split into" + $ printf 'd\na\n' | HGEDITOR=cat hg split || true + diff --git a/foo b/foo + new file mode 100644 + examine changes to 'foo'? + (enter ? for help) [Ynesfdaq?] d + + no changes to record + diff --git a/foo b/foo + new file mode 100644 + examine changes to 'foo'? + (enter ? for help) [Ynesfdaq?] a + + HG: Splitting ae694b2901bb. So far it has been split into: + HG: - 0:222799e2f90b "r0" + HG: Write commit message for the next split changeset. + foo + + + HG: Enter commit message. Lines beginning with 'HG:' are removed. + HG: Leave message empty to abort commit. + HG: -- + HG: user: test + 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), or made r0 draft. + $ 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 !) + o public 0:222799e2f90b r0 (obsstore-on !) + o draft 0:222799e2f90b r0 (obsstore-off !) + + +Now try the same thing but modifying the message so we don't trigger the +identical changeset failures + + $ hg init $TESTTMP/noop2 + $ cd $TESTTMP/noop2 + $ echo r0 > r0 + $ hg ci -qAm r0 + $ hg phase -p + $ echo foo > foo + $ hg ci -qAm foo + $ hg log -G -T'{phase} {rev}:{node|short} {desc}' + @ draft 1:ae694b2901bb foo + | + o public 0:222799e2f90b r0 + + $ cat > $TESTTMP/messages < message1 + > EOF +FIXME: This should not show "So far it has been split into" + $ printf 'd\na\n' | HGEDITOR="\"$PYTHON\" $TESTTMP/editor.py" hg split + diff --git a/foo b/foo + new file mode 100644 + examine changes to 'foo'? + (enter ? for help) [Ynesfdaq?] d + + no changes to record + diff --git a/foo b/foo + new file mode 100644 + examine changes to 'foo'? + (enter ? for help) [Ynesfdaq?] a + + EDITOR: HG: Splitting ae694b2901bb. So far it has been split into: + EDITOR: HG: - 0:222799e2f90b "r0" + EDITOR: HG: Write commit message for the next split changeset. + EDITOR: foo + EDITOR: + EDITOR: + EDITOR: HG: Enter commit message. Lines beginning with 'HG:' are removed. + EDITOR: HG: Leave message empty to abort commit. + EDITOR: HG: -- + EDITOR: HG: user: test + EDITOR: HG: branch 'default' + EDITOR: HG: added foo + created new head + saved backup bundle to $TESTTMP/noop2/.hg/strip-backup/ae694b2901bb-28e0b457-split.hg (obsstore-off !) +FIXME: this should not have made r0 draft + $ hg log -G -T'{phase} {rev}:{node|short} {desc}' + @ draft 1:de675559d3f9 message1 (obsstore-off !) + @ draft 2:de675559d3f9 message1 (obsstore-on !) + | + o draft 0:222799e2f90b r0 + +#if obsstore-on +FIXME: this should not have marked 222799e (r0) as a precursor of anything. + $ hg debugobsolete + ae694b2901bb8b0f8c4b5e075ddec0d63468d57a 222799e2f90be09ccbe49f519c4615d8375a9242 de675559d3f93ffc822c6eb7490e5c73033f17c7 0 * (glob) +#endif