[PATCH 1 of 2 V9] update: fix bare update to work on new branch (BC)

liscju piotr.listkiewicz at gmail.com
Wed Apr 13 11:29:56 UTC 2016


# HG changeset patch
# User liscju <piotr.listkiewicz at gmail.com>
# Date 1459832013 -7200
#      Tue Apr 05 06:53:33 2016 +0200
# Node ID f5f2ade3ad9fa5ce6f4c908273c74d1228b03e0c
# Parent  02be5fc18c0c70c087a9d1ab5ffe5afce926f227
update: fix bare update to work on new branch (BC)

So far bare update on new branch results in
'abort: branch new-branch not found'. Fix this by
updating to the parent of wctx.

The effect of updating to the parent of wctx is to move to the
parent branch - this means that it is no longer necessary to
prevent you from updating if you would lose your newly created
branch.

diff -r 02be5fc18c0c -r f5f2ade3ad9f mercurial/destutil.py
--- a/mercurial/destutil.py	Wed Mar 09 10:47:33 2016 -0500
+++ b/mercurial/destutil.py	Tue Apr 05 06:53:33 2016 +0200
@@ -102,11 +102,7 @@ def _destupdatebranch(repo, clean, check
         if bookmarks.isactivewdirparent(repo):
             movemark = repo['.'].node()
     else:
-        if currentbranch == 'default': # no default branch!
-            # update to the tipmost non-closed branch head
-            node = repo.revs('max(head() and not closed())').first()
-        else:
-            raise error.Abort(_("branch %s not found") % currentbranch)
+        node = repo['.'].node()
     return node, movemark, None
 
 def _destupdatebranchfallback(repo, clean, check):
diff -r 02be5fc18c0c -r f5f2ade3ad9f tests/test-newbranch.t
--- a/tests/test-newbranch.t	Wed Mar 09 10:47:33 2016 -0500
+++ b/tests/test-newbranch.t	Tue Apr 05 06:53:33 2016 +0200
@@ -211,8 +211,7 @@ Update with no arguments: tipmost revisi
   marked working directory as branch foobar
 
   $ hg up
-  abort: branch foobar not found
-  [255]
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
 Fast-forward merge:
 
@@ -345,3 +344,50 @@ 2 branch heads, implicit merge works:
   (branch merge, don't forget to commit)
 
   $ cd ..
+
+We expect that bare update on new branch, updates to parent
+
+  $ hg init bareupdateonnewbranch
+  $ cd bareupdateonnewbranch
+  $ hg update
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ touch a
+  $ hg commit -A -m "a"
+  adding a
+  $ touch b
+  $ hg commit -A -m "b"
+  adding b
+  $ touch c
+  $ hg commit -A -m "c"
+  adding c
+  $ hg update -r 1
+  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ hg log -G
+  o  changeset:   2:991a3460af53
+  |  tag:         tip
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     c
+  |
+  @  changeset:   1:0e067c57feba
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     b
+  |
+  o  changeset:   0:3903775176ed
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     a
+  
+  $ hg branch dev
+  marked working directory as branch dev
+  (branches are permanent and global, did you want a bookmark?)
+  $ hg update
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg summary
+  parent: 1:0e067c57feba 
+   b
+  branch: dev
+  commit: (new branch)
+  update: (current)
+  phases: 3 draft


More information about the Mercurial-devel mailing list