rebase: do not cleanup the working copy when --dry-run is used (issue6802)
Since we did not touch the working copy, we don't need to clean it up. This
will avoid wiping exiting changes out.
--- a/hgext/rebase.py Tue Apr 11 17:06:08 2023 +0200
+++ b/hgext/rebase.py Thu Apr 13 04:12:31 2023 +0200
@@ -838,6 +838,7 @@
cleanup = False
if cleanup:
+
if rebased:
strippoints = [
c.node() for c in repo.set(b'roots(%ld)', rebased)
@@ -846,13 +847,17 @@
updateifonnodes = set(rebased)
updateifonnodes.update(self.destmap.values())
- if not dryrun and not confirm:
+ if not confirm:
+ # note: when dry run is set the `rebased` and `destmap`
+ # variables seem to contain "bad" contents, so do not
+ # rely on them. As dryrun does not need this part of
+ # the cleanup, this is "fine"
updateifonnodes.add(self.originalwd)
shouldupdate = repo[b'.'].rev() in updateifonnodes
# Update away from the rebase if necessary
- if shouldupdate:
+ if not dryrun and shouldupdate:
mergemod.clean_update(repo[self.originalwd])
# Strip from the first rebased revision
--- a/tests/test-rebase-dry-run.t Tue Apr 11 17:06:08 2023 +0200
+++ b/tests/test-rebase-dry-run.t Thu Apr 13 04:12:31 2023 +0200
@@ -83,17 +83,15 @@
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 !)
+ M f03.txt
$ 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 !)
+ 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