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.
Sat, 29 Mar 2014 01:20:07 +0900 hg: introduce "wirepeersetupfuncs" to setup wire peer by extensions (issue4109) stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 29 Mar 2014 01:20:07 +0900] rev 20858
hg: introduce "wirepeersetupfuncs" to setup wire peer by extensions (issue4109) Since changeset 6f72e7d28b35, "reposetup()" of each extensions is invoked only on repositories enabling corresponded extensions. This causes that largefiles specific interactions between the repository enabling largefiles locally and remote (wire) peer fail, because there is no way to know whether largefiles is enabled on the remote repository behind the wire peer, and largefiles specific "wireproto functions" are not given to any wire peers. To avoid this problem, largefiles should be enabled in wider scope than each repositories (e.g. user-wide "${HOME}/.hgrc"). This patch introduces "wirepeersetupfuncs" to setup wire peer by extensions already enabled. Functions registered into "wirepeersetupfuncs" are invoked for all wire peers. This patch uses plain list instead of "util.hooks" for "wirepeersetupfuncs", because the former allows to control order of function invocation by order of extension enabling: it may be useful for workaround of problems with combination of enabled extensions
Thu, 27 Mar 2014 17:21:27 -0500 templater: raise error for unknown func stable
Sean Farley <sean.michael.farley@gmail.com> [Thu, 27 Mar 2014 17:21:27 -0500] rev 20857
templater: raise error for unknown func Previously, if a template '{foo()}' was given, the buildfunc would not be able to match it and hit a code path that would not return so it would error out later in the templater stating that NoneType was not iterable. This patch makes sure that a proper error is raised so that the user can be informed. Tests have been updated.
Tue, 18 Mar 2014 14:29:33 -0700 bundle2: support bundling of empty part (with a type)
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 18 Mar 2014 14:29:33 -0700] rev 20856
bundle2: support bundling of empty part (with a type) Here start the work on bundle2 parts. Our first step is to be able to bundle a simplistic part that just have a type, no parameters, empty payload.
Wed, 26 Mar 2014 18:51:49 -0700 revsetbenchmark: add a summary at the end of execution
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 26 Mar 2014 18:51:49 -0700] rev 20855
revsetbenchmark: add a summary at the end of execution The summary list timing per revset making it much more easier to compare revision to each other.
Wed, 26 Mar 2014 18:39:56 -0700 revsetbenchmark: retrieve the benchmark value in python
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 26 Mar 2014 18:39:56 -0700] rev 20854
revsetbenchmark: retrieve the benchmark value in python We retrieve the output of the perf extension and print it ourself. This open the door to processing of this data in the script.
Wed, 26 Mar 2014 18:36:19 -0700 revsetbenchmark: get revision to benchmark in a function
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 26 Mar 2014 18:36:19 -0700] rev 20853
revsetbenchmark: get revision to benchmark in a function And move it to proper subprocess call.
Wed, 26 Mar 2014 18:27:17 -0700 revsetbenchmark: convert revision display to proper subprocesscall
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 26 Mar 2014 18:27:17 -0700] rev 20852
revsetbenchmark: convert revision display to proper subprocesscall
Wed, 26 Mar 2014 18:26:18 -0700 revsetbenchmark: convert performance call to proper subprocess call
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 26 Mar 2014 18:26:18 -0700] rev 20851
revsetbenchmark: convert performance call to proper subprocess call
Wed, 26 Mar 2014 18:14:15 -0700 revsetbenchmark: convert update to proper subprocess call
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 26 Mar 2014 18:14:15 -0700] rev 20850
revsetbenchmark: convert update to proper subprocess call
Thu, 27 Mar 2014 16:52:24 -0500 revsetbenchmark: fix semicolon
Matt Mackall <mpm@selenic.com> [Thu, 27 Mar 2014 16:52:24 -0500] rev 20849
revsetbenchmark: fix semicolon
Wed, 26 Mar 2014 18:03:30 -0700 revsetbenchmark: simplify and convert the script to python
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 26 Mar 2014 18:03:30 -0700] rev 20848
revsetbenchmark: simplify and convert the script to python The script is now in python. That translation is very raw, more improvement to comes: The "current code" and "base" entry have been dropped. This is trivial to get same result using a tagged revision or "." in the list of benchmarked revision.
Wed, 26 Mar 2014 16:38:08 -0700 revsetbenchmapi: fix template
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 26 Mar 2014 16:38:08 -0700] rev 20847
revsetbenchmapi: fix template The revision description missed an \n
Wed, 26 Mar 2014 17:25:11 -0700 perf: unroll the result in perfrevset
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 26 Mar 2014 17:25:11 -0700] rev 20846
perf: unroll the result in perfrevset With the new lazy revset implementation, we need to actually read all elements to trigger all the computations. Otherwise a no-op if of course much faster than the full work.
Thu, 20 Mar 2014 18:55:28 -0700 _addset: add a __len__ method
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 20 Mar 2014 18:55:28 -0700] rev 20845
_addset: add a __len__ method Back in the time where repo.revs(...) returned a list, calling `len(...)` on the result was quite common. We reinstall this on _addset. There is absolutely no easy way to test this from the command line. The commands using this in the evolve extension will eventually land into core.
Wed, 19 Mar 2014 17:53:45 -0700 bundle2: implement the mandatory/advisory logic for parameter
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 19 Mar 2014 17:53:45 -0700] rev 20844
bundle2: implement the mandatory/advisory logic for parameter Parameter starting with an upper case are mandatory, the one starting with a lower case are advisory and may be ignored.
Wed, 19 Mar 2014 17:11:49 -0700 bundle2: print debug information during unbundling
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 19 Mar 2014 17:11:49 -0700] rev 20843
bundle2: print debug information during unbundling The unbundler class is now feed with an ui object and use it to transmit data about the unbundling process.
Tue, 18 Mar 2014 19:07:10 -0700 bundle2: print debug information during bundling
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 18 Mar 2014 19:07:10 -0700] rev 20842
bundle2: print debug information during bundling The bundler class is now feed with an ui object and use it to transmit data about the bundling process.
Wed, 19 Mar 2014 02:36:21 -0700 bundle2: add ability to write to a file to the test
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 19 Mar 2014 02:36:21 -0700] rev 20841
bundle2: add ability to write to a file to the test Next changesets are about improving debug output during bundling. We won't be able to simply bundle to stdin in this case. The bundle2 stream would be interleaved with debug output.
Fri, 21 Mar 2014 16:09:17 -0700 subrepo: factor out Git version check to add doctests
Siddharth Agarwal <sid0@fb.com> [Fri, 21 Mar 2014 16:09:17 -0700] rev 20840
subrepo: factor out Git version check to add doctests Followup to 6a2acb0d9352::e5641536e4d5.
Sat, 15 Feb 2014 19:51:20 +0900 contrib: add "hgperf" command to measure performance of commands easily
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 15 Feb 2014 19:51:20 +0900] rev 20839
contrib: add "hgperf" command to measure performance of commands easily Newly added "hgperf" command repeats "dispatch.runcommand()" for specified Mercurial command and measure performance of it in the same manner of "contrib/perf.py" extension. Users (mainly developers) can examine performance of the target command easily, without adding new entry for it to "contrib/perf.py" extension.
Sat, 15 Feb 2014 19:54:14 +0900 grep: exit loop immediately, if matching is found in the file for "hg grep -l"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 15 Feb 2014 19:54:14 +0900] rev 20838
grep: exit loop immediately, if matching is found in the file for "hg grep -l" Before this patch, internal function "display()" of "hg grep" is not efficient for "-l"/"--files-with-matches", because loop is continued, even after the first matching is found in the specified file. This patch exits loop immediately, if matching is found for "--files-with-matches". In this case, "before is None" is equal to "opts.get('files_with_matches')".
Sat, 15 Feb 2014 19:54:05 +0900 grep: use "found" instead of "filerevmatches" examination for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 15 Feb 2014 19:54:05 +0900] rev 20837
grep: use "found" instead of "filerevmatches" examination for efficiency Before this patch, internal function "display()" of "hg grep" stores whether matching is already found or not into the dictionary "filerevmatches" by "(fn, rev)" tuple as the key. But this is redundant, because: - "filerevmatches" is local variable of "display()", so each "display()" invocations don't affect others - both "fn" and "rev" (gotten from "ctx" argument) are never changed in each "display()" invocations Then, "filerevmatches" should have only one entry at most, and "(fn, rev) in filerevmatches" should be equal to "found". This patch uses "found" instead of "filerevmatches" examination for efficiency.
Sat, 15 Feb 2014 19:52:36 +0900 grep: reuse the first "util.binary()" result for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 15 Feb 2014 19:52:36 +0900] rev 20836
grep: reuse the first "util.binary()" result for efficiency Before this patch, to check whether the file in the specified revision is binary or not, "util.binary()" is invoked via internal function "binary()" of "hg grep" once per a line of "hg grep" output, even though binary-ness is not changed in the same file. This patch reuses the first "util.binary()" invocation result by annotating internal function "binary()" with "@util.cachefunc". Performance improvement measured by "hgperf grep -r 88d8e568add1 vfs mercurial/scmutil.py": before this patch: ! wall 0.024000 comb 0.015600 user 0.015600 sys 0.000000 (best of 118) after this patch: ! wall 0.023000 comb 0.015600 user 0.015600 sys 0.000000 (best of 123) Status of recent(88d8e568add1) "mercurial/scmutil.py": # of lines: 919 (may affect cost of search) # of bytes: 29633 (may affect cost of "util.binary()") # of matches: 22 (may affect frequency of "util.binary()")
Sat, 15 Feb 2014 19:52:26 +0900 util: add the code path to "cachefunc()" for the function taking no arguments
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 15 Feb 2014 19:52:26 +0900] rev 20835
util: add the code path to "cachefunc()" for the function taking no arguments Before this patch, "util.cachefunc()" caches the value returned by the specified function into dictionary "cache", even if the specified function takes no arguments. In such case, "cache" has at most one entry, and distinction between entries in "cache" is meaningless. This patch adds the code path to "cachefunc()" for the function taking no arguments for efficiency: to store only one cached value, using list "cache" is a little faster than using dictionary "cache".
(0) -10000 -3000 -1000 -300 -100 -50 -28 +28 +50 +100 +300 +1000 +3000 +10000 +30000 tip