Mercurial > hg-stable
changeset 10881:a685011ed38e
localrepo: add desc parameter to transaction
All callers to localrepo.transaction() must supply a transaction description.
The description and the existing repository tip are then stored
(transactionally) into .hg/undo.desc; where rollback can later find it.
author | Steve Borho <steve@borho.org> |
---|---|
date | Fri, 09 Apr 2010 17:23:35 -0500 |
parents | 4775fc1e04a8 |
children | f0bfe42c7b1f |
files | hgext/mq.py mercurial/localrepo.py mercurial/repair.py tests/test-fncache.out tests/test-hup.out tests/test-inherit-mode.out |
diffstat | 6 files changed, 13 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/mq.py Fri Apr 09 15:16:52 2010 +0200 +++ b/hgext/mq.py Fri Apr 09 17:23:35 2010 -0500 @@ -610,7 +610,7 @@ try: wlock = repo.wlock() lock = repo.lock() - tr = repo.transaction() + tr = repo.transaction("qpush") try: ret = self._apply(repo, series, list, update_status, strict, patchdir, merge, all_files=all_files)
--- a/mercurial/localrepo.py Fri Apr 09 15:16:52 2010 +0200 +++ b/mercurial/localrepo.py Fri Apr 09 17:23:35 2010 -0500 @@ -554,7 +554,7 @@ def wwritedata(self, filename, data): return self._filter("decode", filename, data) - def transaction(self): + def transaction(self, desc): tr = self._transref and self._transref() or None if tr and tr.running(): return tr.nest() @@ -571,10 +571,12 @@ ds = "" self.opener("journal.dirstate", "w").write(ds) self.opener("journal.branch", "w").write(self.dirstate.branch()) + self.opener("journal.desc", "w").write("%d,%s" % (len(self), desc)) renames = [(self.sjoin("journal"), self.sjoin("undo")), (self.join("journal.dirstate"), self.join("undo.dirstate")), - (self.join("journal.branch"), self.join("undo.branch"))] + (self.join("journal.branch"), self.join("undo.branch")), + (self.join("journal.desc"), self.join("undo.desc"))] tr = transaction.transaction(self.ui.warn, self.sopener, self.sjoin("journal"), aftertrans(renames), @@ -890,7 +892,7 @@ lock = self.lock() try: - tr = self.transaction() + tr = self.transaction("commit") trp = weakref.proxy(tr) # check in files @@ -2003,7 +2005,7 @@ cl.delayupdate() oldheads = len(cl.heads()) - tr = self.transaction() + tr = self.transaction(",".join([srctype, url])) try: trp = weakref.proxy(tr) # pull off the changeset group
--- a/mercurial/repair.py Fri Apr 09 15:16:52 2010 +0200 +++ b/mercurial/repair.py Fri Apr 09 17:23:35 2010 -0500 @@ -114,7 +114,7 @@ mfst = repo.manifest - tr = repo.transaction() + tr = repo.transaction("strip") offset = len(tr.entries) tr.startgroup()
--- a/tests/test-fncache.out Fri Apr 09 15:16:52 2010 +0200 +++ b/tests/test-fncache.out Fri Apr 09 17:23:35 2010 -0500 @@ -54,6 +54,7 @@ .hg/requires .hg/undo .hg/undo.branch +.hg/undo.desc .hg/undo.dirstate % non fncache repo adding tst.d/Foo @@ -70,4 +71,5 @@ .hg/store/data/tst.d.hg/_foo.i .hg/store/undo .hg/undo.branch +.hg/undo.desc .hg/undo.dirstate
--- a/tests/test-hup.out Fri Apr 09 15:16:52 2010 +0200 +++ b/tests/test-hup.out Fri Apr 09 17:23:35 2010 -0500 @@ -4,4 +4,4 @@ transaction abort! rollback completed killed! -.hg/00changelog.i .hg/journal.branch .hg/journal.dirstate .hg/requires .hg/store .hg/store/00changelog.i .hg/store/00changelog.i.a +.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
--- a/tests/test-inherit-mode.out Fri Apr 09 15:16:52 2010 +0200 +++ b/tests/test-inherit-mode.out Fri Apr 09 17:23:35 2010 -0500 @@ -26,6 +26,7 @@ 00660 ./.hg/store/fncache 00660 ./.hg/store/undo 00660 ./.hg/undo.branch +00660 ./.hg/undo.desc 00660 ./.hg/undo.dirstate 00700 ./dir/ 00600 ./dir/bar @@ -54,4 +55,5 @@ 00660 ../push/.hg/store/fncache 00660 ../push/.hg/store/undo 00660 ../push/.hg/undo.branch +00660 ../push/.hg/undo.desc 00660 ../push/.hg/undo.dirstate