[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