Mercurial > hg
comparison hgext/transplant.py @ 15220:f7db54b832af
transplant: add --edit option
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 10 Oct 2011 23:07:09 -0500 |
parents | 3ce9b1a7538b |
children | f2ba409dbb0f |
comparison
equal
deleted
inserted
replaced
15219:9d58569a8b92 | 15220:f7db54b832af |
---|---|
79 self.ui = ui | 79 self.ui = ui |
80 self.path = repo.join('transplant') | 80 self.path = repo.join('transplant') |
81 self.opener = scmutil.opener(self.path) | 81 self.opener = scmutil.opener(self.path) |
82 self.transplants = transplants(self.path, 'transplants', | 82 self.transplants = transplants(self.path, 'transplants', |
83 opener=self.opener) | 83 opener=self.opener) |
84 self.editor = None | |
84 | 85 |
85 def applied(self, repo, node, parent): | 86 def applied(self, repo, node, parent): |
86 '''returns True if a node is already an ancestor of parent | 87 '''returns True if a node is already an ancestor of parent |
87 or has already been transplanted''' | 88 or has already been transplanted''' |
88 if hasnode(repo, node): | 89 if hasnode(repo, node): |
255 repo.dirstate.setparents(p1, node) | 256 repo.dirstate.setparents(p1, node) |
256 m = match.always(repo.root, '') | 257 m = match.always(repo.root, '') |
257 else: | 258 else: |
258 m = match.exact(repo.root, '', files) | 259 m = match.exact(repo.root, '', files) |
259 | 260 |
260 n = repo.commit(message, user, date, extra=extra, match=m) | 261 n = repo.commit(message, user, date, extra=extra, match=m, |
262 editor=self.editor) | |
261 if not n: | 263 if not n: |
262 # Crash here to prevent an unclear crash later, in | 264 # Crash here to prevent an unclear crash later, in |
263 # transplants.write(). This can happen if patch.patch() | 265 # transplants.write(). This can happen if patch.patch() |
264 # does nothing but claims success or if repo.status() fails | 266 # does nothing but claims success or if repo.status() fails |
265 # to report changes done by patch.patch(). These both | 267 # to report changes done by patch.patch(). These both |
306 raise util.Abort( | 308 raise util.Abort( |
307 _('working dir not at transplant parent %s') % | 309 _('working dir not at transplant parent %s') % |
308 revlog.hex(parents[0])) | 310 revlog.hex(parents[0])) |
309 if merge: | 311 if merge: |
310 repo.dirstate.setparents(p1, parents[1]) | 312 repo.dirstate.setparents(p1, parents[1]) |
311 n = repo.commit(message, user, date, extra=extra) | 313 n = repo.commit(message, user, date, extra=extra, |
314 editor=self.editor) | |
312 if not n: | 315 if not n: |
313 raise util.Abort(_('commit failed')) | 316 raise util.Abort(_('commit failed')) |
314 if not merge: | 317 if not merge: |
315 self.transplants.set(n, node) | 318 self.transplants.set(n, node) |
316 self.unlog() | 319 self.unlog() |
463 ('b', 'branch', [], | 466 ('b', 'branch', [], |
464 _('pull patches from branch BRANCH'), _('BRANCH')), | 467 _('pull patches from branch BRANCH'), _('BRANCH')), |
465 ('a', 'all', None, _('pull all changesets up to BRANCH')), | 468 ('a', 'all', None, _('pull all changesets up to BRANCH')), |
466 ('p', 'prune', [], _('skip over REV'), _('REV')), | 469 ('p', 'prune', [], _('skip over REV'), _('REV')), |
467 ('m', 'merge', [], _('merge at REV'), _('REV')), | 470 ('m', 'merge', [], _('merge at REV'), _('REV')), |
471 ('e', 'edit', False, _('invoke editor on commit messages')), | |
468 ('', 'log', None, _('append transplant info to log message')), | 472 ('', 'log', None, _('append transplant info to log message')), |
469 ('c', 'continue', None, _('continue last transplant session ' | 473 ('c', 'continue', None, _('continue last transplant session ' |
470 'after repair')), | 474 'after repair')), |
471 ('', 'filter', '', | 475 ('', 'filter', '', |
472 _('filter changesets through command'), _('CMD'))], | 476 _('filter changesets through command'), _('CMD'))], |
551 opts['log'] = ui.config('transplant', 'log') | 555 opts['log'] = ui.config('transplant', 'log') |
552 if not opts.get('filter'): | 556 if not opts.get('filter'): |
553 opts['filter'] = ui.config('transplant', 'filter') | 557 opts['filter'] = ui.config('transplant', 'filter') |
554 | 558 |
555 tp = transplanter(ui, repo) | 559 tp = transplanter(ui, repo) |
560 if opts.get('edit'): | |
561 tp.editor = cmdutil.commitforceeditor | |
556 | 562 |
557 p1, p2 = repo.dirstate.parents() | 563 p1, p2 = repo.dirstate.parents() |
558 if len(repo) > 0 and p1 == revlog.nullid: | 564 if len(repo) > 0 and p1 == revlog.nullid: |
559 raise util.Abort(_('no revision checked out')) | 565 raise util.Abort(_('no revision checked out')) |
560 if not opts.get('continue'): | 566 if not opts.get('continue'): |