[PATCH 3 of 9 phases] phases: add rollback support
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Mon Nov 7 11:43:15 CST 2011
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1320665245 -3600
# Node ID d43b2f573a95d9a6393e0dac145fa1e08b991540
# Parent a0fe3423a8529ef611dc1439bcc243f2e6781691
phases: add rollback support
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -758,10 +758,16 @@
util.copyfile(bkname, self.join('journal.bookmarks'))
else:
self.opener.write('journal.bookmarks', '')
+ phasesname = self.sjoin('phaseroots')
+ if os.path.exists(phasesname):
+ util.copyfile(phasesname, self.sjoin('journal.phaseroots'))
+ else:
+ self.sopener.write('journal.phaseroots', '')
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.phaseroots'))
def recover(self):
lock = self.lock()
@@ -826,6 +832,9 @@
if os.path.exists(self.join('undo.bookmarks')):
util.rename(self.join('undo.bookmarks'),
self.join('bookmarks'))
+ if os.path.exists(self.sjoin('undo.phaseroots')):
+ util.rename(self.sjoin('undo.phaseroots'),
+ self.sjoin('phaseroots'))
self.invalidate()
parentgone = (parents[0] not in self.changelog.nodemap or
diff --git a/tests/test-fncache.t b/tests/test-fncache.t
--- a/tests/test-fncache.t
+++ b/tests/test-fncache.t
@@ -80,6 +80,7 @@
.hg/undo.branch
.hg/undo.desc
.hg/undo.dirstate
+ .hg/undo.phaseroots
$ cd ..
Non fncache repo:
@@ -103,6 +104,7 @@
.hg/store/data/tst.d.hg
.hg/store/data/tst.d.hg/_foo.i
.hg/store/undo
+ .hg/store/undo.phaseroots
.hg/undo.bookmarks
.hg/undo.branch
.hg/undo.desc
diff --git a/tests/test-hardlinks.t b/tests/test-hardlinks.t
--- a/tests/test-hardlinks.t
+++ b/tests/test-hardlinks.t
@@ -46,6 +46,7 @@
1 r1/.hg/store/data/f1.i
1 r1/.hg/store/fncache
1 r1/.hg/store/undo
+ 1 r1/.hg/store/undo.phaseroots
Create hardlinked clone r2:
@@ -74,6 +75,7 @@
2 r1/.hg/store/data/f1.i
2 r1/.hg/store/fncache
1 r1/.hg/store/undo
+ 1 r1/.hg/store/undo.phaseroots
$ nlinksdir r2/.hg/store
2 r2/.hg/store/00changelog.i
@@ -91,6 +93,7 @@
1 r3/.hg/store/data/f1.i
1 r3/.hg/store/fncache
1 r3/.hg/store/undo
+ 1 r3/.hg/store/undo.phaseroots
Create a non-inlined filelog in r3:
@@ -111,6 +114,7 @@
1 r3/.hg/store/data/f1.i
1 r3/.hg/store/fncache
1 r3/.hg/store/undo
+ 1 r3/.hg/store/undo.phaseroots
Push to repo r1 should break up most hardlinks in r2:
@@ -194,6 +198,7 @@
2 r4/.hg/store/data/f1.i
2 r4/.hg/store/fncache
2 r4/.hg/store/undo
+ 2 r4/.hg/store/undo.phaseroots
2 r4/.hg/undo.bookmarks
2 r4/.hg/undo.branch
2 r4/.hg/undo.desc
@@ -223,6 +228,7 @@
2 r4/.hg/store/data/f1.i
2 r4/.hg/store/fncache
2 r4/.hg/store/undo
+ 2 r4/.hg/store/undo.phaseroots
2 r4/.hg/undo.bookmarks
2 r4/.hg/undo.branch
2 r4/.hg/undo.desc
diff --git a/tests/test-hup.t b/tests/test-hup.t
--- a/tests/test-hup.t
+++ b/tests/test-hup.t
@@ -17,4 +17,4 @@
rollback completed
killed!
$ echo .hg/* .hg/store/*
- .hg/00changelog.i .hg/journal.bookmarks .hg/journal.branch .hg/journal.desc .hg/journal.dirstate .hg/requires .hg/store .hg/store/00changelog.i .hg/store/00changelog.i.a
+ .hg/00changelog.i .hg/journal.bookmarks .hg/journal.branch .hg/journal.desc .hg/journal.dirstate .hg/requires .hg/store .hg/store/00changelog.i .hg/store/00changelog.i.a .hg/store/journal.phaseroots
diff --git a/tests/test-inherit-mode.t b/tests/test-inherit-mode.t
--- a/tests/test-inherit-mode.t
+++ b/tests/test-inherit-mode.t
@@ -77,6 +77,7 @@
00660 ./.hg/store/data/foo.i
00660 ./.hg/store/fncache
00660 ./.hg/store/undo
+ 00660 ./.hg/store/undo.phaseroots
00660 ./.hg/undo.bookmarks
00660 ./.hg/undo.branch
00660 ./.hg/undo.desc
@@ -118,6 +119,7 @@
00660 ../push/.hg/store/data/foo.i
00660 ../push/.hg/store/fncache
00660 ../push/.hg/store/undo
+ 00660 ../push/.hg/store/undo.phaseroots
00660 ../push/.hg/undo.bookmarks
00660 ../push/.hg/undo.branch
00660 ../push/.hg/undo.desc
More information about the Mercurial-devel
mailing list