84 rebasenode(repo, rev, target, state, skipped, targetancestors, |
84 rebasenode(repo, rev, target, state, skipped, targetancestors, |
85 collapsef) |
85 collapsef) |
86 ui.note(_('rebase merging completed\n')) |
86 ui.note(_('rebase merging completed\n')) |
87 |
87 |
88 if collapsef: |
88 if collapsef: |
89 p1, p2 = defineparents(repo, min(state), target, |
89 p1, p2 = defineparents(repo, min(state), target, |
90 state, targetancestors) |
90 state, targetancestors) |
91 concludenode(repo, rev, p1, external, state, collapsef, |
91 concludenode(repo, rev, p1, external, state, collapsef, |
92 last=True, skipped=skipped) |
92 last=True, skipped=skipped) |
93 |
93 |
94 if 'qtip' in repo.tags(): |
94 if 'qtip' in repo.tags(): |
95 updatemq(repo, state, skipped, **opts) |
95 updatemq(repo, state, skipped, **opts) |
96 |
96 |
97 if not opts.get('keep'): |
97 if not opts.get('keep'): |
98 # Remove no more useful revisions |
98 # Remove no more useful revisions |
99 if (util.set(repo.changelog.descendants(min(state))) |
99 if (util.set(repo.changelog.descendants(min(state))) |
100 - util.set(state.keys())): |
100 - util.set(state.keys())): |
101 ui.warn(_("warning: new changesets detected on source branch, " |
101 ui.warn(_("warning: new changesets detected on source branch, " |
102 "not stripping\n")) |
102 "not stripping\n")) |
103 else: |
103 else: |
104 repair.strip(repo.ui, repo, repo[min(state)].node(), "strip") |
104 repair.strip(repo.ui, repo, repo[min(state)].node(), "strip") |
172 if not collapse: |
172 if not collapse: |
173 repo.ui.note('no changes, revision %d skipped\n' % rev) |
173 repo.ui.note('no changes, revision %d skipped\n' % rev) |
174 repo.ui.debug('next revision set to %s\n' % p1) |
174 repo.ui.debug('next revision set to %s\n' % p1) |
175 skipped[rev] = True |
175 skipped[rev] = True |
176 state[rev] = p1 |
176 state[rev] = p1 |
177 |
177 |
178 def defineparents(repo, rev, target, state, targetancestors): |
178 def defineparents(repo, rev, target, state, targetancestors): |
179 'Return the new parent relationship of the revision that will be rebased' |
179 'Return the new parent relationship of the revision that will be rebased' |
180 parents = repo[rev].parents() |
180 parents = repo[rev].parents() |
181 p1 = p2 = nullrev |
181 p1 = p2 = nullrev |
182 |
182 |
222 mq.reverse() |
222 mq.reverse() |
223 for rev in mq: |
223 for rev in mq: |
224 if rev not in skipped: |
224 if rev not in skipped: |
225 repo.ui.debug('import mq patch %d (%s)\n' % (state[rev], |
225 repo.ui.debug('import mq patch %d (%s)\n' % (state[rev], |
226 mqrebase[rev])) |
226 mqrebase[rev])) |
227 repo.mq.qimport(repo, (), patchname=mqrebase[rev], |
227 repo.mq.qimport(repo, (), patchname=mqrebase[rev], |
228 git=opts.get('git', False),rev=[str(state[rev])]) |
228 git=opts.get('git', False),rev=[str(state[rev])]) |
229 repo.mq.save_dirty() |
229 repo.mq.save_dirty() |
230 |
230 |
231 def storestatus(repo, originalwd, target, state, collapse, external): |
231 def storestatus(repo, originalwd, target, state, collapse, external): |
232 'Store the current status to allow recovery' |
232 'Store the current status to allow recovery' |
328 |
328 |
329 cwdancestors = util.set(repo.changelog.ancestors(cwd)) |
329 cwdancestors = util.set(repo.changelog.ancestors(cwd)) |
330 cwdancestors.add(cwd) |
330 cwdancestors.add(cwd) |
331 rebasingbranch = cwdancestors - targetancestors |
331 rebasingbranch = cwdancestors - targetancestors |
332 source = min(rebasingbranch) |
332 source = min(rebasingbranch) |
333 |
333 |
334 repo.ui.debug(_('rebase onto %d starting from %d\n') % (dest, source)) |
334 repo.ui.debug(_('rebase onto %d starting from %d\n') % (dest, source)) |
335 state = dict.fromkeys(repo.changelog.descendants(source), nullrev) |
335 state = dict.fromkeys(repo.changelog.descendants(source), nullrev) |
336 external = nullrev |
336 external = nullrev |
337 if collapse: |
337 if collapse: |
338 if not targetancestors: |
338 if not targetancestors: |
377 decorator = lambda ui, repo, *args, **opts: \ |
377 decorator = lambda ui, repo, *args, **opts: \ |
378 pulldelegate(cmdentry[0], repo, *args, **opts) |
378 pulldelegate(cmdentry[0], repo, *args, **opts) |
379 # make sure 'hg help cmd' still works |
379 # make sure 'hg help cmd' still works |
380 decorator.__doc__ = cmdentry[0].__doc__ |
380 decorator.__doc__ = cmdentry[0].__doc__ |
381 decoratorentry = (decorator,) + cmdentry[1:] |
381 decoratorentry = (decorator,) + cmdentry[1:] |
382 rebaseopt = ('', 'rebase', None, |
382 rebaseopt = ('', 'rebase', None, |
383 _("rebase working directory to branch head")) |
383 _("rebase working directory to branch head")) |
384 decoratorentry[1].append(rebaseopt) |
384 decoratorentry[1].append(rebaseopt) |
385 commands.table[cmdkey] = decoratorentry |
385 commands.table[cmdkey] = decoratorentry |
386 |
386 |
387 cmdtable = { |
387 cmdtable = { |