# HG changeset patch # User Raphaël Gomès # Date 2023-04-11 15:06:08 # Node ID b469c5ceaa850f0d7dc6c68f7b98875aa5b2ce56 # Parent 81c7d04f47222f81cdc7354ae858ab74ddcd79c6 rebase: add a test showing that --dry-run wipes working copy changes Eating people's data on --dry-run seems like a bad idea. diff --git a/tests/test-rebase-dry-run.t b/tests/test-rebase-dry-run.t new file mode 100644 --- /dev/null +++ b/tests/test-rebase-dry-run.t @@ -0,0 +1,99 @@ +====================== +rebase --dry-run tests +====================== + +Test behavior associated with `hg rebase --dry-run` + +Setup +===== + + $ hg init r1 + $ cd r1 + $ echo one > f01.txt + $ echo two > f02.txt + $ echo three > f03.txt + $ hg add + adding f01.txt + adding f02.txt + adding f03.txt + $ hg ci -m 'ci-1' f01.txt f02.txt f03.txt + $ hg book base; hg book -i + $ echo add-to-one >> f01.txt + $ hg ci -m 'br-1' f01.txt + $ hg book branch-1; hg book -i + $ hg up base; hg book -i + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (activating bookmark base) + $ echo add-to-two >> f02.txt + $ hg ci -m 'br-2' f02.txt + created new head + $ hg book branch-2; hg book -i + $ hg up branch-1; hg book -i + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + (activating bookmark branch-1) + $ hg log -G + o changeset: 2:d408211b0a6f + | bookmark: branch-2 + | tag: tip + | parent: 0:99418d161ee0 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: br-2 + | + | @ changeset: 1:ab62441498e5 + |/ bookmark: branch-1 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: br-1 + | + o changeset: 0:99418d161ee0 + bookmark: base + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: ci-1 + + + +Check the working copy changes do not get wiped out +=================================================== + + $ echo add-to-three >> f03.txt + +f03 is modified + + $ hg st + M f03.txt + $ hg diff + diff -r ab62441498e5 f03.txt + --- a/f03.txt Thu Jan 01 00:00:00 1970 +0000 + +++ b/f03.txt Thu Jan 01 00:00:00 1970 +0000 + @@ -1,1 +1,2 @@ + three + +add-to-three + + + $ hg rebase -v -n -s branch-2 -d branch-1 --config extensions.rebase= + starting dry-run rebase; repository will not be changed + rebasing 2:d408211b0a6f branch-2 tip "br-2" + resolving manifests + getting f02.txt + committing files: + f02.txt + committing manifest + committing changelog + rebase merging completed + dry-run rebase completed successfully; run without -n/--dry-run to perform this rebase + resolving manifests (known-bad-output !) + getting f03.txt (known-bad-output !) + +f03 changes are lost + + $ hg st + M f03.txt (missing-correct-output !) + $ hg diff + diff -r ab62441498e5 f03.txt (missing-correct-output !) + --- a/f03.txt Thu Jan 01 00:00:00 1970 +0000 (missing-correct-output !) + +++ b/f03.txt Thu Jan 01 00:00:00 1970 +0000 (missing-correct-output !) + @@ -1,1 +1,2 @@ (missing-correct-output !) + three (missing-correct-output !) + +add-to-three (missing-correct-output !)