[Updated] D8489: rebase: avoid clobbering wdir() with --dry-run or --confirm (issue6291)
mharbison72 (Matt Harbison)
phabricator at mercurial-scm.org
Sat Jun 6 03:14:29 UTC 2020
Closed by commit rHG1f114c797961: rebase: avoid clobbering wdir() with --dry-run or --confirm (issue6291) (authored by mharbison72).
This revision was automatically updated to reflect the committed changes.
This revision was not accepted when it landed; it landed in state "Needs Review".
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D8489?vs=21237&id=21569
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D8489/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D8489
AFFECTED FILES
hgext/rebase.py
tests/test-rebase-named-branches.t
CHANGE DETAILS
diff --git a/tests/test-rebase-named-branches.t b/tests/test-rebase-named-branches.t
--- a/tests/test-rebase-named-branches.t
+++ b/tests/test-rebase-named-branches.t
@@ -339,15 +339,23 @@
-A
+A-mod
-BUG: This shouldn't affect wdir
+--dry-run doesn't affect a dirty working directory that is unrelated to the
+source or destination.
$ hg rebase -s tip -d 4 --dry-run
starting dry-run rebase; repository will not be changed
rebasing 11:be1dea60f2a6 "D" (tip)
dry-run rebase completed successfully; run without -n/--dry-run to perform this rebase
$ hg diff
+ diff -r 2b586e70108d A
+ --- a/A Thu Jan 01 00:00:00 1970 +0000
+ +++ b/A Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -A
+ +A-mod
-BUG: This shouldn't affect wdir
+Bailing out on --confirm doesn't affect a dirty working directory that is
+unrelated to the source or destination.
$ echo A-mod > A
$ echo n | hg rebase -s tip -d 4 --confirm --config ui.interactive=True
@@ -356,6 +364,12 @@
rebase completed successfully
apply changes (yn)? n
$ hg diff
+ diff -r 2b586e70108d A
+ --- a/A Thu Jan 01 00:00:00 1970 +0000
+ +++ b/A Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,1 +1,1 @@
+ -A
+ +A-mod
$ echo A-mod > A
$ hg rebase -s tip -d 4 --confirm
diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -367,7 +367,9 @@
skippedset.update(obsoleteextinctsuccessors)
_checkobsrebase(self.repo, self.ui, obsoleteset, skippedset)
- def _prepareabortorcontinue(self, isabort, backup=True, suppwarns=False):
+ def _prepareabortorcontinue(
+ self, isabort, backup=True, suppwarns=False, dryrun=False, confirm=False
+ ):
self.resume = True
try:
self.restorestatus()
@@ -390,7 +392,12 @@
if isabort:
backup = backup and self.backupf
- return self._abort(backup=backup, suppwarns=suppwarns)
+ return self._abort(
+ backup=backup,
+ suppwarns=suppwarns,
+ dryrun=dryrun,
+ confirm=confirm,
+ )
def _preparenewrebase(self, destmap):
if not destmap:
@@ -749,7 +756,7 @@
):
bookmarks.activate(repo, self.activebookmark)
- def _abort(self, backup=True, suppwarns=False):
+ def _abort(self, backup=True, suppwarns=False, dryrun=False, confirm=False):
'''Restore the repository to its original state.'''
repo = self.repo
@@ -793,7 +800,10 @@
updateifonnodes = set(rebased)
updateifonnodes.update(self.destmap.values())
- updateifonnodes.add(self.originalwd)
+
+ if not dryrun and not confirm:
+ updateifonnodes.add(self.originalwd)
+
shouldupdate = repo[b'.'].rev() in updateifonnodes
# Update away from the rebase if necessary
@@ -1119,7 +1129,10 @@
rbsrt._finishrebase()
else:
rbsrt._prepareabortorcontinue(
- isabort=True, backup=False, suppwarns=True
+ isabort=True,
+ backup=False,
+ suppwarns=True,
+ confirm=confirm,
)
needsabort = False
else:
@@ -1134,7 +1147,10 @@
if needsabort:
# no need to store backup in case of dryrun
rbsrt._prepareabortorcontinue(
- isabort=True, backup=False, suppwarns=True
+ isabort=True,
+ backup=False,
+ suppwarns=True,
+ dryrun=opts.get(b'dry_run'),
)
To: mharbison72, martinvonz, #hg-reviewers, durin42
Cc: durin42, marmoute, mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mercurial-scm.org/pipermail/mercurial-patches/attachments/20200606/22b2a195/attachment-0001.html>
More information about the Mercurial-patches
mailing list