diff -r a2ca9dcb4b77 -r e353fac7db26 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Sat Jul 12 10:52:58 2014 -0700 +++ b/mercurial/cmdutil.py Tue Jul 15 00:59:09 2014 +0900 @@ -2170,6 +2170,23 @@ return commitforceeditor(repo, ctx, subs) def commitforceeditor(repo, ctx, subs, finishdesc=None, extramsg=None): + committext = buildcommittext(repo, ctx, subs, extramsg) + + # run editor in the repository root + olddir = os.getcwd() + os.chdir(repo.root) + text = repo.ui.edit(committext, ctx.user(), ctx.extra()) + text = re.sub("(?m)^HG:.*(\n|$)", "", text) + os.chdir(olddir) + + if finishdesc: + text = finishdesc(text) + if not text.strip(): + raise util.Abort(_("empty commit message")) + + return text + +def buildcommittext(repo, ctx, subs, extramsg): edittext = [] modified, added, removed = ctx.modified(), ctx.added(), ctx.removed() if ctx.description(): @@ -2197,19 +2214,8 @@ if not added and not modified and not removed: edittext.append(_("HG: no files changed")) edittext.append("") - # run editor in the repository root - olddir = os.getcwd() - os.chdir(repo.root) - text = repo.ui.edit("\n".join(edittext), ctx.user(), ctx.extra()) - text = re.sub("(?m)^HG:.*(\n|$)", "", text) - os.chdir(olddir) - if finishdesc: - text = finishdesc(text) - if not text.strip(): - raise util.Abort(_("empty commit message")) - - return text + return "\n".join(edittext) def commitstatus(repo, node, branch, bheads=None, opts={}): ctx = repo[node]