comparison hgext/evolve.py @ 1171:d14537d7dca9

merge with stable
author Pierre-Yves David <pierre-yves.david@fb.com>
date Thu, 20 Nov 2014 15:34:34 -0800
parents 4697f23e0ede 2187f7c88ff6
children 8d28bb4fc127
comparison
equal deleted inserted replaced
1170:4697f23e0ede 1171:d14537d7dca9
17 - alters core commands and extensions that rewrite history to use 17 - alters core commands and extensions that rewrite history to use
18 this feature, 18 this feature,
19 - improves some aspect of the early implementation in Mercurial core 19 - improves some aspect of the early implementation in Mercurial core
20 ''' 20 '''
21 21
22 __version__ = '5.1.0' 22 __version__ = '5.0.0'
23 testedwith = '3.2' 23 testedwith = '3.2'
24 buglink = 'http://bz.selenic.com/' 24 buglink = 'http://bz.selenic.com/'
25 25
26 import sys, os 26 import sys, os
27 import random 27 import random
882 882
883 @eh.uisetup 883 @eh.uisetup
884 def _installimportobsolete(ui): 884 def _installimportobsolete(ui):
885 entry = cmdutil.findcmd('import', commands.table)[1] 885 entry = cmdutil.findcmd('import', commands.table)[1]
886 entry[1].append(('', 'obsolete', False, 886 entry[1].append(('', 'obsolete', False,
887 _('mark the old node as obsoleted by' 887 _('mark the old node as obsoleted by '
888 'the created commit'))) 888 'the created commit')))
889 889
890 @eh.wrapfunction(mercurial.cmdutil, 'tryimportone') 890 @eh.wrapfunction(mercurial.cmdutil, 'tryimportone')
891 def tryimportone(orig, ui, repo, hunk, parents, opts, *args, **kwargs): 891 def tryimportone(orig, ui, repo, hunk, parents, opts, *args, **kwargs):
892 extracted = patch.extract(ui, hunk) 892 extracted = patch.extract(ui, hunk)
1116 '(implies any)'), 1116 '(implies any)'),
1117 ('c', 'continue', False, 'continue an interrupted evolution'), 1117 ('c', 'continue', False, 'continue an interrupted evolution'),
1118 ] + mergetoolopts, 1118 ] + mergetoolopts,
1119 _('[OPTIONS]...')) 1119 _('[OPTIONS]...'))
1120 def evolve(ui, repo, **opts): 1120 def evolve(ui, repo, **opts):
1121 """Solve trouble in your repository 1121 """solve trouble in your repository
1122 1122
1123 - rebase unstable changesets to make them stable again, 1123 - rebase unstable changesets to make them stable again,
1124 - create proper diffs from bumped changesets, 1124 - create proper diffs from bumped changesets,
1125 - merge divergent changesets, 1125 - merge divergent changesets,
1126 - update to a successor if the working directory parent is 1126 - update to a successor if the working directory parent is
1582 1582
1583 1583
1584 shorttemplate = '[{rev}] {desc|firstline}\n' 1584 shorttemplate = '[{rev}] {desc|firstline}\n'
1585 1585
1586 @command('^previous', 1586 @command('^previous',
1587 [], 1587 [('B', 'move-bookmark', False,
1588 '') 1588 _('Move current active bookmark after update'))],
1589 def cmdprevious(ui, repo): 1589 '[-B]')
1590 def cmdprevious(ui, repo, **opts):
1590 """update to parent and display summary lines""" 1591 """update to parent and display summary lines"""
1591 wkctx = repo[None] 1592 wkctx = repo[None]
1592 wparents = wkctx.parents() 1593 wparents = wkctx.parents()
1593 if len(wparents) != 1: 1594 if len(wparents) != 1:
1594 raise util.Abort('merge in progress') 1595 raise util.Abort('merge in progress')
1596 parents = wparents[0].parents() 1597 parents = wparents[0].parents()
1597 displayer = cmdutil.show_changeset(ui, repo, {'template': shorttemplate}) 1598 displayer = cmdutil.show_changeset(ui, repo, {'template': shorttemplate})
1598 if len(parents) == 1: 1599 if len(parents) == 1:
1599 p = parents[0] 1600 p = parents[0]
1600 bm = bookmarks.readcurrent(repo) 1601 bm = bookmarks.readcurrent(repo)
1601 shouldmove = bm is not None and bookmarks.iscurrent(repo, bm) 1602 shouldmove = opts.get('move_bookmark') and bm is not None
1602 ret = hg.update(repo, p.rev()) 1603 ret = hg.update(repo, p.rev())
1603 if not ret and shouldmove: 1604 if not ret:
1604 repo._bookmarks[bm] = p.node() 1605 if shouldmove:
1605 repo._bookmarks.write() 1606 repo._bookmarks[bm] = p.node()
1607 repo._bookmarks.write()
1608 else:
1609 bookmarks.unsetcurrent(repo)
1606 displayer.show(p) 1610 displayer.show(p)
1607 return 0 1611 return 0
1608 else: 1612 else:
1609 for p in parents: 1613 for p in parents:
1610 displayer.show(p) 1614 displayer.show(p)
1611 ui.warn(_('multiple parents, explicitly update to one\n')) 1615 ui.warn(_('multiple parents, explicitly update to one\n'))
1612 return 1 1616 return 1
1613 1617
1614 @command('^next', 1618 @command('^next',
1615 [], 1619 [('B', 'move-bookmark', False,
1616 '') 1620 _('Move current active bookmark after update'))],
1617 def cmdnext(ui, repo): 1621 '[-B]')
1622 def cmdnext(ui, repo, **opts):
1618 """update to child and display summary lines""" 1623 """update to child and display summary lines"""
1619 wkctx = repo[None] 1624 wkctx = repo[None]
1620 wparents = wkctx.parents() 1625 wparents = wkctx.parents()
1621 if len(wparents) != 1: 1626 if len(wparents) != 1:
1622 raise util.Abort('merge in progress') 1627 raise util.Abort('merge in progress')
1627 ui.warn(_('no non-obsolete children\n')) 1632 ui.warn(_('no non-obsolete children\n'))
1628 return 1 1633 return 1
1629 if len(children) == 1: 1634 if len(children) == 1:
1630 c = children[0] 1635 c = children[0]
1631 bm = bookmarks.readcurrent(repo) 1636 bm = bookmarks.readcurrent(repo)
1632 shouldmove = bm is not None and bookmarks.iscurrent(repo, bm) 1637 shouldmove = opts.get('move_bookmark') and bm is not None
1633 ret = hg.update(repo, c.rev()) 1638 ret = hg.update(repo, c.rev())
1634 if not ret and shouldmove: 1639 if not ret:
1635 repo._bookmarks[bm] = c.node() 1640 if shouldmove:
1636 repo._bookmarks.write() 1641 repo._bookmarks[bm] = c.node()
1642 repo._bookmarks.write()
1643 else:
1644 bookmarks.unsetcurrent(repo)
1637 displayer.show(c) 1645 displayer.show(c)
1638 return 0 1646 return 0
1639 else: 1647 else:
1640 for c in children: 1648 for c in children:
1641 displayer.show(c) 1649 displayer.show(c)
2052 ('D', 'duplicate', False, 2060 ('D', 'duplicate', False,
2053 'do not mark the new revision as successor of the old one')], 2061 'do not mark the new revision as successor of the old one')],
2054 # allow to choose the seed ? 2062 # allow to choose the seed ?
2055 _('[-r] revs')) 2063 _('[-r] revs'))
2056 def touch(ui, repo, *revs, **opts): 2064 def touch(ui, repo, *revs, **opts):
2057 """Create successors that are identical to their predecessors except for the changeset ID 2065 """create successors that are identical to their predecessors except for the changeset ID
2058 2066
2059 This is used to "resurrect" changesets 2067 This is used to "resurrect" changesets
2060 """ 2068 """
2061 duplicate = opts['duplicate'] 2069 duplicate = opts['duplicate']
2062 revs = list(revs) 2070 revs = list(revs)