Show More
@@ -124,10 +124,11 b" def fetch(ui, repo, source='default', **" | |||
|
124 | 124 | message = (cmdutil.logmessage(opts) or |
|
125 | 125 | (_('Automated merge with %s') % |
|
126 | 126 | url.removeauth(other.url()))) |
|
127 | force_editor = opts.get('force_editor') or opts.get('edit') | |
|
128 | n = repo.commit(mod + add + rem, message, | |
|
129 | opts['user'], opts['date'], force=True, | |
|
130 | force_editor=force_editor) | |
|
127 | editor = cmdutil.commiteditor | |
|
128 | if opts.get('force_editor') or opts.get('edit'): | |
|
129 | editor = cmdutil.commitforceeditor | |
|
130 | n = repo.commit(mod + add + rem, message, opts['user'], | |
|
131 | opts['date'], force=True, editor=editor) | |
|
131 | 132 | ui.status(_('new changeset %d:%s merges remote changes ' |
|
132 | 133 | 'with local\n') % (repo.changelog.rev(n), |
|
133 | 134 | short(n))) |
@@ -450,8 +450,7 b' def reposetup(ui, repo):' | |||
|
450 | 450 | return kwt.wread(filename, data) |
|
451 | 451 | |
|
452 | 452 | def commit(self, files=None, text='', user=None, date=None, |
|
453 |
match=None, force=False, |
|
|
454 | extra={}, empty_ok=False): | |
|
453 | match=None, force=False, editor=None, extra={}): | |
|
455 | 454 | wlock = lock = None |
|
456 | 455 | _p1 = _p2 = None |
|
457 | 456 | try: |
@@ -473,8 +472,7 b' def reposetup(ui, repo):' | |||
|
473 | 472 | _p2 = hex(_p2) |
|
474 | 473 | |
|
475 | 474 | n = super(kwrepo, self).commit(files, text, user, date, match, |
|
476 |
force, |
|
|
477 | extra, empty_ok) | |
|
475 | force, editor, extra) | |
|
478 | 476 | |
|
479 | 477 | # restore commit hooks |
|
480 | 478 | for name, cmd in commithooks.iteritems(): |
@@ -1221,3 +1221,40 b' def commit(ui, repo, commitfunc, pats, o' | |||
|
1221 | 1221 | return commitfunc(ui, repo, message, m, opts) |
|
1222 | 1222 | except ValueError, inst: |
|
1223 | 1223 | raise util.Abort(str(inst)) |
|
1224 | ||
|
1225 | def commiteditor(repo, ctx, added, updated, removed): | |
|
1226 | if ctx.description(): | |
|
1227 | return ctx.description() | |
|
1228 | return commitforceeditor(repo, ctx, added, updated, removed) | |
|
1229 | ||
|
1230 | def commitforceeditor(repo, ctx, added, updated, removed): | |
|
1231 | edittext = [] | |
|
1232 | if ctx.description(): | |
|
1233 | edittext.append(ctx.description()) | |
|
1234 | edittext.append("") | |
|
1235 | edittext.append("") # Empty line between message and comments. | |
|
1236 | edittext.append(_("HG: Enter commit message." | |
|
1237 | " Lines beginning with 'HG:' are removed.")) | |
|
1238 | edittext.append("HG: --") | |
|
1239 | edittext.append(_("HG: user: %s") % ctx.user()) | |
|
1240 | if ctx.p2(): | |
|
1241 | edittext.append(_("HG: branch merge")) | |
|
1242 | if ctx.branch(): | |
|
1243 | edittext.append(_("HG: branch '%s'") | |
|
1244 | % encoding.tolocal(ctx.branch())) | |
|
1245 | edittext.extend([_("HG: added %s") % f for f in added]) | |
|
1246 | edittext.extend([_("HG: changed %s") % f for f in updated]) | |
|
1247 | edittext.extend([_("HG: removed %s") % f for f in removed]) | |
|
1248 | if not added and not updated and not removed: | |
|
1249 | edittext.append(_("HG: no files changed")) | |
|
1250 | edittext.append("") | |
|
1251 | # run editor in the repository root | |
|
1252 | olddir = os.getcwd() | |
|
1253 | os.chdir(repo.root) | |
|
1254 | text = repo.ui.edit("\n".join(edittext), ctx.user()) | |
|
1255 | os.chdir(olddir) | |
|
1256 | ||
|
1257 | if not text.strip(): | |
|
1258 | raise util.Abort(_("empty commit message")) | |
|
1259 | ||
|
1260 | return text |
@@ -642,10 +642,13 b' def commit(ui, repo, *pats, **opts):' | |||
|
642 | 642 | extra = {} |
|
643 | 643 | if opts.get('close_branch'): |
|
644 | 644 | extra['close'] = 1 |
|
645 | e = cmdutil.commiteditor | |
|
646 | if opts.get('force_editor'): | |
|
647 | e = cmdutil.commitforceeditor | |
|
648 | ||
|
645 | 649 | def commitfunc(ui, repo, message, match, opts): |
|
646 | 650 | return repo.commit(match.files(), message, opts.get('user'), |
|
647 |
opts.get('date'), match, |
|
|
648 | extra=extra) | |
|
651 | opts.get('date'), match, editor=e, extra=extra) | |
|
649 | 652 | |
|
650 | 653 | node = cmdutil.commit(ui, repo, commitfunc, pats, opts) |
|
651 | 654 | if not node: |
@@ -1741,7 +1744,8 b' def import_(ui, repo, patch1, *patches, ' | |||
|
1741 | 1744 | files = patch.updatedir(ui, repo, files, similarity=sim/100.) |
|
1742 | 1745 | if not opts.get('no_commit'): |
|
1743 | 1746 | n = repo.commit(files, message, opts.get('user') or user, |
|
1744 |
opts.get('date') or date |
|
|
1747 | opts.get('date') or date, | |
|
1748 | editor=cmdutil.commiteditor) | |
|
1745 | 1749 | if opts.get('exact'): |
|
1746 | 1750 | if hex(n) != nodeid: |
|
1747 | 1751 | repo.rollback() |
@@ -768,7 +768,7 b' class localrepository(repo.repository):' | |||
|
768 | 768 | return fparent1 |
|
769 | 769 | |
|
770 | 770 | def commit(self, files=None, text="", user=None, date=None, match=None, |
|
771 |
force=False, |
|
|
771 | force=False, editor=False, extra={}): | |
|
772 | 772 | wlock = lock = None |
|
773 | 773 | if extra.get("close"): |
|
774 | 774 | force = True |
@@ -811,7 +811,7 b' class localrepository(repo.repository):' | |||
|
811 | 811 | "(see hg resolve)")) |
|
812 | 812 | wctx = context.workingctx(self, (p1, p2), text, user, date, |
|
813 | 813 | extra, changes) |
|
814 |
r = self._commitctx(wctx, force, |
|
|
814 | r = self._commitctx(wctx, force, editor, True) | |
|
815 | 815 | ms.reset() |
|
816 | 816 | return r |
|
817 | 817 | |
@@ -824,11 +824,9 b' class localrepository(repo.repository):' | |||
|
824 | 824 | Revision information is passed in the context.memctx argument. |
|
825 | 825 | commitctx() does not touch the working directory. |
|
826 | 826 | """ |
|
827 |
return self._commitctx(ctx, force=True, |
|
|
828 | empty_ok=True, working=False) | |
|
827 | return self._commitctx(ctx, force=True, editor=None, working=False) | |
|
829 | 828 | |
|
830 |
def _commitctx(self, ctx, force=False, |
|
|
831 | working=True): | |
|
829 | def _commitctx(self, ctx, force=False, editor=None, working=True): | |
|
832 | 830 | lock = self.lock() |
|
833 | 831 | tr = None |
|
834 | 832 | valid = 0 # don't save the dirstate if this isn't set |
@@ -895,39 +893,12 b' class localrepository(repo.repository):' | |||
|
895 | 893 | mn = self.manifest.add(m1, trp, linkrev, c1[0], c2[0], |
|
896 | 894 | (new, removed1)) |
|
897 | 895 | |
|
898 |
|
|
|
899 | if (not empty_ok and not text) or force_editor: | |
|
900 | edittext = [] | |
|
901 | if text: | |
|
902 | edittext.append(text) | |
|
903 | edittext.append("") | |
|
904 | edittext.append("") # Empty line between message and comments. | |
|
905 | edittext.append(_("HG: Enter commit message." | |
|
906 | " Lines beginning with 'HG:' are removed.")) | |
|
907 | edittext.append("HG: --") | |
|
908 | edittext.append(_("HG: user: %s") % user) | |
|
909 | if p2 != nullid: | |
|
910 | edittext.append(_("HG: branch merge")) | |
|
911 | if branchname: | |
|
912 | edittext.append(_("HG: branch '%s'") | |
|
913 | % encoding.tolocal(branchname)) | |
|
914 | edittext.extend([_("HG: added %s") % f for f in added]) | |
|
915 | edittext.extend([_("HG: changed %s") % f for f in updated]) | |
|
916 | edittext.extend([_("HG: removed %s") % f for f in removed]) | |
|
917 | if not added and not updated and not removed: | |
|
918 | edittext.append(_("HG: no files changed")) | |
|
919 | edittext.append("") | |
|
920 | # run editor in the repository root | |
|
921 | olddir = os.getcwd() | |
|
922 | os.chdir(self.root) | |
|
923 | text = self.ui.edit("\n".join(edittext), user) | |
|
924 | os.chdir(olddir) | |
|
896 | if editor: | |
|
897 | text = editor(self, ctx, added, updated, removed) | |
|
925 | 898 | |
|
926 | 899 | lines = [line.rstrip() for line in text.rstrip().splitlines()] |
|
927 | 900 | while lines and not lines[0]: |
|
928 | 901 | del lines[0] |
|
929 | if not lines and working: | |
|
930 | raise util.Abort(_("empty commit message")) | |
|
931 | 902 | text = '\n'.join(lines) |
|
932 | 903 | |
|
933 | 904 | self.changelog.delayupdate() |
General Comments 0
You need to be logged in to leave comments.
Login now