hgext/evolve.py
changeset 463 3f91654713dd
parent 455 f46a41006136
child 464 d88c761f97c4
equal deleted inserted replaced
462:d38e02332c2c 463:3f91654713dd
   129     finally:
   129     finally:
   130         wlock.release()
   130         wlock.release()
   131 
   131 
   132     return newid, created
   132     return newid, created
   133 
   133 
       
   134 class MergeFailure(util.Abort):
       
   135     pass
       
   136 
   134 def relocate(repo, orig, dest):
   137 def relocate(repo, orig, dest):
   135     """rewrite <rev> on dest"""
   138     """rewrite <rev> on dest"""
   136     try:
   139     try:
   137         rebase = extensions.find('rebase')
   140         rebase = extensions.find('rebase')
   138         # dummy state to trick rebase node
   141         # dummy state to trick rebase node
   150             rebase.rebasenode(repo, orig.node(), dest.node(),
   153             rebase.rebasenode(repo, orig.node(), dest.node(),
   151                               {node.nullrev: node.nullrev})
   154                               {node.nullrev: node.nullrev})
   152         try:
   155         try:
   153             nodenew = rebase.concludenode(repo, orig.node(), dest.node(),
   156             nodenew = rebase.concludenode(repo, orig.node(), dest.node(),
   154                                           node.nullid)
   157                                           node.nullid)
   155         except util.Abort:
   158         except util.Abort, exc:
   156             repo.ui.write_err(_('/!\\ stabilize failed                          /!\\\n'))
   159             class LocalMergeFailure(MergeFailure, exc.__class__):
   157             repo.ui.write_err(_('/!\\ Their is no "hg stabilize --continue"     /!\\\n'))
   160                 pass
   158             repo.ui.write_err(_('/!\\ use "hg up -C . ; hg stabilize --dry-run" /!\\\n'))
   161             exc.__class__ = LocalMergeFailure
   159             raise
   162             raise
   160         oldbookmarks = repo.nodebookmarks(nodesrc)
   163         oldbookmarks = repo.nodebookmarks(nodesrc)
   161         obsolete = extensions.find('obsolete')
   164         obsolete = extensions.find('obsolete')
   162         if nodenew is not None:
   165         if nodenew is not None:
   163             phases.retractboundary(repo, destphase, [nodenew])
   166             phases.retractboundary(repo, destphase, [nodenew])
   284     else:
   287     else:
   285         repo.ui.note(todo)
   288         repo.ui.note(todo)
   286         lock = repo.lock()
   289         lock = repo.lock()
   287         try:
   290         try:
   288             relocate(repo, node, target)
   291             relocate(repo, node, target)
       
   292         except MergeFailure:
       
   293             repo.ui.write_err(_('/!\\ stabilize failed                          /!\\\n'))
       
   294             repo.ui.write_err(_('/!\\ Their is no "hg stabilize --continue"     /!\\\n'))
       
   295             repo.ui.write_err(_('/!\\ use "hg up -C . ; hg stabilize --dry-run" /!\\\n'))
       
   296             raise
   289         finally:
   297         finally:
   290             lock.release()
   298             lock.release()
   291 
   299 
   292 shorttemplate = '[{rev}] {desc|firstline}\n'
   300 shorttemplate = '[{rev}] {desc|firstline}\n'
   293 
   301