hgext/rebase.py
changeset 17612 fc2a6114f0a0
parent 17611 910123eac887
child 17613 aafc521668d8
--- a/hgext/rebase.py	Tue Sep 18 22:58:12 2012 +0200
+++ b/hgext/rebase.py	Tue Sep 18 23:13:31 2012 +0200
@@ -15,7 +15,7 @@
 '''
 
 from mercurial import hg, util, repair, merge, cmdutil, commands, bookmarks
-from mercurial import extensions, patch, scmutil, phases
+from mercurial import extensions, patch, scmutil, phases, obsolete
 from mercurial.commands import templateopts
 from mercurial.node import nullrev
 from mercurial.lock import release
@@ -658,14 +658,22 @@
 
 def clearrebased(ui, repo, state):
     """dispose of rebased revision at the end of the rebase"""
-    rebased = [rev for rev in state if state[rev] != nullmerge]
-    if rebased:
-        if set(repo.changelog.descendants([min(rebased)])) - set(state):
-            ui.warn(_("warning: new changesets detected "
-                      "on source branch, not stripping\n"))
-        else:
-            # backup the old csets by default
-            repair.strip(ui, repo, repo[min(rebased)].node(), "all")
+    if obsolete._enabled:
+        markers = []
+        for rev, newrev in sorted(state.items()):
+            if newrev >= 0:
+                markers.append((repo[rev], (repo[newrev],)))
+        if markers:
+            obsolete.createmarkers(repo, markers)
+    else:
+        rebased = [rev for rev in state if state[rev] != nullmerge]
+        if rebased:
+            if set(repo.changelog.descendants([min(rebased)])) - set(state):
+                ui.warn(_("warning: new changesets detected "
+                          "on source branch, not stripping\n"))
+            else:
+                # backup the old csets by default
+                repair.strip(ui, repo, repo[min(rebased)].node(), "all")
 
 
 def pullrebase(orig, ui, repo, *args, **opts):