dirstate: make writing in-memory changes aware of transaction activity
This patch delays writing in-memory changes out, if transaction is
running.
'_getfsnow()' is defined as a function, to hook it easily for
ambiguous timestamp tests (see also fakedirstatewritetime.py)
'if tr:' code path in this patch is still disabled at this revision,
because there is no client invoking 'dirstate.write()' with repo
object.
BTW, this patch changes 'dirstate.invalidate()' semantics around
'dirstate.write()' in a transaction scope:
before:
with repo.transaction():
dirstate.CHANGE('A')
dirstate.write() # change for A is written out here
dirstate.CHANGE('B')
dirstate.invalidate() # discards only change for B
after:
with repo.transaction():
dirstate.CHANGE('A')
dirstate.write() # change for A is still kept in memory
dirstate.CHANGE('B')
dirstate.invalidate() # discards changes for A and B
Fortunately, there is no code path expecting the former, at least, in
Mercurial itself, because 'dirstateguard' was introduced to remove
such 'dirstate.invalidate()'.
lib - sys sys
mercurial - sys sys
hgrc.d - sys sys
9diff.rc - sys sys
factotum.rc - sys sys
rc - sys sys
bin - sys sys
9diff - sys sys
hg - sys sys
sys - sys sys
lib - sys sys
python - sys sys
lib - sys sys
python2.5 - sys sys
site-packages - sys sys
hgext - sys sys
+ - sys sys
mercurial - sys sys
+ - sys sys
mercurial-VERSION-py2.5.egg-info - sys sys
src - sys sys
cmd - sys sys
hg - sys sys
+ - sys sys