merge with stable
authorMatt Mackall <mpm@selenic.com>
Fri, 07 Jun 2013 16:59:59 -0500
changeset 19306 59cdd3a7e281
parent 19304 59d5281b5799 (current diff)
parent 19305 b500a663a2c7 (diff)
child 19307 5443d40d524b
merge with stable
hgext/histedit.py
mercurial/commands.py
--- a/hgext/histedit.py	Fri Jun 07 16:04:11 2013 -0500
+++ b/hgext/histedit.py	Fri Jun 07 16:59:59 2013 -0500
@@ -140,6 +140,7 @@
 
 try:
     import cPickle as pickle
+    pickle.dump # import now
 except ImportError:
     import pickle
 import os
--- a/mercurial/commands.py	Fri Jun 07 16:04:11 2013 -0500
+++ b/mercurial/commands.py	Fri Jun 07 16:59:59 2013 -0500
@@ -1334,12 +1334,19 @@
         raise util.Abort(_('cannot commit an interrupted graft operation'),
                          hint=_('use "hg graft -c" to continue graft'))
 
+    branch = repo[None].branch()
+    bheads = repo.branchheads(branch)
+
     extra = {}
     if opts.get('close_branch'):
         extra['close'] = 1
 
-    branch = repo[None].branch()
-    bheads = repo.branchheads(branch)
+        if not bheads:
+            raise util.Abort(_('can only close branch heads'))
+        elif opts.get('amend'):
+            if repo.parents()[0].p1().branch() != branch and \
+                    repo.parents()[0].p2().branch() != branch:
+                raise util.Abort(_('can only close branch heads'))
 
     if opts.get('amend'):
         if ui.configbool('ui', 'commitsubrepos'):
--- a/mercurial/help/extensions.txt	Fri Jun 07 16:04:11 2013 -0500
+++ b/mercurial/help/extensions.txt	Fri Jun 07 16:59:59 2013 -0500
@@ -3,14 +3,6 @@
 existing commands, change the default behavior of commands, or
 implement hooks.
 
-Extensions are not loaded by default for a variety of reasons:
-they can increase startup overhead; they may be meant for advanced
-usage only; they may provide potentially dangerous abilities (such
-as letting you destroy or modify history); they might not be ready
-for prime time; or they may alter some usual behaviors of stock
-Mercurial. It is thus up to the user to activate extensions as
-needed.
-
 To enable the "foo" extension, either shipped with Mercurial or in the
 Python search path, create an entry for it in your configuration file,
 like this::
@@ -23,6 +15,16 @@
   [extensions]
   myfeature = ~/.hgext/myfeature.py
 
+See :hg:`help config` for more information on configuration files.
+
+Extensions are not loaded by default for a variety of reasons:
+they can increase startup overhead; they may be meant for advanced
+usage only; they may provide potentially dangerous abilities (such
+as letting you destroy or modify history); they might not be ready
+for prime time; or they may alter some usual behaviors of stock
+Mercurial. It is thus up to the user to activate extensions as
+needed.
+
 To explicitly disable an extension enabled in a configuration file of
 broader scope, prepend its path with !::
 
--- a/mercurial/help/phases.txt	Fri Jun 07 16:04:11 2013 -0500
+++ b/mercurial/help/phases.txt	Fri Jun 07 16:59:59 2013 -0500
@@ -52,7 +52,7 @@
   [phases]
   publish = False
 
-See :hg:`help config` for more information on config files.
+See :hg:`help config` for more information on configuration files.
 
 .. note::
   Servers running older versions of Mercurial are treated as
--- a/tests/test-branches.t	Fri Jun 07 16:04:11 2013 -0500
+++ b/tests/test-branches.t	Fri Jun 07 16:59:59 2013 -0500
@@ -267,14 +267,16 @@
   $ hg up -C b
   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   $ hg commit -d '9 0' --close-branch -m 'close this part branch too'
+  $ hg commit -d '9 0' --close-branch -m 're-closing this branch'
+  abort: can only close branch heads
+  [255]
 
-  $ hg commit -d '9 0' --close-branch -m 're-closing this branch'
   $ hg log -r tip --debug
-  changeset:   13:c2601d54b1427e99506bee25a566ef3a5963af0b
+  changeset:   12:e3d49c0575d8fc2cb1cd6859c747c14f5f6d499f
   branch:      b
   tag:         tip
   phase:       draft
-  parent:      12:e3d49c0575d8fc2cb1cd6859c747c14f5f6d499f
+  parent:      8:eebb944467c9fb9651ed232aeaf31b3c0a7fc6c1
   parent:      -1:0000000000000000000000000000000000000000
   manifest:    8:6f9ed32d2b310e391a4f107d5f0f071df785bfee
   user:        test
@@ -282,13 +284,9 @@
   extra:       branch=b
   extra:       close=1
   description:
-  re-closing this branch
+  close this part branch too
   
   
-  $ hg rollback
-  repository tip rolled back to revision 12 (undo commit)
-  working directory now based on revision 12
-
 --- b branch should be inactive
 
   $ hg branches
--- a/tests/test-commit-amend.t	Fri Jun 07 16:04:11 2013 -0500
+++ b/tests/test-commit-amend.t	Fri Jun 07 16:59:59 2013 -0500
@@ -743,3 +743,27 @@
   -aa
   -aa
   
+Issue 3445: amending with --close-branch a commit that created a new head should fail
+This shouldn't be possible:
+
+  $ hg up -q default
+  $ hg branch closewithamend
+  marked working directory as branch closewithamend
+  (branches are permanent and global, did you want a bookmark?)
+  $ hg ci -Am..
+  adding cc.orig
+  adding obs.py
+  adding obs.pyc
+  $ hg ci --amend --close-branch -m 'closing'
+  abort: can only close branch heads
+  [255]
+
+This silliness fails:
+
+  $ hg branch silliness
+  marked working directory as branch silliness
+  (branches are permanent and global, did you want a bookmark?)
+  $ echo b >> b
+  $ hg ci --close-branch -m'open and close'
+  abort: can only close branch heads
+  [255]