# HG changeset patch # User Matt Mackall # Date 1326161817 21600 # Node ID bfd3ce7596821c691d166806cb8c72bda7b53389 # Parent c7a8164c61ab6575e09ce2ea6593c5a28627e554# Parent e4fc0f0b4f7e73f6cbfa132cf09b7027a909d08c merge with stable diff -r c7a8164c61ab -r bfd3ce759682 hgext/mq.py --- 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.""" diff -r c7a8164c61ab -r bfd3ce759682 hgext/rebase.py --- 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: diff -r c7a8164c61ab -r bfd3ce759682 mercurial/dirstate.py --- 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 diff -r c7a8164c61ab -r bfd3ce759682 tests/test-rebase-named-branches.t --- 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' |