Fri, 28 Mar 2014 14:30:11 -0700 wireproto: add decorator for wire protocol command
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 28 Mar 2014 14:30:11 -0700] rev 20906
wireproto: add decorator for wire protocol command Move move in the same direction we took for command line commands. each wire protocol function will be decorated with its name and arguments. Beside beside easier to read, this open the road to easily adding more metadata (like security level or return type)
Fri, 28 Mar 2014 14:24:13 -0700 wireproto: drop the _decompress method in favor a new call type
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 28 Mar 2014 14:24:13 -0700] rev 20905
wireproto: drop the _decompress method in favor a new call type We already have multiple call function for multiple return type. The `_decompress` function is only used for http and seems like a layer violation. We drop it in favor of a new call type dedicated to "stream that may be useful to compress".
Fri, 28 Mar 2014 12:29:34 -0700 wireproto: document protocol specific function of wirepeer
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 28 Mar 2014 12:29:34 -0700] rev 20904
wireproto: document protocol specific function of wirepeer Those function are explicitly declared and documented now.
Fri, 28 Mar 2014 11:10:33 -0700 wireproto: introduce an abstractserverproto class
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 28 Mar 2014 11:10:33 -0700] rev 20903
wireproto: introduce an abstractserverproto class sshserver and webproto now inherit from an abstractserverproto class. This class is introduced for documentation purpose.
Fri, 28 Mar 2014 11:37:42 -0700 wireproto: document possible return type
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 28 Mar 2014 11:37:42 -0700] rev 20902
wireproto: document possible return type The wireprotocole command use a small set of class as return value. We document the meaning of each of them. AS my knowledge of wire protocol is fairly shallow, the documentation can probably use improvement. But this is a better than nothing.
Tue, 01 Apr 2014 18:56:19 -0700 pull: add a set of steps that remain to be done during the pull
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 01 Apr 2014 18:56:19 -0700] rev 20901
pull: add a set of steps that remain to be done during the pull With bundle2 we'll slowly move current steps into a single bundle2 building and call (changegroup, phases, obsmarkers, bookmarks). But we need to keep the old methods around for servers that do not support bundle2. So we introduce this set of steps that remains to be done.
Tue, 01 Apr 2014 17:35:25 -0700 pull: put discovery step in its own function
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 01 Apr 2014 17:35:25 -0700] rev 20900
pull: put discovery step in its own function The discovery is a full step that will grow to contain more than changesets. We set it in its own function like all other steps.
Tue, 01 Apr 2014 17:28:21 -0700 pull: move the cgresult logic in _pullchangeset
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 01 Apr 2014 17:28:21 -0700] rev 20899
pull: move the cgresult logic in _pullchangeset Logical follow up of the previous changeset. The `_pullchangeset` is now responsible of setting the `pullop.cgresult`.
Tue, 01 Apr 2014 17:21:52 -0700 pull: move return code in the pull operation object
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 01 Apr 2014 17:21:52 -0700] rev 20898
pull: move return code in the pull operation object With bundle2 we'll have multiple code path susceptible to be responsible for adding changeset during the pull. We move it to the pull operation to simplify this the coming logic. The one doing the adding the changegroup will set the value.
Tue, 25 Feb 2014 20:30:08 +0100 merge: use ancestor filename from planning phase instead of filectx ancestor
Mads Kiilerich <madski@unity3d.com> [Tue, 25 Feb 2014 20:30:08 +0100] rev 20897
merge: use ancestor filename from planning phase instead of filectx ancestor test-merge-types.t changes a bit in flag merging. It relied on the implementation detail that 100% identical revlog entries are reused. The revlog reuse did that fctx.ancestor() saw an ancestor where there really not was one.
Wed, 02 Apr 2014 00:01:21 -0700 tests: prevent test-hup from hanging forever if the transaction does not start
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 02 Apr 2014 00:01:21 -0700] rev 20896
tests: prevent test-hup from hanging forever if the transaction does not start If the transaction fails to start because of some programing errors, the test would stay stuck in this while loop forever. We now added a basic safeguard that abort the loop if nothing happen in 10 seconds. 10 seconds sounds enough to let the server catch up and open a transaction.
Mon, 31 Mar 2014 16:03:34 -0700 revset: improve roots revset performance
Durham Goode <durham@fb.com> [Mon, 31 Mar 2014 16:03:34 -0700] rev 20895
revset: improve roots revset performance Previously we would iterate over every item in the subset, checking if it was in the provided args. This often meant iterating over every rev in the repo. Now we iterate over the args provided, checking if they exist in the subset. On a large repo this brings setting phase boundaries (which use this revset roots(X:: - X::Y)) down from 0.8 seconds to 0.4 seconds. The "roots((tip~100::) - (tip~100::tip))" revset in revsetbenchmarks shows it going from 0.12s to 0.10s, so we should be able to catch regressions here in the future. This actually introduces a regression in 'roots(all())' (0.2s to 0.26s) since we're now using spansets, which are slightly slower to do containment checks on. I believe this trade off is worth it, since it makes the revset O(number of args) instead of O(size of repo).
Tue, 25 Mar 2014 14:10:01 -0700 revset: improve _descendants performance
Durham Goode <durham@fb.com> [Tue, 25 Mar 2014 14:10:01 -0700] rev 20894
revset: improve _descendants performance Previously revset._descendants would iterate over the entire subset (which is often the entire repo) and test if each rev was in the descendants list. This is really slow on large repos (3+ seconds). Now we iterate over the descendants and test if they're in the subset. This affects advancing and retracting the phase boundary (3.5 seconds down to 0.8 seconds, which is even faster than it was in 2.9). Also affects commands that move the phase boundary (commit and rebase, presumably). The new revsetbenchmark indicates an improvement from 0.2 to 0.12 seconds. So future revset changes should be able to notice regressions. I removed a bad test. It was recently added and tested '1:: and reverse(all())', which has an amibiguous output direction. Previously it printed in reverse order, because we iterated over the subset (the reverse part). Now it prints in normal order because we iterate over the 1:: . Since the revset itself doesn't imply an order, I removed the test.
Mon, 31 Mar 2014 16:29:39 -0700 revsetbenchmark: remove python 2.7 dependency
Durham Goode <durham@fb.com> [Mon, 31 Mar 2014 16:29:39 -0700] rev 20893
revsetbenchmark: remove python 2.7 dependency revsetbenchmark.py used check_output which only exists in python 2.7. This fixes it.
Mon, 24 Mar 2014 17:20:15 -0700 bundle2: read the whole bundle from stream on abort
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 24 Mar 2014 17:20:15 -0700] rev 20892
bundle2: read the whole bundle from stream on abort When the bundle processing abort on unknown mandatory parts, we now makes sure all the bundle content is read. This avoid leaving the communication channel in an unrecoverable state.
Mon, 24 Mar 2014 13:02:02 -0700 bundle2: add some distinction between mandatory and advisory part
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 24 Mar 2014 13:02:02 -0700] rev 20891
bundle2: add some distinction between mandatory and advisory part Mandatory part cannot be ignored when unknown. We raise a simple KeyError exception when this happen. This is very early version of this logic, see inline comment for future improvement lead.
Mon, 24 Mar 2014 15:51:00 -0700 bundle2: introduce a `parthandler` decorator
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 24 Mar 2014 15:51:00 -0700] rev 20890
bundle2: introduce a `parthandler` decorator Simple syntax sugar to register an handler for a new part type.
Mon, 24 Mar 2014 12:25:33 -0700 bundle2: first version of a bundle processing
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 24 Mar 2014 12:25:33 -0700] rev 20889
bundle2: first version of a bundle processing We now have a function that interpret part content. This is a version early version of this function. It'll see major changes in scope and API in future development. As for previous I'm just focussing on getting minimal logic setup. Refining will happen with real world usage.
Mon, 24 Mar 2014 11:27:00 -0700 bundle2: rename unbundle2 test command to statbundle2
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 24 Mar 2014 11:27:00 -0700] rev 20888
bundle2: rename unbundle2 test command to statbundle2 We will introduce object to actually process the bundle, we need to keep the simplistic unbundle around for the test.
Tue, 01 Apr 2014 00:08:15 -0700 bundle2: safely read unpack data from part header
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 01 Apr 2014 00:08:15 -0700] rev 20887
bundle2: safely read unpack data from part header We use the same approach that the other unpack, as function is given the struct format and his both responsible for reading the right amount of data from the header and unpack the struct. This give use flexibility if we decide to change the size of something in the format before the release.
Wed, 02 Apr 2014 13:41:23 -0500 transaction: drop extra import caught by pyflakes
Matt Mackall <mpm@selenic.com> [Wed, 02 Apr 2014 13:41:23 -0500] rev 20886
transaction: drop extra import caught by pyflakes
Mon, 24 Mar 2014 15:43:15 -0700 fncache: clean up fncache during strips
Durham Goode <durham@fb.com> [Mon, 24 Mar 2014 15:43:15 -0700] rev 20885
fncache: clean up fncache during strips Previously the fncache was cleaned up at read time by noticing when it was out of sync. This caused writes to happen outside the scope of transactions and could have caused race conditions. With this change, we'll keep the fncache up-to-date as we go by removing old entries during repair.strip.
Mon, 24 Mar 2014 15:35:07 -0700 caches: invalidate store caches when lock is taken
Durham Goode <durham@fb.com> [Mon, 24 Mar 2014 15:35:07 -0700] rev 20884
caches: invalidate store caches when lock is taken The fncache was not being properly invalidated each time the lock was taken, so in theory it could contain old data from prior to the caller having the lock. This changes it to be invalidated as soon as the lock is taken (same as all our other caches).
Mon, 24 Mar 2014 15:42:13 -0700 fncache: move fncache writing to be in a transaction
Durham Goode <durham@fb.com> [Mon, 24 Mar 2014 15:42:13 -0700] rev 20883
fncache: move fncache writing to be in a transaction Previously the fncache was written at lock.release time. This meant it was not tracked by a transaction, and if an error occurred during the fncache write it would fail to update the fncache, but would not rollback the transaction, resulting in an fncache that was not in sync with the files on disk (which causes verify to fail, and causes streaming clones to not copy all the revlogs). This uses the new transaction backup mechanism to make the fncache transacted. It also moves the fncache from being written at lock.release time, to being written at transaction.close time.
Mon, 24 Mar 2014 15:21:51 -0700 transaction: add support for non-append files
Durham Goode <durham@fb.com> [Mon, 24 Mar 2014 15:21:51 -0700] rev 20882
transaction: add support for non-append files This adds support for normal, non-append-only files in transactions. For example, .hg/store/fncache and .hg/store/phaseroots should be written as part of the transaction, but are not append only files. This adds a journal.backupfiles along side the normal journal. This tracks which files have been backed up as part of the transaction. transaction.addbackup() creates a backup of the file (using a hardlink), which is later used to recover in the event of the transaction failing. Using a seperate journal allows the repository to still be used by older versions of Mercurial. A future patch will use this functionality and add tests for it.
Mon, 24 Mar 2014 15:57:47 -0700 transaction: add onclose/onabort hook for pre-close logic
Durham Goode <durham@fb.com> [Mon, 24 Mar 2014 15:57:47 -0700] rev 20881
transaction: add onclose/onabort hook for pre-close logic Adds an optional onclose parameter to transactions that gets called just before the transaction is committed. This allows things that build up data over the course of the transaction (like the fncache) to commit their data. Also adds onabort. It's not used, but will allow extensions to hook into onclose and onabort to provide transaction support.
Mon, 24 Mar 2014 15:38:20 -0700 clone: put streaming clones in a transaction
Durham Goode <durham@fb.com> [Mon, 24 Mar 2014 15:38:20 -0700] rev 20880
clone: put streaming clones in a transaction Streaming clones were writing to files outside of a transaction. Soon the fncache will be written at transaction close time, so we need streaming clones to be in a transaction.
Mon, 24 Mar 2014 15:31:47 -0700 fncache: remove the rewriting logic
Durham Goode <durham@fb.com> [Mon, 24 Mar 2014 15:31:47 -0700] rev 20879
fncache: remove the rewriting logic The fncache could rewrite itself during a read operation if it noticed any entries that were no longer on disk. This was problematic because it caused Mercurial to perform write operations outside the scope of a lock or transaction, which could interefere with any other pending writes. This will be replaced in a future patch by logic that cleans up the fncache as files are deleted during strips.
Wed, 26 Mar 2014 15:55:32 -0700 pull: prevent duplicated entry in `op.pulledsubset`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 26 Mar 2014 15:55:32 -0700] rev 20878
pull: prevent duplicated entry in `op.pulledsubset` In the bare pull case we could add the same node multiple time to the `pulloperation.pulledsubset`. Beside being a bit wrong this confused the new revset implementation of `revset._revancestor` into giving bad result. This changeset fix the pull operation part. The fix for the revset itself will come in another changeset.
Thu, 20 Mar 2014 01:24:45 -0700 bundle2: part params
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 20 Mar 2014 01:24:45 -0700] rev 20877
bundle2: part params
Wed, 19 Mar 2014 23:36:15 -0700 bundle2: support for bundling and unbundling payload
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 19 Mar 2014 23:36:15 -0700] rev 20876
bundle2: support for bundling and unbundling payload We add the ability to bundle and unbundle a payload in parts. The payload is the actual binary data of the part. It is used to convey all the applicative data. For now we stick to very simple implementation with all the data fit in single chunk. This open the door to some bundle2 testing usage. This will be improved before bundle2 get used for real. We need to be able to stream the payload in multiple part to exchange any changegroup efficiently. This simple version will do for now. Bundling and unbundling are done in the same changeset because the test for parts is less modular. However, the result is not too complex.
Tue, 01 Apr 2014 17:59:06 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 01 Apr 2014 17:59:06 -0500] rev 20875
merge with stable
Tue, 01 Apr 2014 17:57:04 -0500 Added signature for changeset 3f83fc5cfe71 stable
Matt Mackall <mpm@selenic.com> [Tue, 01 Apr 2014 17:57:04 -0500] rev 20874
Added signature for changeset 3f83fc5cfe71
Tue, 01 Apr 2014 17:56:55 -0500 Added tag 2.9.2 for changeset 3f83fc5cfe71 stable
Matt Mackall <mpm@selenic.com> [Tue, 01 Apr 2014 17:56:55 -0500] rev 20873
Added tag 2.9.2 for changeset 3f83fc5cfe71
Sat, 08 Mar 2014 18:52:16 +0900 backout: correct commit status of no changes made (BC) (issue4190) stable 2.9.2
Yuya Nishihara <yuya@tcha.org> [Sat, 08 Mar 2014 18:52:16 +0900] rev 20872
backout: correct commit status of no changes made (BC) (issue4190) If backout generated no changes to commit, it showed wrong status, "changeset <target> backs out changeset <target>", and raised TypeError with -v option. This changes the return code to 1, which is the same as "hg commit" and "hg rebase".
Sat, 08 Mar 2014 18:41:56 +0900 backout: document return code of merge conflict stable
Yuya Nishihara <yuya@tcha.org> [Sat, 08 Mar 2014 18:41:56 +0900] rev 20871
backout: document return code of merge conflict
Tue, 01 Apr 2014 15:11:19 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 01 Apr 2014 15:11:19 -0500] rev 20870
merge with stable
Tue, 01 Apr 2014 02:46:03 +0900 i18n: fix "% inside _()" problems stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 01 Apr 2014 02:46:03 +0900] rev 20869
i18n: fix "% inside _()" problems Before this patch, "contrib/check-code.py" can't detect these problems, because the regexp pattern to detect "% inside _()" doesn't suppose the case that format string consists of multiple string components concatenated implicitly or explicitly, This patch does below for that regexp pattern to detect "% inside _()" problems in such case. - put "+" into separator part ("[ \t\n]") for explicit concatenation ("...." + "...." style) - enclose "component and separator" part by "(?:....)+" for concatenation itself ("...." "...." or "...." + "....")
Tue, 01 Apr 2014 02:46:03 +0900 i18n: fix "% inside _()" problems stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 01 Apr 2014 02:46:03 +0900] rev 20868
i18n: fix "% inside _()" problems Before this patch, "contrib/check-code.py" can't detect these problems, because the regexp pattern to detect "% inside _()" doesn't suppose the case that the format string and "%" aren't placed in the same line. This patch replaces "\s" in that regexp pattern with "[ \t\n]" to detect "% inside _()" problems in such case. "[\s\n]" can't be used in this purpose, because "\s" is automatically replaced with "[ \t]" by "_preparepats()" and "\s" in "[]" causes nested "[]" unexpectedly.
Tue, 01 Apr 2014 02:46:03 +0900 merge: fix lack of "%s" in format string causing TypeError at runtime stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 01 Apr 2014 02:46:03 +0900] rev 20867
merge: fix lack of "%s" in format string causing TypeError at runtime
Tue, 01 Apr 2014 13:27:12 -0300 i18n-pt_BR: synchronized with c57c9cece645 stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 01 Apr 2014 13:27:12 -0300] rev 20866
i18n-pt_BR: synchronized with c57c9cece645
Mon, 31 Mar 2014 21:03:39 +0900 i18n-ja: synchronized with e259d4c462b5 stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 31 Mar 2014 21:03:39 +0900] rev 20865
i18n-ja: synchronized with e259d4c462b5
Wed, 19 Mar 2014 23:04:03 -0700 bundle2: support unbundling empty part
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 19 Mar 2014 23:04:03 -0700] rev 20864
bundle2: support unbundling empty part We augment the unbundler to make it able to unbundle the empty part we are now able to bundle.
Fri, 28 Mar 2014 17:00:13 -0700 revset: raise ValueError when calling min or max on empty smartset
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 28 Mar 2014 17:00:13 -0700] rev 20863
revset: raise ValueError when calling min or max on empty smartset min([]) raise a ValueError, we do the same thing in smartset.min() and smartset.max() for the sake of consistency. The min/amax test are greatly improved in the process to prevent this familly of regression
Thu, 20 Mar 2014 18:44:25 -0700 revpair: smartset compatibility
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 20 Mar 2014 18:44:25 -0700] rev 20862
revpair: smartset compatibility Since recent revset changes, revrange now return a smartset. This smart set probably does not support indexing (_addset does not). This led to crash. Instead when the smartset is ordered we use the `min` and `max` method of smart set. Otherwise we turn is into a list and use indexing on it. The tests have been updated to catch such regression.
Fri, 28 Mar 2014 16:12:05 -0700 revsetbenchmark: add entry for ::rev::
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 28 Mar 2014 16:12:05 -0700] rev 20861
revsetbenchmark: add entry for ::rev:: Revsets of the form ::rev:: were identified as the source behind the regressions in issue 4201. Ensure we have explicit coverage of that revset.
Mon, 31 Mar 2014 10:12:07 -0500 merge with stable
Kevin Bullock <kbullock@ringworld.org> [Mon, 31 Mar 2014 10:12:07 -0500] rev 20860
merge with stable This should correct an earlier couple of bad merges (5433856b2558 and 596960a4ad0d, now pruned) that accidentally brought in a change that had been marked obsolete (244ac996a821).
Fri, 28 Mar 2014 14:33:27 -0500 tests: use TESTTMP instead of TESTDIR stable
Sean Farley <sean.michael.farley@gmail.com> [Fri, 28 Mar 2014 14:33:27 -0500] rev 20859
tests: use TESTTMP instead of TESTDIR In 57d0c8c3b947, f042d4b263f4, 1e686e55780c, and 5d22cadd1938, new tests were added that used TESTDIR instead of TESTTMP thereby leading to polluting the working directory with these temporary files. Now, we use TESTTMP so that they will be cleaned up properly.
(0) -10000 -3000 -1000 -300 -100 -48 +48 +100 +300 +1000 +3000 +10000 +30000 tip