Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/changelog.py @ 23205:2d54aa5397cd
changelog: rely on transaction for finalization
Instead of calling 'cl.finalize()' by hand (possibly at a bogus time) we
register it in the transaction during 'delayupdate' and rely on 'tr.close()' to
call it at the right time.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Sat, 18 Oct 2014 01:09:41 -0700 |
parents | 3872d563e01a |
children | b01c491af0cf |
comparison
equal
deleted
inserted
replaced
23204:10beda5bd2b7 | 23205:2d54aa5397cd |
---|---|
3 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com> | 3 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com> |
4 # | 4 # |
5 # This software may be used and distributed according to the terms of the | 5 # This software may be used and distributed according to the terms of the |
6 # GNU General Public License version 2 or any later version. | 6 # GNU General Public License version 2 or any later version. |
7 | 7 |
8 import weakref | |
8 from node import bin, hex, nullid | 9 from node import bin, hex, nullid |
9 from i18n import _ | 10 from i18n import _ |
10 import util, error, revlog, encoding | 11 import util, error, revlog, encoding |
11 | 12 |
12 _defaultextra = {'branch': 'default'} | 13 _defaultextra = {'branch': 'default'} |
237 self._delaybuf = [] | 238 self._delaybuf = [] |
238 self.opener = _delayopener(self._realopener, self.indexfile, | 239 self.opener = _delayopener(self._realopener, self.indexfile, |
239 self._delaybuf) | 240 self._delaybuf) |
240 self._delayed = True | 241 self._delayed = True |
241 tr.addpending('cl-%i' % id(self), self._writepending) | 242 tr.addpending('cl-%i' % id(self), self._writepending) |
242 | 243 trp = weakref.proxy(tr) |
243 def finalize(self, tr): | 244 tr.addfinalize('cl-%i' % id(self), lambda: self._finalize(trp)) |
245 | |
246 def _finalize(self, tr): | |
244 "finalize index updates" | 247 "finalize index updates" |
245 self._delayed = False | 248 self._delayed = False |
246 self.opener = self._realopener | 249 self.opener = self._realopener |
247 # move redirected index data back into place | 250 # move redirected index data back into place |
248 if self._divert: | 251 if self._divert: |