[PATCH 2 of 5 REVIEW] phases: add rollback support

pierre-yves.david at logilab.fr pierre-yves.david at logilab.fr
Wed Oct 19 05:27:20 CDT 2011


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1319019671 -7200
# Node ID e1395c636c0e7e783e77158f1fb8dc1e610cb209
# Parent  585d4afe4752a33eb02ec3c03dd626e1d7e87317
phases: add rollback support

diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -757,14 +757,20 @@ class localrepository(repo.repository):
         bkname = self.join('bookmarks')
         if os.path.exists(bkname):
             util.copyfile(bkname, self.join('journal.bookmarks'))
         else:
             self.opener.write('journal.bookmarks', '')
+        phasesname = self.sjoin('phaseheads')
+        if os.path.exists(phasesname):
+            util.copyfile(phasesname, self.sjoin('journal.phaseheads'))
+        else:
+            self.sopener.write('journal.phaseheads', '')
 
         return (self.sjoin('journal'), self.join('journal.dirstate'),
                 self.join('journal.branch'), self.join('journal.desc'),
-                self.join('journal.bookmarks'))
+                self.join('journal.bookmarks'),
+                self.sjoin('journal.phaseheads'))
 
     def recover(self):
         lock = self.lock()
         try:
             if os.path.exists(self.sjoin("journal")):
@@ -825,10 +831,13 @@ class localrepository(repo.repository):
         parents = self.dirstate.parents()
         transaction.rollback(self.sopener, self.sjoin('undo'), ui.warn)
         if os.path.exists(self.join('undo.bookmarks')):
             util.rename(self.join('undo.bookmarks'),
                         self.join('bookmarks'))
+        if os.path.exists(self.sjoin('undo.phaseheads')):
+            util.rename(self.sjoin('undo.phaseheads'),
+                        self.sjoin('phaseheads'))
         self.invalidate()
 
         parentgone = (parents[0] not in self.changelog.nodemap or
                       parents[1] not in self.changelog.nodemap)
         if parentgone:


More information about the Mercurial-devel mailing list