rebase: do not cleanup the working copy when --dry-run is used (issue6802) stable
authorPierre-Yves David <pierre-yves.david@octobus.net>
Thu, 13 Apr 2023 04:12:31 +0200
branchstable
changeset 50340 9f33d12f6f48
parent 50339 b469c5ceaa85
child 50341 698ffff7024b
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.
hgext/rebase.py
tests/test-rebase-dry-run.t
--- 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