[PATCH 03 of 18] phases: add rollback support

pierre-yves.david at logilab.fr pierre-yves.david at logilab.fr
Mon Oct 10 07:27:59 CDT 2011


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1318171962 -7200
# Node ID c48674734436d256c467145bc5acaa6fa675b887
# Parent  a021813a715118f511262e67a3b80179207efe5b
phases: add rollback support.

diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -736,14 +736,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('phases-heads')
+        if os.path.exists(phasesname):
+            util.copyfile(phasesname, self.sjoin('journal.phases-heads'))
+        else:
+            self.sopener.write('journal.phases-heads', '')
 
         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.phases-heads'))
 
     def recover(self):
         lock = self.lock()
         try:
             if os.path.exists(self.sjoin("journal")):
@@ -804,10 +810,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.phases-heads')):
+            util.rename(self.sjoin('undo.phases-heads'),
+                        self.sjoin('phases-heads'))
         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