# HG changeset patch # User FUJIWARA Katsunori # Date 1445012134 -32400 # Node ID 4a82cb5c1dc87eb2dbf077f4ae9b5f93abf865d3 # Parent 5ba0a99ff27f9ee58f319acf966cd3efee3e0c7f dirstate: show develwarn for write() invocation without transaction This is used to detect 'dirstate.write()' invocation without the value gotten by 'repo.currenttransaction()' (mainly focused on 3rd party extensions). diff -r 5ba0a99ff27f -r 4a82cb5c1dc8 hgext/largefiles/lfutil.py --- a/hgext/largefiles/lfutil.py Sat Oct 17 01:15:34 2015 +0900 +++ b/hgext/largefiles/lfutil.py Sat Oct 17 01:15:34 2015 +0900 @@ -110,6 +110,11 @@ return super(largefilesdirstate, self).normallookup(unixpath(f)) def _ignore(self, f): return False + def write(self, tr=False): + # (1) disable PENDING mode always + # (lfdirstate isn't yet managed as a part of the transaction) + # (2) avoid develwarn 'use dirstate.write with ....' + super(largefilesdirstate, self).write(None) def openlfdirstate(ui, repo, create=True): ''' diff -r 5ba0a99ff27f -r 4a82cb5c1dc8 mercurial/dirstate.py --- a/mercurial/dirstate.py Sat Oct 17 01:15:34 2015 +0900 +++ b/mercurial/dirstate.py Sat Oct 17 01:15:34 2015 +0900 @@ -661,6 +661,11 @@ filename = self._filename if tr is False: # not explicitly specified + if (self._ui.configbool('devel', 'all-warnings') + or self.ui.configbool('devel', 'check-dirstate-write')): + self._ui.develwarn('use dirstate.write with ' + 'repo.currenttransaction()') + if self._opener.lexists(self._pendingfilename): # if pending file already exists, in-memory changes # should be written into it, because it has priority