changeset 15801:bfd3ce759682

merge with stable
author Matt Mackall <mpm@selenic.com>
date Mon, 09 Jan 2012 20:16:57 -0600
parents c7a8164c61ab (current diff) e4fc0f0b4f7e (diff)
children 7e5af0ee975c
files hgext/mq.py hgext/rebase.py mercurial/dirstate.py tests/test-rebase-named-branches.t
diffstat 4 files changed, 154 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/mq.py	Sun Jan 08 15:23:26 2012 +0100
+++ b/hgext/mq.py	Mon Jan 09 20:16:57 2012 -0600
@@ -1854,8 +1854,9 @@
 def delete(ui, repo, *patches, **opts):
     """remove patches from queue
 
-    The patches must not be applied, and at least one patch is required. With
-    -k/--keep, the patch files are preserved in the patch directory.
+    The patches must not be applied, and at least one patch is required. Exact
+    patch identifiers must be given. With -k/--keep, the patch files are
+    preserved in the patch directory.
 
     To stop managing a patch and move it into permanent history,
     use the :hg:`qfinish` command."""
--- a/hgext/rebase.py	Sun Jan 08 15:23:26 2012 +0100
+++ b/hgext/rebase.py	Mon Jan 09 20:16:57 2012 -0600
@@ -15,7 +15,7 @@
 '''
 
 from mercurial import hg, util, repair, merge, cmdutil, commands, bookmarks
-from mercurial import extensions, patch
+from mercurial import extensions, patch, scmutil
 from mercurial.commands import templateopts
 from mercurial.node import nullrev
 from mercurial.lock import release
@@ -187,10 +187,12 @@
             if revf:
                 rebaseset = repo.revs('%lr', revf)
             elif srcf:
-                rebaseset = repo.revs('(%r)::', srcf)
+                src = scmutil.revrange(repo, [srcf])
+                rebaseset = repo.revs('(%ld)::', src)
             else:
-                base = basef or '.'
-                rebaseset = repo.revs('(children(ancestor(%r, %d)) & ::%r)::',
+                base = scmutil.revrange(repo, [basef or '.'])
+                rebaseset = repo.revs(
+                    '(children(ancestor(%ld, %d)) and ::(%ld))::',
                     base, dest, base)
 
             if rebaseset:
--- a/mercurial/dirstate.py	Sun Jan 08 15:23:26 2012 +0100
+++ b/mercurial/dirstate.py	Mon Jan 09 20:16:57 2012 -0600
@@ -4,6 +4,7 @@
 #
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2 or any later version.
+import errno
 
 from node import nullid
 from i18n import _
@@ -80,7 +81,9 @@
     def _branch(self):
         try:
             return self._opener.read("branch").strip() or "default"
-        except IOError:
+        except IOError, inst:
+            if inst.errno != errno.ENOENT:
+                raise
             return "default"
 
     @propertycache
--- a/tests/test-rebase-named-branches.t	Sun Jan 08 15:23:26 2012 +0100
+++ b/tests/test-rebase-named-branches.t	Mon Jan 09 20:16:57 2012 -0600
@@ -22,25 +22,156 @@
   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ cd ..
 
-
-Rebasing descendant onto ancestor across different named branches
-
   $ hg clone -q -u . a a1
 
   $ cd a1
 
-  $ hg branch dev
-  marked working directory as branch dev
+  $ hg update 3
+  3 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ hg branch dev-one
+  marked working directory as branch dev-one
+  (branches are permanent and global, did you want a bookmark?)
+  $ hg ci -m 'dev-one named branch'
+
+  $ hg update 7
+  2 files updated, 0 files merged, 3 files removed, 0 files unresolved
+  $ hg branch dev-two
+  marked working directory as branch dev-two
   (branches are permanent and global, did you want a bookmark?)
 
   $ echo x > x
 
   $ hg add x
 
-  $ hg ci -m 'extra named branch'
+  $ hg ci -m 'dev-two named branch'
+
+  $ hg tglog
+  @  9: 'dev-two named branch' dev-two
+  |
+  | o  8: 'dev-one named branch' dev-one
+  | |
+  o |  7: 'H'
+  | |
+  +---o  6: 'G'
+  | | |
+  o | |  5: 'F'
+  | | |
+  +---o  4: 'E'
+  | |
+  | o  3: 'D'
+  | |
+  | o  2: 'C'
+  | |
+  | o  1: 'B'
+  |/
+  o  0: 'A'
+  
+
+Branch name containing a dash (issue3181)
+
+  $ hg rebase -b dev-two -d dev-one --keepbranches
+  saved backup bundle to $TESTTMP/a1/.hg/strip-backup/*-backup.hg (glob)
+
+  $ hg tglog
+  @  9: 'dev-two named branch' dev-two
+  |
+  o  8: 'H'
+  |
+  | o  7: 'G'
+  |/|
+  o |  6: 'F'
+  | |
+  o |  5: 'dev-one named branch' dev-one
+  | |
+  | o  4: 'E'
+  | |
+  o |  3: 'D'
+  | |
+  o |  2: 'C'
+  | |
+  o |  1: 'B'
+  |/
+  o  0: 'A'
+  
+  $ hg rebase -s dev-one -d 0 --keepbranches
+  saved backup bundle to $TESTTMP/a1/.hg/strip-backup/*-backup.hg (glob)
 
   $ hg tglog
-  @  8: 'extra named branch' dev
+  @  8: 'dev-two named branch' dev-two
+  |
+  o  7: 'H'
+  |
+  | o  6: 'G'
+  |/|
+  o |  5: 'F'
+  | |
+  | o  4: 'E'
+  |/
+  | o  3: 'D'
+  | |
+  | o  2: 'C'
+  | |
+  | o  1: 'B'
+  |/
+  o  0: 'A'
+  
+  $ hg update 3
+  3 files updated, 0 files merged, 3 files removed, 0 files unresolved
+  $ hg branch dev-one
+  marked working directory as branch dev-one
+  (branches are permanent and global, did you want a bookmark?)
+  $ hg ci -m 'dev-one named branch'
+
+  $ hg tglog
+  @  9: 'dev-one named branch' dev-one
+  |
+  | o  8: 'dev-two named branch' dev-two
+  | |
+  | o  7: 'H'
+  | |
+  | | o  6: 'G'
+  | |/|
+  | o |  5: 'F'
+  | | |
+  | | o  4: 'E'
+  | |/
+  o |  3: 'D'
+  | |
+  o |  2: 'C'
+  | |
+  o |  1: 'B'
+  |/
+  o  0: 'A'
+  
+  $ hg rebase -b 'max(branch("dev-two"))' -d dev-one --keepbranches
+  saved backup bundle to $TESTTMP/a1/.hg/strip-backup/*-backup.hg (glob)
+
+  $ hg tglog
+  @  9: 'dev-two named branch' dev-two
+  |
+  o  8: 'H'
+  |
+  | o  7: 'G'
+  |/|
+  o |  6: 'F'
+  | |
+  o |  5: 'dev-one named branch' dev-one
+  | |
+  | o  4: 'E'
+  | |
+  o |  3: 'D'
+  | |
+  o |  2: 'C'
+  | |
+  o |  1: 'B'
+  |/
+  o  0: 'A'
+  
+  $ hg rebase -s 'max(branch("dev-one"))' -d 0 --keepbranches
+  saved backup bundle to $TESTTMP/a1/.hg/strip-backup/*-backup.hg (glob)
+
+  $ hg tglog
+  @  8: 'dev-two named branch' dev-two
   |
   o  7: 'H'
   |
@@ -59,6 +190,7 @@
   o  0: 'A'
   
 
+Rebasing descendant onto ancestor across different named branches
 
   $ hg rebase -s 1 -d 8 --keepbranches
   saved backup bundle to $TESTTMP/a1/.hg/strip-backup/*-backup.hg (glob)
@@ -70,7 +202,7 @@
   |
   o  6: 'B'
   |
-  o  5: 'extra named branch' dev
+  o  5: 'dev-two named branch' dev-two
   |
   o  4: 'H'
   |
@@ -96,7 +228,7 @@
   |
   o  6: 'B'
   |
-  o  5: 'extra named branch'
+  o  5: 'dev-two named branch'
   |
   o  4: 'H'
   |