Patchwork D8057: rebase: abort if the user tries to rebase the working copy

login
register
mail settings
Submitter phabricator
Date Feb. 1, 2020, 12:08 a.m.
Message ID <dd8e95cc6c271f2a4ee33229278589e4@localhost.localdomain>
Download mbox | patch
Permalink /patch/44853/
State Not Applicable
Headers show

Comments

phabricator - Feb. 1, 2020, 12:08 a.m.
martinvonz updated this revision to Diff 19804.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D8057?vs=19778&id=19804

BRANCH
  default

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D8057/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D8057

AFFECTED FILES
  hgext/rebase.py
  tests/test-rebase-parameters.t

CHANGE DETAILS




To: martinvonz, #hg-reviewers
Cc: pulkit, mercurial-devel

Patch

diff --git a/tests/test-rebase-parameters.t b/tests/test-rebase-parameters.t
--- a/tests/test-rebase-parameters.t
+++ b/tests/test-rebase-parameters.t
@@ -93,11 +93,12 @@ 
   [1]
 
   $ hg rebase --rev 'wdir()' --dest 6
-  abort: working directory revision cannot be specified
+  abort: cannot rebase the working copy
   [255]
 
-  $ hg rebase --source 'wdir()' --dest 6 2>&1 | grep assert
-      assert rebaseset
+  $ hg rebase --source 'wdir()' --dest 6
+  abort: cannot rebase the working copy
+  [255]
 
   $ hg rebase --source '1 & !1' --dest 8
   empty "source" revision set - nothing to rebase
diff --git a/hgext/rebase.py b/hgext/rebase.py
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -37,6 +37,7 @@ 
     hg,
     merge as mergemod,
     mergeutil,
+    node as nodemod,
     obsolete,
     obsutil,
     patch,
@@ -1265,8 +1266,7 @@ 
         if not src:
             ui.status(_(b'empty "source" revision set - nothing to rebase\n'))
             return None
-        rebaseset = repo.revs(b'(%ld)::', src)
-        assert rebaseset
+        rebaseset = repo.revs(b'(%ld)::', src) or src
     else:
         base = scmutil.revrange(repo, [basef or b'.'])
         if not base:
@@ -1341,6 +1341,8 @@ 
                 )
             return None
 
+    if nodemod.wdirrev in rebaseset:
+        raise error.Abort(_(b'cannot rebase the working copy'))
     rebasingwcp = repo[b'.'].rev() in rebaseset
     ui.log(
         b"rebase",