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]) |