[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