Sat, 10 Jan 2015 21:31:59 +0900 revset: fix spanset.isascending() to honor sort() or reverse() request stable
Yuya Nishihara <yuya@tcha.org> [Sat, 10 Jan 2015 21:31:59 +0900] rev 23826
revset: fix spanset.isascending() to honor sort() or reverse() request Because spanset.isascending() ignored the ascending flag, the result of "fullreposet() & x" was always sorted in ascending order. The test case is carefully chosen to call fullreposet.__and__.
Tue, 13 Jan 2015 15:08:55 -0500 hghave: we now support Python 2.7.9's ssl for https
Augie Fackler <augie@google.com> [Tue, 13 Jan 2015 15:08:55 -0500] rev 23825
hghave: we now support Python 2.7.9's ssl for https
Tue, 13 Jan 2015 14:15:08 -0500 Makefile.python: try curl if wget fails
Augie Fackler <augie@google.com> [Tue, 13 Jan 2015 14:15:08 -0500] rev 23824
Makefile.python: try curl if wget fails Macs ship with curl and not wget, so this is a nice little tweak for folks testing on OS X.
Tue, 13 Jan 2015 15:15:37 -0500 test-https: glob error messages more so we pass on Python 2.7.9
Augie Fackler <augie@google.com> [Tue, 13 Jan 2015 15:15:37 -0500] rev 23823
test-https: glob error messages more so we pass on Python 2.7.9 Python 2.7.9 cleans up how it stringifies SSL errors, so we have to look only for the important bit (certificate verify failed) rather than looking for specific ssl module goop (which is now unstable).
Mon, 12 Jan 2015 09:46:56 -0800 filelog: fix backwards comment for 'backrevref'
Martin von Zweigbergk <martinvonz@google.com> [Mon, 12 Jan 2015 09:46:56 -0800] rev 23822
filelog: fix backwards comment for 'backrevref'
Mon, 12 Jan 2015 09:49:25 -0800 filelog: remove trailing "form feed" character
Martin von Zweigbergk <martinvonz@google.com> [Mon, 12 Jan 2015 09:49:25 -0800] rev 23821
filelog: remove trailing "form feed" character
Mon, 12 Jan 2015 09:48:05 -0800 filelog: remove unused variable 'lkr'
Martin von Zweigbergk <martinvonz@google.com> [Mon, 12 Jan 2015 09:48:05 -0800] rev 23820
filelog: remove unused variable 'lkr' It's used further down, but it's overwritten before, so it's technically a dead assignment, but unnecessary nevertheless.
Sat, 10 Jan 2015 12:00:03 -0500 branchmap: add seek() to end of file before calling tell() on append open()
Matt Harbison <matt_harbison@yahoo.com> [Sat, 10 Jan 2015 12:00:03 -0500] rev 23819
branchmap: add seek() to end of file before calling tell() on append open() This is similar to 48c232873a54, which was subsequently modified in 19f5dec2d61f for 2.4. Unexpected test changes on Windows occurred without this.
Fri, 09 Jan 2015 22:14:01 -0500 tests: fix test-casefolding.t output for branchcache
Matt Harbison <matt_harbison@yahoo.com> [Fri, 09 Jan 2015 22:14:01 -0500] rev 23818
tests: fix test-casefolding.t output for branchcache This belongs with 7d63398fbfd1. I assume that the failure to read is OK, because there is similar output in test-convert-svn-encoding.t.
Tue, 06 Jan 2015 17:19:21 -0800 setdiscovery: remove '_setupsample' function
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 06 Jan 2015 17:19:21 -0800] rev 23817
setdiscovery: remove '_setupsample' function It is now unused.
Wed, 07 Jan 2015 20:44:20 -0800 setdiscovery: document '_takequicksample'
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 07 Jan 2015 20:44:20 -0800] rev 23816
setdiscovery: document '_takequicksample'
Tue, 06 Jan 2015 17:07:44 -0800 setdiscovery: drop '_setupsample' usage in '_takequicksample'
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 06 Jan 2015 17:07:44 -0800] rev 23815
setdiscovery: drop '_setupsample' usage in '_takequicksample' For '_takefullsample' we can just retrieve the list of head directly and ignore the rest of the complex return values. This was the last call to the infamous '_updatesample' function.
Wed, 07 Jan 2015 10:32:17 -0800 setdiscovery: drop the 'always' argument to '_updatesample'
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 07 Jan 2015 10:32:17 -0800] rev 23814
setdiscovery: drop the 'always' argument to '_updatesample' This argument exists because of the complex code flow in '_takequicksample'. It first gets the list of heads and then calls '_updatesample' on an empty initial sample and a size limit matching the differences between the number of heads and the target sample size. Finally the heads and the sample from '_updatesample' were added. To ensure this addition result had the exact target length, the code had to ensure no elements from the heads were added to the '_updatesample' content and therefore was passing this "always included set of heads". Instead we can just update the initial heads sample directly and use the final target size as target size for the update. This removes the need for this 'always' parameter to the '_updatesample' function The test are affected because different set building order results in different random sampling.
Wed, 07 Jan 2015 17:28:51 -0800 setdiscovery: always add exponential sample to the heads
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 07 Jan 2015 17:28:51 -0800] rev 23813
setdiscovery: always add exponential sample to the heads As explained in a previous changeset, prioritizing heads too much behaves pathologically when there are more heads than the sample size. To counter this, we always inject exponential samples before reducing to the sample size limit. This already show some benefit in the test themselves, but on a real-world example this moves my discovery for push to pathologically headed repo from 45 rounds to 17 of them. We should maybe ensure that at least 25% of the result sample is heads, but I think the random sampling will be fine in practice.
Wed, 07 Jan 2015 17:23:21 -0800 setdiscovery: directly run '_updatesample'
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 07 Jan 2015 17:23:21 -0800] rev 23812
setdiscovery: directly run '_updatesample' The heads and exponential sample are going to end up in the same set before any extra processing happens. We simplify the code by directly updating a set with heads. Changes in the order the set is built lead to small changes in the random sampling output. But after double checking, I can confirm the input data to the random sampling is consistent.
Wed, 07 Jan 2015 17:17:56 -0800 setdiscovery: stop using '_setupsample' in '_takefullsample'
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 07 Jan 2015 17:17:56 -0800] rev 23811
setdiscovery: stop using '_setupsample' in '_takefullsample' Very few of the return values of '_setupsample' remain in use, so we directly retrieve the value we care about and drop the '_setupsample' call.
Wed, 07 Jan 2015 12:09:51 -0800 setdiscovery: randomly pick between heads and sample when taking full sample
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 07 Jan 2015 12:09:51 -0800] rev 23810
setdiscovery: randomly pick between heads and sample when taking full sample Before this changeset, the discovery protocol was too heads-centric. Heads of the undiscovered set were always sent for discovery and any room remaining in the sample were filled with exponential samples (and random ones if any room remained). This behaved extremely poorly when the number of heads exceeded the sample size, because we keep just asking about the existence of heads, then their direct parent and so on. As a result, the 'O(log(len(repo)))' discovery turns into a 'O(len(repo))' one. As a solution we take a random sample of the heads plus exponential samples. This way we ensure some exponential sampling is achieved, bringing back some logarithmic convergence of the discovery again. This patch only applies this principle in one place. More places will be updated in future patches. One test is impacted because the random sample happen to be different. By chance, it helps a bit in this case.
Tue, 06 Jan 2015 17:02:32 -0800 setdiscovery: document the '_updatesample' function
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 06 Jan 2015 17:02:32 -0800] rev 23809
setdiscovery: document the '_updatesample' function This function is central in the sample building process, having it documented help code readability a lot.
Tue, 06 Jan 2015 16:40:33 -0800 setdiscovery: avoid calling any sample building if the undecided set is small
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 06 Jan 2015 16:40:33 -0800] rev 23808
setdiscovery: avoid calling any sample building if the undecided set is small If the length of undecided is smaller than the sample size, we can just request information for all of them. This conditional was previously handled by '_setupsample'. But '_setupsample' is in my opinion a problematic function with blurry semantics. Having this conditional explicitly earlier makes the code more explicit and moves us closer to removing this '_setupsample' function.
Wed, 07 Jan 2015 09:30:06 -0800 setdiscovery: delay sample building calls to gather them in a single place
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 07 Jan 2015 09:30:06 -0800] rev 23807
setdiscovery: delay sample building calls to gather them in a single place Some of the logic around sample building is duplicated in the sample builders, it would clean up thing to extract it in the top function, but this requires all codes to be in the same place. This changeset mostly exists to make the next one more clear.
Tue, 06 Jan 2015 16:32:23 -0800 setdiscovery: drop unused 'initial' argument for '_takequicksample'
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 06 Jan 2015 16:32:23 -0800] rev 23806
setdiscovery: drop unused 'initial' argument for '_takequicksample' There is a single call site, and it is always using 'initial=True'. So we just drop the argument and the associated condition.
Sun, 11 Jan 2015 16:46:13 -0600 readmarkers: add a SHA256 fixme note
Matt Mackall <mpm@selenic.com> [Sun, 11 Jan 2015 16:46:13 -0600] rev 23805
readmarkers: add a SHA256 fixme note
Sun, 11 Jan 2015 16:37:57 -0600 readmarkers: fast-path single successors and parents
Matt Mackall <mpm@selenic.com> [Sun, 11 Jan 2015 16:37:57 -0600] rev 23804
readmarkers: fast-path single successors and parents This gives about a 5% performance bump.
Sun, 11 Jan 2015 15:35:09 -0600 readmarkers: promote global constants to locals for performance
Matt Mackall <mpm@selenic.com> [Sun, 11 Jan 2015 15:35:09 -0600] rev 23803
readmarkers: promote global constants to locals for performance
Sun, 11 Jan 2015 14:52:57 -0600 readmarkers: drop a temporary
Matt Mackall <mpm@selenic.com> [Sun, 11 Jan 2015 14:52:57 -0600] rev 23802
readmarkers: drop a temporary
Sun, 11 Jan 2015 14:51:49 -0600 readmarkers: read node reading into node length conditional
Matt Mackall <mpm@selenic.com> [Sun, 11 Jan 2015 14:51:49 -0600] rev 23801
readmarkers: read node reading into node length conditional This removes some conditional assignments
Sun, 11 Jan 2015 14:46:55 -0600 readmarkers: drop a temporary
Matt Mackall <mpm@selenic.com> [Sun, 11 Jan 2015 14:46:55 -0600] rev 23800
readmarkers: drop a temporary Two other temporaries are renamed to fit line-length.
Sun, 11 Jan 2015 14:44:57 -0600 readmarkers: hoist subtraction out of loop comparison
Matt Mackall <mpm@selenic.com> [Sun, 11 Jan 2015 14:44:57 -0600] rev 23799
readmarkers: hoist subtraction out of loop comparison
Sun, 11 Jan 2015 14:43:31 -0600 readmarkers: streamline offset tracking
Matt Mackall <mpm@selenic.com> [Sun, 11 Jan 2015 14:43:31 -0600] rev 23798
readmarkers: streamline offset tracking This minimizes the number of assignments and operations needed to use offsets.
Sun, 11 Jan 2015 14:37:50 -0600 readmarkers: use unpacker for fixed header
Matt Mackall <mpm@selenic.com> [Sun, 11 Jan 2015 14:37:50 -0600] rev 23797
readmarkers: use unpacker for fixed header
(0) -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip