strip: with --keep, consider all revs "removed" from the wcp (
issue6270)
The current code was blink to change from other branches when stripping merges
that are ancestors of the working copy parents.
--- a/hgext/strip.py Fri Sep 18 12:10:12 2020 +0200
+++ b/hgext/strip.py Fri Sep 18 12:20:28 2020 +0200
@@ -254,7 +254,7 @@
# only reset the dirstate for files that would actually change
# between the working context and uctx
- descendantrevs = repo.revs(b"%d::.", uctx.rev())
+ descendantrevs = repo.revs(b"only(., %d)", uctx.rev())
changedfiles = []
for rev in descendantrevs:
# blindly reset the files, regardless of what actually changed
--- a/tests/test-strip.t Fri Sep 18 12:10:12 2020 +0200
+++ b/tests/test-strip.t Fri Sep 18 12:20:28 2020 +0200
@@ -1179,7 +1179,11 @@
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.
+The added file is moved to unknown, which is the behavior we have been seeing for other `hg strip --keep` call.
+
+stripping a set containing a merge properly reset file content, including items on other branches
+
+The added file is moved 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
@@ -1260,13 +1264,10 @@
summary: commitA
-BROKEN: 'bar.txt' cannot possibly be clean since it is not part of the current
-working copy parents.
-
$ hg status -A
+ ? bar.txt
C a
C b
- C bar.txt
C foo.txt
$ cat bar.txt
bar