Show More
@@ -71,14 +71,6 b' def write(repo):' | |||
|
71 | 71 | ''' |
|
72 | 72 | refs = repo._bookmarks |
|
73 | 73 | |
|
74 | try: | |
|
75 | bms = repo.opener.read('bookmarks') | |
|
76 | except IOError, inst: | |
|
77 | if inst.errno != errno.ENOENT: | |
|
78 | raise | |
|
79 | bms = '' | |
|
80 | repo.opener.write('undo.bookmarks', bms) | |
|
81 | ||
|
82 | 74 | if repo._bookmarkcurrent not in refs: |
|
83 | 75 | setcurrent(repo, None) |
|
84 | 76 | for mark in refs.keys(): |
@@ -674,6 +674,17 b' class localrepository(repo.repository):' | |||
|
674 | 674 | raise error.RepoError( |
|
675 | 675 | _("abandoned transaction found - run hg recover")) |
|
676 | 676 | |
|
677 | journalfiles = self._writejournal(desc) | |
|
678 | renames = [(x, undoname(x)) for x in journalfiles] | |
|
679 | ||
|
680 | tr = transaction.transaction(self.ui.warn, self.sopener, | |
|
681 | self.sjoin("journal"), | |
|
682 | aftertrans(renames), | |
|
683 | self.store.createmode) | |
|
684 | self._transref = weakref.ref(tr) | |
|
685 | return tr | |
|
686 | ||
|
687 | def _writejournal(self, desc): | |
|
677 | 688 | # save dirstate for rollback |
|
678 | 689 | try: |
|
679 | 690 | ds = self.opener.read("dirstate") |
@@ -685,16 +696,15 b' class localrepository(repo.repository):' | |||
|
685 | 696 | self.opener.write("journal.desc", |
|
686 | 697 | "%d\n%s\n" % (len(self), desc)) |
|
687 | 698 | |
|
688 | renames = [(self.sjoin("journal"), self.sjoin("undo")), | |
|
689 | (self.join("journal.dirstate"), self.join("undo.dirstate")), | |
|
690 | (self.join("journal.branch"), self.join("undo.branch")), | |
|
691 | (self.join("journal.desc"), self.join("undo.desc"))] | |
|
692 | tr = transaction.transaction(self.ui.warn, self.sopener, | |
|
693 | self.sjoin("journal"), | |
|
694 | aftertrans(renames), | |
|
695 | self.store.createmode) | |
|
696 | self._transref = weakref.ref(tr) | |
|
697 | return tr | |
|
699 | bkname = self.join('bookmarks') | |
|
700 | if os.path.exists(bkname): | |
|
701 | util.copyfile(bkname, self.join('journal.bookmarks')) | |
|
702 | else: | |
|
703 | self.opener('journal.bookmarks', 'w').write('') | |
|
704 | ||
|
705 | return (self.sjoin('journal'), self.join('journal.dirstate'), | |
|
706 | self.join('journal.branch'), self.join('journal.desc'), | |
|
707 | self.join('journal.bookmarks')) | |
|
698 | 708 | |
|
699 | 709 | def recover(self): |
|
700 | 710 | lock = self.lock() |
@@ -1950,6 +1960,11 b' def aftertrans(files):' | |||
|
1950 | 1960 | util.rename(src, dest) |
|
1951 | 1961 | return a |
|
1952 | 1962 | |
|
1963 | def undoname(fn): | |
|
1964 | base, name = os.path.split(fn) | |
|
1965 | assert name.startswith('journal') | |
|
1966 | return os.path.join(base, name.replace('journal', 'undo', 1)) | |
|
1967 | ||
|
1953 | 1968 | def instance(ui, path, create): |
|
1954 | 1969 | return localrepository(ui, util.localpath(path), create) |
|
1955 | 1970 |
@@ -235,6 +235,7 b' the bookmark extension should be ignored' | |||
|
235 | 235 | Y 2:db815d6d32e6 |
|
236 | 236 | * Z 2:db815d6d32e6 |
|
237 | 237 | x y 2:db815d6d32e6 |
|
238 | ||
|
238 | 239 | test summary |
|
239 | 240 | |
|
240 | 241 | $ hg summary |
@@ -249,6 +250,22 b' test id' | |||
|
249 | 250 | $ hg id |
|
250 | 251 | db815d6d32e6 tip Y/Z/x y |
|
251 | 252 | |
|
253 | test rollback | |
|
254 | ||
|
255 | $ echo foo > f1 | |
|
256 | $ hg ci -Amr | |
|
257 | adding f1 | |
|
258 | $ hg bookmark -f Y -r 1 | |
|
259 | $ hg bookmark -f Z -r 1 | |
|
260 | $ hg rollback | |
|
261 | repository tip rolled back to revision 2 (undo commit) | |
|
262 | working directory now based on revision 2 | |
|
263 | $ hg bookmarks | |
|
264 | X2 1:925d80f479bb | |
|
265 | Y 2:db815d6d32e6 | |
|
266 | * Z 2:db815d6d32e6 | |
|
267 | x y 2:db815d6d32e6 | |
|
268 | ||
|
252 | 269 | test clone |
|
253 | 270 | |
|
254 | 271 | $ hg bookmarks |
@@ -76,6 +76,7 b' Non store repo:' | |||
|
76 | 76 | .hg/last-message.txt |
|
77 | 77 | .hg/requires |
|
78 | 78 | .hg/undo |
|
79 | .hg/undo.bookmarks | |
|
79 | 80 | .hg/undo.branch |
|
80 | 81 | .hg/undo.desc |
|
81 | 82 | .hg/undo.dirstate |
@@ -102,6 +103,7 b' Non fncache repo:' | |||
|
102 | 103 | .hg/store/data/tst.d.hg |
|
103 | 104 | .hg/store/data/tst.d.hg/_foo.i |
|
104 | 105 | .hg/store/undo |
|
106 | .hg/undo.bookmarks | |
|
105 | 107 | .hg/undo.branch |
|
106 | 108 | .hg/undo.desc |
|
107 | 109 | .hg/undo.dirstate |
@@ -194,6 +194,7 b' r4 has hardlinks in the working dir (not' | |||
|
194 | 194 | 2 r4/.hg/store/data/f1.i |
|
195 | 195 | 2 r4/.hg/store/fncache |
|
196 | 196 | 2 r4/.hg/store/undo |
|
197 | 2 r4/.hg/undo.bookmarks | |
|
197 | 198 | 2 r4/.hg/undo.branch |
|
198 | 199 | 2 r4/.hg/undo.desc |
|
199 | 200 | 2 r4/.hg/undo.dirstate |
@@ -222,6 +223,7 b' Update back to revision 11 in r4 should ' | |||
|
222 | 223 | 2 r4/.hg/store/data/f1.i |
|
223 | 224 | 2 r4/.hg/store/fncache |
|
224 | 225 | 2 r4/.hg/store/undo |
|
226 | 2 r4/.hg/undo.bookmarks | |
|
225 | 227 | 2 r4/.hg/undo.branch |
|
226 | 228 | 2 r4/.hg/undo.desc |
|
227 | 229 | 2 r4/.hg/undo.dirstate |
@@ -17,4 +17,4 b' Test hangup signal in the middle of tran' | |||
|
17 | 17 | rollback completed |
|
18 | 18 | killed! |
|
19 | 19 | $ echo .hg/* .hg/store/* |
|
20 | .hg/00changelog.i .hg/journal.branch .hg/journal.desc .hg/journal.dirstate .hg/requires .hg/store .hg/store/00changelog.i .hg/store/00changelog.i.a | |
|
20 | .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 |
@@ -77,6 +77,7 b' new directories are setgid' | |||
|
77 | 77 | 00660 ./.hg/store/data/foo.i |
|
78 | 78 | 00660 ./.hg/store/fncache |
|
79 | 79 | 00660 ./.hg/store/undo |
|
80 | 00660 ./.hg/undo.bookmarks | |
|
80 | 81 | 00660 ./.hg/undo.branch |
|
81 | 82 | 00660 ./.hg/undo.desc |
|
82 | 83 | 00660 ./.hg/undo.dirstate |
@@ -117,6 +118,7 b' group can still write everything' | |||
|
117 | 118 | 00660 ../push/.hg/store/data/foo.i |
|
118 | 119 | 00660 ../push/.hg/store/fncache |
|
119 | 120 | 00660 ../push/.hg/store/undo |
|
121 | 00660 ../push/.hg/undo.bookmarks | |
|
120 | 122 | 00660 ../push/.hg/undo.branch |
|
121 | 123 | 00660 ../push/.hg/undo.desc |
|
122 | 124 | 00660 ../push/.hg/undo.dirstate |
General Comments 0
You need to be logged in to leave comments.
Login now