hgext/evolve.py
branchstable
changeset 699 dba3ed9f2c4f
parent 696 121e2d265e85
child 701 f752089479ce
--- a/hgext/evolve.py	Fri Feb 08 21:27:48 2013 +0000
+++ b/hgext/evolve.py	Fri Feb 08 21:43:00 2013 +0000
@@ -753,17 +753,7 @@
         newid = repo.commitctx(new)
         new = repo[newid]
         created = len(repo) != revcount
-        if created:
-            updatebookmarks(newid)
-            # add evolution metadata
-            markers = [(u, (new,)) for u in updates]
-            markers.append((old, (new,)))
-            createmarkers(repo, markers)
-        else:
-            # newid is an existing revision. It could make sense to
-            # replace revisions with existing ones but probably not by
-            # default.
-            pass
+        updatebookmarks(newid)
     finally:
         wlock.release()
 
@@ -1387,6 +1377,11 @@
                     opts['force_editor'] = True
                 newid, created = rewrite(repo, old, updates, head,
                                          [old.p1().node(), old.p2().node()], opts)
+
+                if newid != old.node():
+                    createmarkers(repo, [(old, (repo[newid],))])
+                if tempid is not None:
+                    createmarkers(repo, [(repo[tempid], ())])
                 if created:
                     # reroute the working copy parent to the new changeset
                     phases.retractboundary(repo, oldphase, [newid])
@@ -1395,8 +1390,6 @@
                     # rewrite() recreated an existing revision, discard
                     # the intermediate revision if any. No need to update
                     # phases or parents.
-                    if tempid is not None:
-                        createmarkers(repo, [(repo[tempid], ())])
                     # XXX: need another message in collapse case.
                     tr.close()
                     raise error.Abort(_('no updates found'))