Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/cmdutil.py @ 17473:9732473aa24b
amend: use an explicit commit message for temporary amending commit
Before this changeset, the extra commit created during amend had
the same description as the final commit. This was a bit confusing
when trying to understand what that extra commit was about.
This changeset changes the description of such commit to:
temporary amend commit for <ammend-commit-hash>
The old behaviour was not a big deal, but would become more confusing
once we use obsolescence marker instead of stripping the precursors.
This also helps if the user restores a strip backup.
author | Pierre-Yves David <pierre-yves.david@logilab.fr> |
---|---|
date | Sat, 25 Aug 2012 16:20:41 +0200 |
parents | 965fbe04fd96 |
children | 63e45aee46d4 |
comparison
equal
deleted
inserted
replaced
17472:965fbe04fd96 | 17473:9732473aa24b |
---|---|
1580 try: | 1580 try: |
1581 wlock = repo.wlock() | 1581 wlock = repo.wlock() |
1582 lock = repo.lock() | 1582 lock = repo.lock() |
1583 tr = repo.transaction('amend') | 1583 tr = repo.transaction('amend') |
1584 try: | 1584 try: |
1585 # See if we got a message from -m or -l, if not, open the editor | |
1586 # with the message of the changeset to amend | |
1587 message = logmessage(ui, opts) | |
1585 # First, do a regular commit to record all changes in the working | 1588 # First, do a regular commit to record all changes in the working |
1586 # directory (if there are any) | 1589 # directory (if there are any) |
1587 ui.callhooks = False | 1590 ui.callhooks = False |
1588 try: | 1591 try: |
1592 opts['message'] = 'temporary amend commit for %s' % old | |
1589 node = commit(ui, repo, commitfunc, pats, opts) | 1593 node = commit(ui, repo, commitfunc, pats, opts) |
1590 finally: | 1594 finally: |
1591 ui.callhooks = True | 1595 ui.callhooks = True |
1592 ctx = repo[node] | 1596 ctx = repo[node] |
1593 | 1597 |
1616 if node: | 1620 if node: |
1617 ui.note(_('copying changeset %s to %s\n') % (ctx, base)) | 1621 ui.note(_('copying changeset %s to %s\n') % (ctx, base)) |
1618 | 1622 |
1619 user = ctx.user() | 1623 user = ctx.user() |
1620 date = ctx.date() | 1624 date = ctx.date() |
1621 message = ctx.description() | |
1622 # Recompute copies (avoid recording a -> b -> a) | 1625 # Recompute copies (avoid recording a -> b -> a) |
1623 copied = copies.pathcopies(base, ctx) | 1626 copied = copies.pathcopies(base, ctx) |
1624 | 1627 |
1625 # Prune files which were reverted by the updates: if old | 1628 # Prune files which were reverted by the updates: if old |
1626 # introduced file X and our intermediate commit, node, | 1629 # introduced file X and our intermediate commit, node, |
1661 try: | 1664 try: |
1662 return old.filectx(path) | 1665 return old.filectx(path) |
1663 except KeyError: | 1666 except KeyError: |
1664 raise IOError | 1667 raise IOError |
1665 | 1668 |
1666 # See if we got a message from -m or -l, if not, open the editor | |
1667 # with the message of the changeset to amend | |
1668 user = opts.get('user') or old.user() | 1669 user = opts.get('user') or old.user() |
1669 date = opts.get('date') or old.date() | 1670 date = opts.get('date') or old.date() |
1670 message = logmessage(ui, opts) | 1671 if not message: |
1671 if not message: | 1672 message = old.description() |
1672 cctx = context.workingctx(repo, old.description(), | |
1673 user, date, extra, | |
1674 repo.status(base.node(), | |
1675 old.node())) | |
1676 message = commitforceeditor(repo, cctx, []) | |
1677 | 1673 |
1678 new = context.memctx(repo, | 1674 new = context.memctx(repo, |
1679 parents=[base.node(), nullid], | 1675 parents=[base.node(), nullid], |
1680 text=message, | 1676 text=message, |
1681 files=files, | 1677 files=files, |
1682 filectxfn=filectxfn, | 1678 filectxfn=filectxfn, |
1683 user=user, | 1679 user=user, |
1684 date=date, | 1680 date=date, |
1685 extra=extra) | 1681 extra=extra) |
1682 new._text = commitforceeditor(repo, new, []) | |
1686 ph = repo.ui.config('phases', 'new-commit', phases.draft) | 1683 ph = repo.ui.config('phases', 'new-commit', phases.draft) |
1687 try: | 1684 try: |
1688 repo.ui.setconfig('phases', 'new-commit', old.phase()) | 1685 repo.ui.setconfig('phases', 'new-commit', old.phase()) |
1689 newid = repo.commitctx(new) | 1686 newid = repo.commitctx(new) |
1690 finally: | 1687 finally: |