diff mercurial/cmdutil.py @ 18909:3a72c89a83ec

amend: support amending merge changesets (issue3778)
author Brodie Rao <brodie@sf.io>
date Fri, 08 Feb 2013 21:08:34 +0000
parents 78d760aa3607
children c1af1fb314bc
line wrap: on
line diff
--- a/mercurial/cmdutil.py	Thu Apr 11 13:30:31 2013 -0700
+++ b/mercurial/cmdutil.py	Fri Feb 08 21:08:34 2013 +0000
@@ -1660,7 +1660,13 @@
             # Also update it from the intermediate commit or from the wctx
             extra.update(ctx.extra())
 
-            files = set(old.files())
+            if len(old.parents()) > 1:
+                # ctx.files() isn't reliable for merges, so fall back to the
+                # slower repo.status() method
+                files = set([fn for st in repo.status(base, old)[:3]
+                             for fn in st])
+            else:
+                files = set(old.files())
 
             # Second, we use either the commit we just did, or if there were no
             # changes the parent of the working directory as the version of the
@@ -1725,7 +1731,7 @@
             extra['amend_source'] = old.hex()
 
             new = context.memctx(repo,
-                                 parents=[base.node(), nullid],
+                                 parents=[base.node(), old.p2().node()],
                                  text=message,
                                  files=files,
                                  filectxfn=filectxfn,