Matt Mackall <mpm@selenic.com> [Wed, 23 Mar 2011 09:20:40 -0500] rev 13728
merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 22 Mar 2011 21:27:51 -0500] rev 13727
debugbundle: fix up long line caught by check-code
Matt Mackall <mpm@selenic.com> [Tue, 22 Mar 2011 21:26:19 -0500] rev 13726
wireproto: avoid naked excepts
Stefano Tortarolo <stefano.tortarolo@gmail.com> [Tue, 15 Mar 2011 14:55:16 +0100] rev 13725
mq: fix typo in docstring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com> [Tue, 22 Mar 2011 09:22:29 +0100] rev 13724
commands: add debugbundle command
Lists ids contained in a bundle file. Useful for testing bundle-related commands.
Peter Arrenbrecht <peter.arrenbrecht@gmail.com> [Tue, 22 Mar 2011 09:22:21 +0100] rev 13723
wireproto: add known([id]) function
known([Node]) -> [1/0]
Returns 1/0 for each node, indicating whether it's known by the server.
Needed for new discovery protocols introduced in later patches.
Peter Arrenbrecht <peter.arrenbrecht@gmail.com> [Tue, 22 Mar 2011 07:40:02 +0100] rev 13722
wireproto: fix decodelist to properly return empty list
Needed by tests for next patch introducing known().
Peter Arrenbrecht <peter.arrenbrecht@gmail.com> [Tue, 22 Mar 2011 07:38:32 +0100] rev 13721
wireproto: fix handling of '*' args for HTTP and SSH
Peter Arrenbrecht <peter.arrenbrecht@gmail.com> [Tue, 22 Mar 2011 07:38:32 +0100] rev 13720
debug: add debugwireargs to test argument passing over the wire
Tests argument passing locally, via HTTP, and via SSH. This is mainly preparation
for the next patch.
Peter Arrenbrecht <peter.arrenbrecht@gmail.com> [Tue, 22 Mar 2011 07:37:56 +0100] rev 13719
sshserver: drop unnecessary line
Matt Mackall <mpm@selenic.com> [Tue, 22 Mar 2011 12:00:38 -0500] rev 13718
merge: avoid unlinking destination of merge when case changes (issue2715)
Matt Mackall <mpm@selenic.com> [Tue, 22 Mar 2011 11:59:43 -0500] rev 13717
dirstate: introduce a public case normalizing method
Matt Mackall <mpm@selenic.com> [Sun, 20 Mar 2011 20:25:41 -0500] rev 13716
changegroup: minor cleanups
Matt Mackall <mpm@selenic.com> [Sun, 20 Mar 2011 20:21:19 -0500] rev 13715
repair: revlog has an iterator
Matt Mackall <mpm@selenic.com> [Sun, 20 Mar 2011 20:17:57 -0500] rev 13714
changegroup: fix leftover from delta read
Matt Mackall <mpm@selenic.com> [Sun, 20 Mar 2011 20:16:51 -0500] rev 13713
changegroup: drop expensive redundant usage of readdelta for progress
Matt Mackall <mpm@selenic.com> [Sun, 20 Mar 2011 19:43:28 -0500] rev 13712
changegroupsubset: use manifest.readfast to simplify collector
Matt Mackall <mpm@selenic.com> [Sun, 20 Mar 2011 19:43:28 -0500] rev 13711
manifest: add readfast method
Matt Mackall <mpm@selenic.com> [Sun, 20 Mar 2011 19:43:28 -0500] rev 13710
changegroupsubset: simplify filenode_collector
Matt Mackall <mpm@selenic.com> [Sun, 20 Mar 2011 19:43:28 -0500] rev 13709
changegroupsubset: more renaming
Matt Mackall <mpm@selenic.com> [Sun, 20 Mar 2011 19:43:28 -0500] rev 13708
changegroupsubset: simplify prune
Ancestors of nodes linked to commonrevs can be expected to be linked
to commonrevs. Walking graphs of each revlog looking for rare/nonexistent outliers is overkill.
Matt Mackall <mpm@selenic.com> [Sun, 20 Mar 2011 19:43:28 -0500] rev 13707
changegroupsubset: more minor cleanups
- remove more excessive comments
- simplify some sorting operations
- rename some variables
- replace identity with a lambda
Matt Mackall <mpm@selenic.com> [Sun, 20 Mar 2011 19:43:28 -0500] rev 13706
changegroupsubset: minor cleanups
- move some variable declarations
- drop some excessive comments
- use standard variable naming
Matt Mackall <mpm@selenic.com> [Sun, 20 Mar 2011 19:43:28 -0500] rev 13705
strip: simplify collectone
Greg Ward <greg@gerg.ca> [Sun, 20 Mar 2011 17:41:09 -0400] rev 13704
dirstate: avoid a race with multiple commits in the same process
(issue2264, issue2516)
The race happens when two commits in a row change the same file
without changing its size, *if* those two commits happen in the same
second in the same process while holding the same repo lock. For
example:
commit 1:
M a
M b
commit 2: # same process, same second, same repo lock
M b # modify b without changing its size
M c
This first manifested in transplant, which is the most common way to
do multiple commits in the same process. But it can manifest in any
script or extension that does multiple commits under the same repo
lock. (Thus, the test script tests both transplant and a custom script.)
The problem was that dirstate.status() failed to notice the change to
b when localrepo is about to do the second commit, meaning that change
gets left in the working directory. In the context of transplant, that
means either a crash ("RuntimeError: nothing committed after
transplant") or a silently inaccurate transplant, depending on whether
any other files were modified by the second transplanted changeset.
The fix is to make status() work a little harder when we have
previously marked files as clean (state 'normal') in the same process.
Specifically, dirstate.normal() adds files to self._lastnormal, and
other state-changing methods remove them. Then dirstate.status() puts
any files in self._lastnormal into state 'lookup', which will make
localrepository.status() read file contents to see if it has really
changed. So we pay a small performance penalty for the second (and
subsequent) commits in the same process, without affecting the common
case. Anything that does lots of status updates and checks in the
same process could suffer a performance hit.
Incidentally, there is a simpler fix: call dirstate.normallookup() on
every file updated by commit() at the end of the commit. The trouble
with that solution is that it imposes a performance penalty on the
common case: it means the next status-dependent hg command after every
"hg commit" will be a little bit slower. The patch here is more
complex, but only affects performance for the uncommon case.
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Sun, 20 Mar 2011 01:16:57 +0100] rev 13703
changegroupsubset: extranodes are no longer needed
Benoit Boissinot <benoit.boissinot@ens-lyon.org> [Sun, 20 Mar 2011 00:50:22 +0100] rev 13702
strip: remove usage of extranodes
Instead of computing the exact set of missing revlog revisions, we only
compute the set of missing/broken changesets. The resulting bundle can be
slightly bigger but we will be able to get rid of the ugly extranodes handling
in changegroupsubset.
Patrick Mezard <pmezard@gmail.com> [Sun, 20 Mar 2011 00:22:47 +0100] rev 13701
patch: move closefile() into patchfile.close()
Patrick Mezard <pmezard@gmail.com> [Sun, 20 Mar 2011 00:09:44 +0100] rev 13700
patch: inline patchfile.hashlines()
Patrick Mezard <pmezard@gmail.com> [Sun, 20 Mar 2011 00:08:44 +0100] rev 13699
patch: fix hunk newlines when parsing hunks, not in iterhunks()