From patchwork Fri Sep 18 11:23:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [1, of, 2, STABLE] test-strip: display more information highlight buggy behavior From: Pierre-Yves David X-Patchwork-Id: 47218 Message-Id: To: mercurial-devel@mercurial-scm.org Date: Fri, 18 Sep 2020 13:23:59 +0200 # HG changeset patch # User Pierre-Yves David # Date 1600423812 -7200 # Fri Sep 18 12:10:12 2020 +0200 # Branch stable # Node ID dc7e034e4408b42fedf1233961acba1dd643d85e # Parent 4ebc5f325bedfc8fc98b3c41fda7892563142146 # EXP-Topic issue6270 # Available At https://foss.heptapod.net/octobus/mercurial-devel/ # hg pull https://foss.heptapod.net/octobus/mercurial-devel/ -r dc7e034e4408 test-strip: display more information highlight buggy behavior When using `hg strip --keep` on a set of changeset that contains a merge, the set of file considered when rebuilding the dirstate is missing files updated by changeset that are not directly inside the `new-parent::old-parent` range. We start with updating the test with new output highlighting the issue. This issue was spotted because that dirstate inconsistency made the test flaky. The new command make the test less flaky (but still wrong). diff --git a/tests/test-strip.t b/tests/test-strip.t --- a/tests/test-strip.t +++ b/tests/test-strip.t @@ -1177,6 +1177,10 @@ test stripping a working directory paren summary: commitA +stripping a set containing a merge properly reset file content, including items on other branches + +BROKEN, The added file should move to unknown, which is the behavior we have been seeing for other `hg strip --keep` call. + $ hg unbundle -u $TESTTMP/issue4736/.hg/strip-backup/35358f982181-a6f020aa-backup.hg adding changesets adding manifests @@ -1185,6 +1189,50 @@ test stripping a working directory paren new changesets 35358f982181:4cf5e92caec2 (2 drafts) 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg id + 4cf5e92caec2 (new-branch) tip + $ hg status --rev "f62c6c09b707" + A bar.txt + $ hg diff --rev "f62c6c09b707" + diff -r f62c6c09b707 bar.txt + --- /dev/null Thu Jan 01 00:00:00 1970 +0000 + +++ b/bar.txt Thu Jan 01 00:00:00 1970 +0000 + @@ -0,0 +1,1 @@ + +bar + $ hg log -G -v --rev 35358f982181:: --patch + @ changeset: 5:4cf5e92caec2 + |\ branch: new-branch + | ~ tag: tip + | parent: 3:f62c6c09b707 + | parent: 4:35358f982181 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | description: + | merge + | + | + | diff -r f62c6c09b707 -r 4cf5e92caec2 bar.txt + | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 + | +++ b/bar.txt Thu Jan 01 00:00:00 1970 +0000 + | @@ -0,0 +1,1 @@ + | +bar + | + o changeset: 4:35358f982181 + | parent: 1:eca11cf91c71 + ~ user: test + date: Thu Jan 01 00:00:00 1970 +0000 + files: bar.txt + description: + bar + + + diff -r eca11cf91c71 -r 35358f982181 bar.txt + --- /dev/null Thu Jan 01 00:00:00 1970 +0000 + +++ b/bar.txt Thu Jan 01 00:00:00 1970 +0000 + @@ -0,0 +1,1 @@ + +bar + + $ hg strip -k -r 35358f982181 saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/35358f982181-a6f020aa-backup.hg $ hg log -G @@ -1211,12 +1259,17 @@ test stripping a working directory paren date: Thu Jan 01 00:00:00 1970 +0000 summary: commitA - $ hg diff - diff -r f62c6c09b707 bar.txt - --- /dev/null Thu Jan 01 00:00:00 1970 +0000 - +++ b/bar.txt Thu Jan 01 00:00:00 1970 +0000 - @@ -0,0 +1,1 @@ - +bar + +BROKEN: 'bar.txt' cannot possibly be clean since it is not part of the current +working copy parents. + + $ hg status -A + C a + C b + C bar.txt + C foo.txt + $ cat bar.txt + bar Use delayedstrip to strip inside a transaction