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.
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".
Wed, 26 Mar 2014 12:52:57 -0500 help: add examples to incoming
Matt Mackall <mpm@selenic.com> [Wed, 26 Mar 2014 12:52:57 -0500] rev 20834
help: add examples to incoming
Tue, 25 Mar 2014 16:10:07 -0700 revset: fix generatorset race condition
Durham Goode <durham@fb.com> [Tue, 25 Mar 2014 16:10:07 -0700] rev 20833
revset: fix generatorset race condition If two things were iterating over a generatorset at the same time, they could miss out on the things the other was generating, resulting in incomplete results. This fixes it by making it possible for two things to iterate at once, by always checking the _genlist at the beginning of each iteration. I was only able to repro it with pending changes from my other commits, but they aren't ready yet. So I'm unable to add a test for now.
Tue, 25 Mar 2014 23:07:52 +0100 tests: don't hardcode path to bash interpreter
Olle Lundberg <geek@nerd.sh> [Tue, 25 Mar 2014 23:07:52 +0100] rev 20832
tests: don't hardcode path to bash interpreter Use the env binary to figure out the correct bash to use. Certain systems ships with an ancient version of bash, but the user might have installed a newer one that is earlier in $PATH. For example the current version of Mac OS X ships version 3.2.51 of bash, which does not understand new fancy builtins such as readarray. A user might install a newer version of bash, use that as their shell and add that path before bin.
Wed, 26 Mar 2014 11:59:13 +0100 contrib: don't hardcode path to bash interpreter
Olle Lundberg <geek@nerd.sh> [Wed, 26 Mar 2014 11:59:13 +0100] rev 20831
contrib: don't hardcode path to bash interpreter Use the env binary to figure out the correct bash to use. Certain systems ships with an ancient version of bash, but the user might have installed a newer one that is earlier in $PATH. For example the current version of Mac OS X ships version 3.2.51 of bash, which does not understand new fancy builtins such as readarray. A user might install a newer version of bash, use that as their shell and add that path before bin.
Tue, 25 Mar 2014 23:10:15 +0100 contrib: explicitly enable perf extension for revset tests
Olle Lundberg <geek@nerd.sh> [Tue, 25 Mar 2014 23:10:15 +0100] rev 20830
contrib: explicitly enable perf extension for revset tests If a developer doesn't have the perf extension enabled the revset benchmarking will fail. This patch explicitly enables the perf extension when running the tests.
Tue, 25 Mar 2014 16:17:16 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 25 Mar 2014 16:17:16 -0500] rev 20829
merge with stable
Mon, 24 Mar 2014 20:00:18 -0700 revset: improve performance of _generatorset.__contains__ (issue 4201)
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 24 Mar 2014 20:00:18 -0700] rev 20828
revset: improve performance of _generatorset.__contains__ (issue 4201) _generatorset.__contains__ and __contains__ from child classes were calling into __iter__ to look for values. Since all previously-encountered values from the generator were cached and checked in __contains__ before this iteration, __contains__ was effectively performing iteration busy work which could lead to an explosion of redundant work. This patch changes __contains__ to be more intelligent. Instead of looking at all values via __iter__, __contains__ will instead go straight to "new" values from the underlying generator. On a clone of the Firefox repository with around 200,000 changesets, this patch decreases the execution time of the revset '::(200067)::' from ~100s to ~4s on the author's machine. Rebase operations (which use the aforementioned revset), speed up accordingly.
Sat, 22 Mar 2014 23:39:51 +0900 localrepo: omit ".hgsubstate" also from "added" files
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 22 Mar 2014 23:39:51 +0900] rev 20827
localrepo: omit ".hgsubstate" also from "added" files Before this patch, "localrepository.commit()" omits ".hgsubstate" from "modified" (changes[0]) and "removed" (changes[2]) file list before checking subrepositories, but leaves one in "added" (changes[1]) as it is. Then, "localrepository.commit()" adds ".hgsubstate" into "modified" or "removed" list forcibly, according to subrepository statuses. If "added" contains ".hgsubstate", the committed context will contain two ".hgsubstate" in its "files": one from "added" (not omitted one), and another from "modified" or "removed" (newly added one). How many times ".hgsubstate" appears in "files" changes node hash, even though revision content is same, because node hash calculation uses the specified "files" directly (without duplication check or so). This means that node hash of committed revision changes according to existence of ".hgsubstate" in "added" at "localrepository.commit()". ".hgsubstate" is treated as "added", not only in accidental cases, but also in the case of "qpush" for the patch adding ".hgsubstate". This patch omits ".hgsubstate" also from "added" files before checking subrepositories. This patch also omits ".hgsubstate" exclusion in "qnew"/"qrefresh" introduced by changeset d666da075b91, because this patch makes them meaningless. "hg parents --template '{files}\n'" newly added to "test-mq-subrepo.t" enhances checking unexpected multiple appearances of ".hgsubstate" in "files" of created/refreshed MQ revisions.
Fri, 07 Mar 2014 14:06:52 -0500 dispatch: only do __import__(debugger) when a debugger is requested stable
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Fri, 07 Mar 2014 14:06:52 -0500] rev 20826
dispatch: only do __import__(debugger) when a debugger is requested When having ui.debugger=somedebugger in one's ~/.hgrc, this then somedebugger would be imported for every hg command. With this patch, this import only happens if the --debugger parameter is passed.
Tue, 25 Mar 2014 19:34:17 +0900 hg: use "os.path.join()" to join path components which may be empty (issue4203) stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 25 Mar 2014 19:34:17 +0900] rev 20825
hg: use "os.path.join()" to join path components which may be empty (issue4203) Changset 2d0ab571b822 rewriting "hg.copystore()" with vfs uses 'dstbase + "/lock"' instead of "os.path.join()", because target files given from "store.copyfiles()" already uses "/" as path separator But in the repository using revlog format 0, "dstbase" becomes empty ("data" directory is located under ".hg" directly), and 'dstbase + "/lock"' is treated as "/lock": in almost all cases, write access to "/lock" causes "permission denied". This patch uses "os.path.join()" to join path components which may be empty in "hg.copystore()".
Mon, 24 Mar 2014 21:27:40 -0400 revset: document the regular expression support for tag(name) stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 24 Mar 2014 21:27:40 -0400] rev 20824
revset: document the regular expression support for tag(name) This has been supported since 20f55613fb2a, in 2.3.
Sat, 22 Mar 2014 14:46:55 -0500 help: allow -k to find debug commands
Matt Mackall <mpm@selenic.com> [Sat, 22 Mar 2014 14:46:55 -0500] rev 20823
help: allow -k to find debug commands
Sat, 15 Mar 2014 16:14:04 +0100 help: let 'hg help debug' show the list of secret debug commands
Mads Kiilerich <madski@unity3d.com> [Sat, 15 Mar 2014 16:14:04 +0100] rev 20822
help: let 'hg help debug' show the list of secret debug commands The names of the debug commands are not easy to remember and they are not easy to find.
Fri, 28 Feb 2014 02:09:00 +0100 tests: add run-tests --changed option for running tests changed in revisions
Mads Kiilerich <madski@unity3d.com> [Fri, 28 Feb 2014 02:09:00 +0100] rev 20821
tests: add run-tests --changed option for running tests changed in revisions Convenient when polishing patches and changing details of how they change test output. This will probably break in weird ways for revsets with special quoting ... but it is good enough for run-tests. Usage example: yes | ./run-tests.py -li --changed qparent
Wed, 19 Mar 2014 00:18:30 +0100 repo: rephrase the "missing requirement" error message
Mads Kiilerich <madski@unity3d.com> [Wed, 19 Mar 2014 00:18:30 +0100] rev 20820
repo: rephrase the "missing requirement" error message Unknown requirements will now be reported as: abort: repository requires features unknown to this Mercurial: largefiles! (see http://mercurial.selenic.com/wiki/MissingRequirement for more information) Some features of this phrasing: * avoid double ':' in abort message * make it more clear who requires and knows what * don't quote the requirement names - it is not something the user entered or need the exact spelling of ... and it is "identifiers" that are unambiguous anyway * remove double hint by removing "(upgrade Mercurial)" comment * don't mention upgrading Mercurial without mentioning enabling the feature - instead, just refer to wiki page for both * don't just talk about "details", talk about "more information"
Thu, 20 Mar 2014 17:34:02 -0700 revpair: drop useless conditional
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 20 Mar 2014 17:34:02 -0700] rev 20819
revpair: drop useless conditional The `if not revs:` case is tested at the beginning of the function.
Fri, 21 Mar 2014 17:20:56 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Fri, 21 Mar 2014 17:20:56 -0500] rev 20818
merge with stable
Thu, 20 Mar 2014 19:39:05 -0700 subrepo: add trailing newlines to warnings stable
Siddharth Agarwal <sid0@fb.com> [Thu, 20 Mar 2014 19:39:05 -0700] rev 20817
subrepo: add trailing newlines to warnings
(0) -10000 -3000 -1000 -300 -100 -64 +64 +100 +300 +1000 +3000 +10000 +30000 tip