Thu, 07 May 2015 13:47:45 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 07 May 2015 13:47:45 -0500] rev 24951
merge with stable
Wed, 06 May 2015 09:52:10 -0700 extensions: clear aftercallbacks after execution (issue4646) stable
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 06 May 2015 09:52:10 -0700] rev 24950
extensions: clear aftercallbacks after execution (issue4646) It was reported that enabling pager without color could cause a hang. Inserting print statements revealed that the callbacks in extensions._aftercallbacks were being invoked twice. extensions.loadall can be called multiple times. If entries in extensions._aftercallbacks linger between calls, this could result in double execution of the callbacks. This can lead to unwanted behavior. The reproduce steps in the bug seem to only occur when the output of a command is less than the size of the current screen. This is not something that can easily be tested. I verified the test case works with this patch and that pager and color interaction continues to work. Since we have no existing automated tests for pager, this sadly appears to be the best testing I can do.
Mon, 04 May 2015 10:17:34 +0900 templater: strictly parse leading backslashes of '{' (issue4569) (BC) stable
Yuya Nishihara <yuya@tcha.org> [Mon, 04 May 2015 10:17:34 +0900] rev 24949
templater: strictly parse leading backslashes of '{' (issue4569) (BC) Because double backslashes are processed as a string escape sequence, '\\{' should start the template syntax. On the other hand, r'' disables any sort of \-escapes, so r'\{' can go either way, never start the template syntax or always start it. I simply chose the latter, which means r'\{' is the same as '\\{'.
Mon, 04 May 2015 09:54:01 +0900 templater: do not process \-escapes at parsestring() (issue4290) stable
Yuya Nishihara <yuya@tcha.org> [Mon, 04 May 2015 09:54:01 +0900] rev 24948
templater: do not process \-escapes at parsestring() (issue4290) This patch brings back pre-2.8.1 behavior. The result of parsestring() is stored in templater's cache, t.cache, and then it is parsed as a template string by compiletemplate(). So t.cache should keep an unparsed string no matter if it is sourced from config value. Otherwise backslashes would be processed twice. The test vector is borrowed from 64b4f0cd7336.
Tue, 14 Apr 2015 13:17:33 -0700 bookmarks: rename bookmarkcurrent to activebookmark (API)
Ryan McElroy <rmcelroy@fb.com> [Tue, 14 Apr 2015 13:17:33 -0700] rev 24947
bookmarks: rename bookmarkcurrent to activebookmark (API) Today, the terms 'active' and 'current' are interchangeably used throughout the codebase in reference to the active bookmark (the bookmark that will be updated with the next commit). This leads to confusion among developers and users. This patch is part of a series to standardize the usage to 'active' throughout the mercurial codebase and user interface.
Mon, 13 Apr 2015 23:03:13 -0700 bookmarks: rename readcurrent to readactive (API)
Ryan McElroy <rmcelroy@fb.com> [Mon, 13 Apr 2015 23:03:13 -0700] rev 24946
bookmarks: rename readcurrent to readactive (API) Today, the terms 'active' and 'current' are interchangeably used throughout the codebase in reference to the active bookmark (the bookmark that will be updated with the next commit). This leads to confusion among developers and users. This patch is part of a series to standardize the usage to 'active' throughout the mercurial codebase and user interface.
Mon, 13 Apr 2015 22:27:01 -0700 bookmarks: rename setcurrent to activate (API)
Ryan McElroy <rmcelroy@fb.com> [Mon, 13 Apr 2015 22:27:01 -0700] rev 24945
bookmarks: rename setcurrent to activate (API) Today, the terms 'active' and 'current' are interchangeably used throughout the codebase in reference to the active bookmark (the bookmark that will be updated with the next commit). This leads to confusion among developers and users. This patch is part of a series to standardize the usage to 'active' throughout the mercurial codebase and user interface.
Mon, 13 Apr 2015 21:53:37 -0700 bookmarks: rename unsetcurrent to deactivate (API)
Ryan McElroy <rmcelroy@fb.com> [Mon, 13 Apr 2015 21:53:37 -0700] rev 24944
bookmarks: rename unsetcurrent to deactivate (API) Today, the terms 'active' and 'current' are interchangeably used throughout the codebase in reference to the active bookmark (the bookmark that will be updated with the next commit). This leads to confusion among developers and users. This patch is part of a series to standardize the usage to 'active' throughout the mercurial codebase and user interface.
Wed, 06 May 2015 17:15:38 +0200 subrepo: correctly handle git subdirectory status change
Mathias De Maré <mathias.demare@gmail.com> [Wed, 06 May 2015 17:15:38 +0200] rev 24943
subrepo: correctly handle git subdirectory status change 'git diff-index' by default does not recurse into subdirectories when changes are found. As a result, the directory is shown as changed, rather than the files in this directory. Adding '-r' results in recursing until the blobs themselves are checked.
Wed, 06 May 2015 16:56:28 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 06 May 2015 16:56:28 -0500] rev 24942
merge with stable
Sun, 12 Apr 2015 15:36:10 -0400 setup: hide octal literals inside strings so they're portable (issue4554)
Augie Fackler <augie@google.com> [Sun, 12 Apr 2015 15:36:10 -0400] rev 24941
setup: hide octal literals inside strings so they're portable (issue4554)
Wed, 26 Mar 2014 15:55:50 -0700 revset: avoid returning duplicates when returning ancestors
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 26 Mar 2014 15:55:50 -0700] rev 24940
revset: avoid returning duplicates when returning ancestors Before this patch, _revancestors were giving false result when a revision was duplicated in the input. Duplicated entry are rare but may happen when using the `%lx` notation internally. This series has no visible impact on the performance of the function according to benchmark.
Wed, 26 Mar 2014 16:21:30 -0700 revset: use an iterator instead of a dequeue in ancestors()
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 26 Mar 2014 16:21:30 -0700] rev 24939
revset: use an iterator instead of a dequeue in ancestors() The dequeue was actually just used to be able to pop value one at a time. Building the dequeue means we are reading all the input value at once at the beginning of the evaluation. This defeat the lazyness of revset. We replace the deque with iterator usage for the sake of simplicity and lazyness. This provide massive speedup to get the first result if the input set is big max(::all()) before) wall 0.001917 comb 0.000000 user 0.000000 sys 0.000000 (best of 1115) after) wall 0.000107 comb 0.000000 user 0.000000 sys 0.000000 (best of 22222)
Wed, 06 May 2015 11:29:09 -0700 revset: return early when revs is empty
Martin von Zweigbergk <martinvonz@google.com> [Wed, 06 May 2015 11:29:09 -0700] rev 24938
revset: return early when revs is empty By introducing an early return in _revancestors() when revs is empty, we make it so inputrev is never None, which simplifies the subsequent code.
Wed, 26 Mar 2014 16:14:30 -0700 revset: rename 'revsnode' to 'inputrev' in ancestors
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 26 Mar 2014 16:14:30 -0700] rev 24937
revset: rename 'revsnode' to 'inputrev' in ancestors We usually use 'node' for variable containing 20 bytes hash. There is nothing nodish in this variable, so we rename it to "inputrev" as it old the next entry of the iteration.
Mon, 04 May 2015 12:36:48 -0700 revset: make generatorset.__nonzero__ lazy
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 04 May 2015 12:36:48 -0700] rev 24936
revset: make generatorset.__nonzero__ lazy The 'for r in self:' call could trigger full consumption of the generator while we only need a single value. We also fast path if a single value got already computed. See inline comment for more details. This provide massive speedup for lazy operation using boolean testing. max(::tip) e5b507efb36e) wall 0.055609 comb 0.060000 user 0.060000 sys 0.000000 (best of 100) after change) wall 0.000109 comb 0.000000 user 0.000000 sys 0.000000 (best of 19146)
Tue, 05 May 2015 15:33:01 -0700 tests: test that we can convert to manifestv2 with clone
Drew Gottlieb <drgott@google.com> [Tue, 05 May 2015 15:33:01 -0700] rev 24935
tests: test that we can convert to manifestv2 with clone This just adds a test to ensure that we can convert a manifestv1 repo to a manifestv2 repo (for future commits only) by means of a local clone.
Mon, 13 Apr 2015 18:11:47 -0400 requires: move requires file writing func from localrepo to scmutil
Drew Gottlieb <drgott@google.com> [Mon, 13 Apr 2015 18:11:47 -0400] rev 24934
requires: move requires file writing func from localrepo to scmutil The logic to read a requires file resides in scmutil, so it's only logical that the logic to write the file should be there too. And now I've typed logic too many times it no longer looks like a word. Logically.
Tue, 05 May 2015 11:15:17 -0700 histedit: fix test-histedit-edit on vfat stable
Durham Goode <durham@fb.com> [Tue, 05 May 2015 11:15:17 -0700] rev 24933
histedit: fix test-histedit-edit on vfat test-histedit-edit was broken because it relied on the HGEDITOR script being executable. Instead, lets just execute 'sh' and pass it the script to run. This seems to be the pattern followed in other tests.
Sun, 03 May 2015 12:28:15 -0400 revset: don't error out if tokens parse as existing symbols
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Sun, 03 May 2015 12:28:15 -0400] rev 24932
revset: don't error out if tokens parse as existing symbols It makes perfect sense for tokens to parse as existing revset symbols (revset functions), and doesn't break anything, since parsing symbols as functions works correctly in the presence of parens. For example, if "only" is a bookmark, this used to error out, hg log -r "only(only, @)" which shouldn't, as the inner "only" is unambiguously not a function. So we just remove the symbolset function and replace its calling site with the stringset function. For the tests, we confirm that "date" and "only" are both parsed as revision names both inside revset expressions (e.g. an expression containing ::) and inside old-style revision expressions (e.g. those containing the name of the revision alone).
Tue, 05 May 2015 12:33:26 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 05 May 2015 12:33:26 -0500] rev 24931
merge with stable
Sun, 26 Apr 2015 13:43:01 -0400 test-command-template: minor clarification in comment
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Sun, 26 Apr 2015 13:43:01 -0400] rev 24930
test-command-template: minor clarification in comment
Tue, 28 Apr 2015 15:29:15 -0400 test-command-template: test the phase template more precisely
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Tue, 28 Apr 2015 15:29:15 -0400] rev 24929
test-command-template: test the phase template more precisely The current test that greps for "phase:" only checks that the word "phase" is in the output, but does not test that nothing else gets added by this template. This improves these tests by showing a unified
Tue, 28 Apr 2015 16:51:23 -0700 obsolete: speed up unstable computation
Laurent Charignon <lcharignon@fb.com> [Tue, 28 Apr 2015 16:51:23 -0700] rev 24928
obsolete: speed up unstable computation Speed up the computation of the unstable revset by using the not public() revset. In another series of patches, we optimize the not public() revset and together it leads to a 50-100x speedup on the computation of unstable() for our big repos.
Fri, 24 Apr 2015 14:46:30 -0700 obsolete: speed up computation of bumped revset
Laurent Charignon <lcharignon@fb.com> [Fri, 24 Apr 2015 14:46:30 -0700] rev 24927
obsolete: speed up computation of bumped revset Speed up the computation of the bumped revset by using the not public() revset. In another patch series, we optimized the not public() revset. Together, this cuts the cost of the computation of bumped() from 17% of the total time of smartlog on our big repo to under 0.1% of the total time.
Thu, 19 Mar 2015 13:15:20 -0700 run-test: include test name in the return vlog
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 19 Mar 2015 13:15:20 -0700] rev 24926
run-test: include test name in the return vlog Otherwise using --verbose and --jobs gives useless output.
Tue, 28 Apr 2015 12:31:30 -0400 manifest: document return type of readfast()
Augie Fackler <augie@google.com> [Tue, 28 Apr 2015 12:31:30 -0400] rev 24925
manifest: document return type of readfast() I keep having to ponder out what readfast() means, and it always surprises me. Document the return type in the docstring so that future readers won't have to puzzle this out again.
Mon, 04 May 2015 22:33:29 -0400 archive: always use portable path component separators with subrepos stable
Matt Harbison <matt_harbison@yahoo.com> [Mon, 04 May 2015 22:33:29 -0400] rev 24924
archive: always use portable path component separators with subrepos The previous behavior when archiving a subrepo 's' on Windows was to internally name the file under it 's\file', due to the use of vfs.reljoin(). When printing the file list from the archive on Windows or Linux, the file was named 's\\file'. The archive extracted OK on Windows, but if the archive was brought to a Linux system, it created a file named 's\file' instead of a directory 's' containing 'file'. *.zip format achives seemed not to have the problem, but this was definitely an issue with *.tgz archives. Largefiles actually got this right, but a test is added to keep this from regressing. The subrepo-deep-nested-change.t test was repurposed to archive to a file, since there are several subsequent tests that archive to a directory. The output change is losing the filesystem prefix '../archive_lf' and not listing the directories 'sub1' and 'sub1/sub2'.
Sat, 11 Oct 2014 01:17:40 -0700 revset: narrow the subset using smartset operation in roots()
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 11 Oct 2014 01:17:40 -0700] rev 24923
revset: narrow the subset using smartset operation in roots() We were manually creating a base with explicit subset testing. We should let smartset magic happen and optimise that logic if needed. benchmark show some massive speedup when "parents set" is huge and "subset" is small. revset: 42:68 and roots(42:tip) 0) wall 0.011322 comb 0.010000 user 0.010000 sys 0.000000 (best of 161) 1) wall 0.002282 comb 0.010000 user 0.010000 sys 0.000000 (best of 1082) Minor speedup in simple case (were fullreposet helps) revset: roots(0::tip) 0) wall 0.095688 comb 0.100000 user 0.100000 sys 0.000000 (best of 85) 1) wall 0.084448 comb 0.080000 user 0.080000 sys 0.000000 (best of 95) revset: roots((0:tip)::) 0) wall 0.146752 comb 0.140000 user 0.140000 sys 0.000000 (best of 58) 1) wall 0.143538 comb 0.140000 user 0.140000 sys 0.000000 (best of 59) And small overhead then the "parents set" is fairly complicated (transforming it into a revset once and for all appears to be faster). revset: roots((tip~100::) - (tip~100::tip)) 0) wall 0.004652 comb 0.010000 user 0.010000 sys 0.000000 (best of 544) 1) wall 0.004878 comb 0.010000 user 0.010000 sys 0.000000 (best of 479) revset: roots((0::) - (0::tip)) 0) wall 0.146587 comb 0.150000 user 0.150000 sys 0.000000 (best of 53) 1) wall 0.157192 comb 0.160000 user 0.160000 sys 0.000000 (best of 53) revset: first(roots((0::) - (0::tip))) 0) wall 0.152924 comb 0.150000 user 0.150000 sys 0.000000 (best of 57) 1) wall 0.153192 comb 0.160000 user 0.160000 sys 0.000000 (best of 55)
Mon, 04 May 2015 10:38:45 -0700 context: make warning message for hidden revision extensible
Laurent Charignon <lcharignon@fb.com> [Mon, 04 May 2015 10:38:45 -0700] rev 24922
context: make warning message for hidden revision extensible Extensions might want to create new filternames and change what revisions are considered hidden or shown. This is the case for inhibit that enables direct access to hidden hashes with the visible-directaccess-nowarn filtername. By using startswith instead of a direct comparison with 'visible' we allow extensions to do that and not work directly on the 'visible' filtername used by core.
(0) -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip