hgext/histedit.py
changeset 17642 bea381c16809
parent 17641 811a657fae48
child 17643 64e0f0cfb569
equal deleted inserted replaced
17641:811a657fae48 17642:bea381c16809
   192         files = set()
   192         files = set()
   193         patch.patch(ui, repo, patchfile, files=files, eolmode=None)
   193         patch.patch(ui, repo, patchfile, files=files, eolmode=None)
   194     finally:
   194     finally:
   195         os.unlink(patchfile)
   195         os.unlink(patchfile)
   196     return files
   196     return files
   197 
       
   198 def between(repo, old, new, keep):
       
   199     """select and validate the set of revision to edit
       
   200 
       
   201     When keep is false, the specified set can't have children."""
       
   202     revs = [old]
       
   203     current = old
       
   204     while current != new:
       
   205         ctx = repo[current]
       
   206         if not keep and len(ctx.children()) > 1:
       
   207             raise util.Abort(_('cannot edit history that would orphan nodes'))
       
   208         if len(ctx.parents()) != 1 and ctx.parents()[1] != node.nullid:
       
   209             raise util.Abort(_("can't edit history with merges"))
       
   210         if not ctx.children():
       
   211             current = new
       
   212         else:
       
   213             current = ctx.children()[0].node()
       
   214             revs.append(current)
       
   215     if len(repo[current].children()) and not keep:
       
   216         raise util.Abort(_('cannot edit history that would orphan nodes'))
       
   217     return revs
       
   218 
       
   219 
   197 
   220 def pick(ui, repo, ctx, ha, opts):
   198 def pick(ui, repo, ctx, ha, opts):
   221     oldctx = repo[ha]
   199     oldctx = repo[ha]
   222     if oldctx.parents()[0] == ctx:
   200     if oldctx.parents()[0] == ctx:
   223         ui.debug('node %s unchanged\n' % ha)
   201         ui.debug('node %s unchanged\n' % ha)
   623     os.unlink(os.path.join(repo.path, 'histedit-state'))
   601     os.unlink(os.path.join(repo.path, 'histedit-state'))
   624     if os.path.exists(repo.sjoin('undo')):
   602     if os.path.exists(repo.sjoin('undo')):
   625         os.unlink(repo.sjoin('undo'))
   603         os.unlink(repo.sjoin('undo'))
   626 
   604 
   627 
   605 
       
   606 def between(repo, old, new, keep):
       
   607     """select and validate the set of revision to edit
       
   608 
       
   609     When keep is false, the specified set can't have children."""
       
   610     revs = [old]
       
   611     current = old
       
   612     while current != new:
       
   613         ctx = repo[current]
       
   614         if not keep and len(ctx.children()) > 1:
       
   615             raise util.Abort(_('cannot edit history that would orphan nodes'))
       
   616         if len(ctx.parents()) != 1 and ctx.parents()[1] != node.nullid:
       
   617             raise util.Abort(_("can't edit history with merges"))
       
   618         if not ctx.children():
       
   619             current = new
       
   620         else:
       
   621             current = ctx.children()[0].node()
       
   622             revs.append(current)
       
   623     if len(repo[current].children()) and not keep:
       
   624         raise util.Abort(_('cannot edit history that would orphan nodes'))
       
   625     return revs
       
   626 
       
   627 
   628 def writestate(repo, parentctxnode, created, replaced,
   628 def writestate(repo, parentctxnode, created, replaced,
   629                tmpnodes, existing, rules, keep, oldtip, replacemap):
   629                tmpnodes, existing, rules, keep, oldtip, replacemap):
   630     fp = open(os.path.join(repo.path, 'histedit-state'), 'w')
   630     fp = open(os.path.join(repo.path, 'histedit-state'), 'w')
   631     pickle.dump((parentctxnode, created, replaced,
   631     pickle.dump((parentctxnode, created, replaced,
   632                  tmpnodes, existing, rules, keep, oldtip, replacemap),
   632                  tmpnodes, existing, rules, keep, oldtip, replacemap),