# HG changeset patch # User Mike Edgar # Date 1448701917 18000 # Node ID 39163708825cd504f75e212c1d3f95698ded4c6f # Parent 804abe8999f36760dff164aa3c72d87e2b60fd73 commit: preserve extra when amending with commit --amend The new extra propagation needs to be accounted for in cmdutil.amend, when checking for a no-changes fast-path. diff -r 804abe8999f3 -r 39163708825c mercurial/cmdutil.py --- a/mercurial/cmdutil.py Sat Nov 28 04:11:38 2015 -0500 +++ b/mercurial/cmdutil.py Sat Nov 28 04:11:57 2015 -0500 @@ -2619,6 +2619,11 @@ message = old.description() pureextra = extra.copy() + if 'amend_source' in pureextra: + del pureextra['amend_source'] + pureoldextra = old.extra() + if 'amend_source' in pureoldextra: + del pureoldextra['amend_source'] extra['amend_source'] = old.hex() new = context.memctx(repo, @@ -2636,7 +2641,7 @@ and newdesc == old.description() and user == old.user() and date == old.date() - and pureextra == old.extra()): + and pureextra == pureoldextra): # nothing changed. continuing here would create a new node # anyway because of the amend_source noise. # diff -r 804abe8999f3 -r 39163708825c mercurial/commands.py --- a/mercurial/commands.py Sat Nov 28 04:11:38 2015 -0500 +++ b/mercurial/commands.py Sat Nov 28 04:11:57 2015 -0500 @@ -1617,6 +1617,9 @@ if not allowunstable and old.children(): raise error.Abort(_('cannot amend changeset with children')) + newextra = extra.copy() + newextra['branch'] = branch + extra = newextra # commitfunc is used only for temporary amend commit by cmdutil.amend def commitfunc(ui, repo, message, match, opts): return repo.commit(message,