Sat, 27 Jun 2015 11:51:25 -0700 bufferedinputpipe: remove an outdate comment
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 27 Jun 2015 11:51:25 -0700] rev 25671
bufferedinputpipe: remove an outdate comment This comment is the remains of a intermediate implementation using self._buffer += data This implementation never made it to the repository and we can safely drop the comment.
Thu, 25 Jun 2015 22:20:09 -0700 statichttprepo: kill off sopener
Siddharth Agarwal <sid0@fb.com> [Thu, 25 Jun 2015 22:20:09 -0700] rev 25670
statichttprepo: kill off sopener
Thu, 25 Jun 2015 22:19:49 -0700 obsolete: replace references to 'sopener' with 'svfs'
Siddharth Agarwal <sid0@fb.com> [Thu, 25 Jun 2015 22:19:49 -0700] rev 25669
obsolete: replace references to 'sopener' with 'svfs'
Thu, 25 Jun 2015 22:18:56 -0700 exchange: replace references to 'sopener' with 'svfs'
Siddharth Agarwal <sid0@fb.com> [Thu, 25 Jun 2015 22:18:56 -0700] rev 25668
exchange: replace references to 'sopener' with 'svfs'
Thu, 25 Jun 2015 22:17:52 -0700 localrepo: kill off sopener (API)
Siddharth Agarwal <sid0@fb.com> [Thu, 25 Jun 2015 22:17:52 -0700] rev 25667
localrepo: kill off sopener (API) sopener is deprecated since 7034365089bf (Mercurial 2.3). It's annoying for extension authors to have to deal with both. Let's just kill it off.
Thu, 25 Jun 2015 22:16:36 -0700 share: replace reference to 'sopener' with 'svfs'
Siddharth Agarwal <sid0@fb.com> [Thu, 25 Jun 2015 22:16:36 -0700] rev 25666
share: replace reference to 'sopener' with 'svfs' sopener is deprecated. It's annoying for extension authors to have to deal with both. Let's just kill it off.
Thu, 25 Jun 2015 21:16:47 -0400 archive: don't assume '.' is being archived for changessincelatesttag stable
Matt Harbison <matt_harbison@yahoo.com> [Thu, 25 Jun 2015 21:16:47 -0400] rev 25665
archive: don't assume '.' is being archived for changessincelatesttag Hardcoding '.' is wrong, and yielded strange results when archiving old revisions. For example, when archiving the cset that adds the signature to 3.4 (c48850339988), the resulting value was previously 51 (the number of commits on stable between 3.4 and today), even though it was a direct descendant of a tag, with a {latesttagdistance} of 2. This still includes all other _ancestor_ paths not included in {latesttag}. Note that archiving wdir() currently blows up several lines above this when building the 'base' variable. Since wdir() isn't documented, ignore that it needs work to handle wdir() here for now.
Thu, 25 Jun 2015 20:27:36 +0800 hgweb: use css for stripey background in coal
Anton Shestakov <av6@dwimlabs.net> [Thu, 25 Jun 2015 20:27:36 +0800] rev 25664
hgweb: use css for stripey background in coal Since "b8ecc3830c89 or 25dae11bb044::c229a5e7511e" paper style used css for stripes in background for browsing files, for listing branches/tags/bookmarks, and so on. Since coal borrows many paper templates (e.g. shortlogentry.tmpl), it actually tried to do the same, but it didn't have the needed css classes. You can compare https://selenic.com/hg?style=coal with https://selenic.com/hg?style=paper and see how log view in coal style has plain white background, unlike the one in paper style. This wasn't intended. Let's copy css classes directly from style-paper.css and remove parity classes from elements that don't need them anymore. This makes plain white background have stripes again and makes coal/map even more similar to paper/map (which can ease porting changes or %including paper/map in future).
Wed, 24 Jun 2015 11:15:00 -0400 templatekw: correct typo in activebookmark documentation
Matt Harbison <matt_harbison@yahoo.com> [Wed, 24 Jun 2015 11:15:00 -0400] rev 25663
templatekw: correct typo in activebookmark documentation
Wed, 24 Jun 2015 13:41:27 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 24 Jun 2015 13:41:27 -0500] rev 25662
merge with stable
Tue, 23 Jun 2015 22:20:01 -0700 check-code: detect legacy exception syntax
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 23 Jun 2015 22:20:01 -0700] rev 25661
check-code: detect legacy exception syntax We just rewrote all files to use modern exception syntax. Ban the old form. This will detect the "except type, instance" and "except (type1, type2), instance" forms.
Tue, 23 Jun 2015 22:20:08 -0700 global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 23 Jun 2015 22:20:08 -0700] rev 25660
global: mass rewrite to use modern exception syntax Python 2.6 introduced the "except type as instance" syntax, replacing the "except type, instance" syntax that came before. Python 3 dropped support for the latter syntax. Since we no longer support Python 2.4 or 2.5, we have no need to continue supporting the "except type, instance". This patch mass rewrites the exception syntax to be Python 2.6+ and Python 3 compatible. This patch was produced by running `2to3 -f except -w -n .`.
Tue, 23 Jun 2015 22:38:21 -0700 check-code: detect legacy octal syntax
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 23 Jun 2015 22:38:21 -0700] rev 25659
check-code: detect legacy octal syntax Now that we have mass rewriting all files to use the modern octal syntax, detect and ban the legacy syntax, which is no longer supported in Python 3.
Tue, 23 Jun 2015 22:30:33 -0700 global: mass rewrite to use modern octal syntax
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 23 Jun 2015 22:30:33 -0700] rev 25658
global: mass rewrite to use modern octal syntax Python 2.6 introduced a new octal syntax: "0oXXX", replacing "0XXX". The old syntax is not recognized in Python 3 and will result in a parse error. Mass rewrite all instances of the old octal syntax to the new syntax. This patch was generated by `2to3 -f numliterals -w -n .` and the diff was selectively recorded to exclude changes to "<N>l" syntax conversion, which will be handled separately.
Tue, 23 Jun 2015 14:28:15 -0700 revert: change the direction of revert -i
Laurent Charignon <lcharignon@fb.com> [Tue, 23 Jun 2015 14:28:15 -0700] rev 25657
revert: change the direction of revert -i After the discussion on the list about hg revert -i, it seems like we are satisfied with what we called proposition 2. It shows the changes to revert in the same direction as hg diff. This patch makes it the default option. It changes all the + in - and vice versa in the tests for revert -i.
Tue, 23 Jun 2015 13:46:58 -0700 revert: change a test to make the change of direction of revert -i easier
Laurent Charignon <lcharignon@fb.com> [Tue, 23 Jun 2015 13:46:58 -0700] rev 25656
revert: change a test to make the change of direction of revert -i easier Currently we are handling editing of newly-added files with the interactive interface. We are not handling editing of deleted files. In the test for revert, we were editing a newly-added file. Since we want to change the direction of revert -i, this editing of a newly-added file will become editing of a deleted file. Since we don't support that, this patch changes the test to make the rest of the series cleaner.
Sun, 21 Jun 2015 00:56:09 +0900 parser: update documentation about tokenizer and elements
Yuya Nishihara <yuya@tcha.org> [Sun, 21 Jun 2015 00:56:09 +0900] rev 25655
parser: update documentation about tokenizer and elements
Sun, 21 Jun 2015 00:49:26 +0900 parser: accept iterator of tokens instead of tokenizer function and program
Yuya Nishihara <yuya@tcha.org> [Sun, 21 Jun 2015 00:49:26 +0900] rev 25654
parser: accept iterator of tokens instead of tokenizer function and program This can simplify the interface of parse() function. Our tokenizer tends to have optional arguments other than the message to be parsed. Before this patch, the "lookup" argument existed only for the revset, and the templater had to pack [program, start, end] to be passed to its tokenizer.
Sat, 20 Jun 2015 20:11:53 -0700 verify: print hint to run debugrebuildfncache
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 20 Jun 2015 20:11:53 -0700] rev 25653
verify: print hint to run debugrebuildfncache Corrupt fncache is now a recoverable operation. Inform the user how to recover from this warning.
Mon, 22 Jun 2015 09:59:48 -0700 repair: add functionality to rebuild fncache
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 22 Jun 2015 09:59:48 -0700] rev 25652
repair: add functionality to rebuild fncache Currently, there is no way to recover from a missing or corrupt fncache file in place (a clone is required). For certain use cases such as servers and with large repositories, an in-place repair may be desirable. This patch adds functionality for in-place repair of the fncache. The `hg debugrebuildfncache` command is introduced. It ensures the fncache is up to date by reconstructing the fncache from all seen files encountered during a brute force traversal of the repository's entire history. The command will add missing entries and will prune excess ones. Currently, the command no-ops unless the repository has the fncache requirement. The command could later grow the ability to "upgrade" an existing repository to be fncache enabled, if desired. When testing this patch on a local clone of the Firefox repository, it removed a bunch of entries. Investigation revealed that removed entries belonged to empty (0 byte size) .i filelogs. The functionality for pruning fncache of stripped revlogs was introduced in f49d60fa40a5, so the presence of these entries likely predates this feature.
Tue, 23 Jun 2015 13:56:53 -0400 import: cross-reference patch.fuzz option from `hg help import`
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Tue, 23 Jun 2015 13:56:53 -0400] rev 25651
import: cross-reference patch.fuzz option from `hg help import`
Tue, 23 Jun 2015 13:57:39 -0400 import: cross-reference ui.patch option from `hg help import`
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Tue, 23 Jun 2015 13:57:39 -0400] rev 25650
import: cross-reference ui.patch option from `hg help import` This is a fairly obscure patch option. It seems reasonable to expose it a bit more from the help text for `hg import`.
Tue, 23 Jun 2015 13:47:42 -0400 doc: document the ui.patch option
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Tue, 23 Jun 2015 13:47:42 -0400] rev 25649
doc: document the ui.patch option This option has been undocumented since e56c7e05c7e6 (July 2007).
Mon, 22 Jun 2015 13:48:01 -0700 revset: rework 'filteredset.last'
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 22 Jun 2015 13:48:01 -0700] rev 25648
revset: rework 'filteredset.last' 'isascending' and 'isdescending' are methods, not attributes. This led 'last()' to misbehave on some non-ascending filtered sets.
Mon, 22 Jun 2015 10:19:12 -0700 revset: improves time complexity of 'roots(xxx)'
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 22 Jun 2015 10:19:12 -0700] rev 25647
revset: improves time complexity of 'roots(xxx)' The canonical way of doing 'roots(X)' is 'X - children(X)'. This is what the implementation used to be. However, computing children is expensive because it is unbounded. Any changesets in the repository may be a children of '0' so you have to look at all changesets in the repository to compute children(0). Moreover the current revsets implementation for children is not lazy, leading to bad performance when fetching the first result. There is a more restricted algorithm to compute roots: roots(X) = [r for r in X if not parents(r) & X] This achieve the same result while only looking for parent/children relation in the X set itself, making the algorithm 'O(len(X))' membership operation. Another advantages is that it turns the check into a simple filter, preserving all laziness property of the underlying revsets. The speed is very significant and some laziness is restored. -) revset without 'roots(...)' to compare to base line 0) before this change 1) after this change revset #0: roots((tip~100::) - (tip~100::tip)) plain min last -) 0.001082 0.000993 0.000790 0) 0.001366 0.001385 0.001339 1) 0.001257 92% 0.001028 74% 0.000821 61% revset #1: roots((0::) - (0::tip)) plain min last -) 0.134551 0.144682 0.068453 0) 0.161822 0.171786 0.157683 1) 0.137583 85% 0.146204 85% 0.070012 44% revset #2: roots(tip~100:) plain min first last -) 0.000219 0.000225 0.000231 0.000229 0) 0.000513 0.000529 0.000507 0.000539 1) 0.000463 90% 0.000269 50% 0.000267 52% 0.000463 85% revset #3: roots(:42) plain min first last -) 0.000119 0.000146 0.000146 0.000146 0) 0.000231 0.000254 0.000253 0.000260 1) 0.000216 93% 0.000186 73% 0.000184 72% 0.000244 93% revset #4: roots(not public()) plain min first -) 0.000478 0.000502 0.000504 0) 0.000611 0.000639 0.000634 1) 0.000604 0.000560 87% 0.000558 revset #5: roots((0:tip)::) plain min max first last -) 0.057795 0.004905 0.058260 0.004908 0.038812 0) 0.132845 0.118931 0.130306 0.114280 0.127742 1) 0.111659 84% 0.005023 4% 0.111658 85% 0.005022 4% 0.092490 72% revset #6: roots(0::tip) plain min max first last -) 0.032971 0.033947 0.033460 0.032350 0.033125 0) 0.083671 0.081953 0.084074 0.080364 0.086069 1) 0.074720 89% 0.035547 43% 0.077025 91% 0.033729 41% 0.083197 revset #7: 42:68 and roots(42:tip) plain min max first last -) 0.006827 0.000251 0.006830 0.000254 0.006771 0) 0.000337 0.000353 0.000366 0.000350 0.000366 1) 0.000318 94% 0.000297 84% 0.000353 0.000293 83% 0.000351 revset #8: roots(0:tip) plain min max first last -) 0.002119 0.000145 0.000147 0.000147 0.000147 0) 0.047441 0.040660 0.045662 0.040284 0.043435 1) 0.038057 80% 0.000187 0% 0.034919 76% 0.000186 0% 0.035097 80% revset #0: roots(:42 + tip~42:) plain min max first last sort -) 0.000321 0.000317 0.000319 0.000308 0.000369 0.000343 0) 0.000772 0.000751 0.000811 0.000750 0.000802 0.000783 1) 0.000632 81% 0.000369 49% 0.000617 76% 0.000358 47% 0.000601 74% 0.000642 81%
Sat, 20 Jun 2015 16:22:10 -0700 revsetbenchmark: do not abort on failure to run a revset
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 20 Jun 2015 16:22:10 -0700] rev 25646
revsetbenchmark: do not abort on failure to run a revset Instead of aborting the whole process, we just skip entry for revset that failed to run.
Mon, 22 Jun 2015 10:11:31 -0700 osutil: remove Python 2.4 errno conversion workaround
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 22 Jun 2015 10:11:31 -0700] rev 25645
osutil: remove Python 2.4 errno conversion workaround
Mon, 22 Jun 2015 10:09:08 -0700 patch: remove email import workaround for Python 2.4
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 22 Jun 2015 10:09:08 -0700] rev 25644
patch: remove email import workaround for Python 2.4 Python 2.6 provides access to the sub-modules just fine. This workaround is no longer needed since we no longer support Python 2.4.
Sun, 21 Jun 2015 15:18:49 +0900 check-commit: catch both patterns of double empty lines
Yuya Nishihara <yuya@tcha.org> [Sun, 21 Jun 2015 15:18:49 +0900] rev 25643
check-commit: catch both patterns of double empty lines
Sat, 20 Jun 2015 04:13:25 -0700 revsetbenchmarks: ignore empty lines
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 20 Jun 2015 04:13:25 -0700] rev 25642
revsetbenchmarks: ignore empty lines Before this change, empty lines were seen as an entry and the benchmark tried to run benchmark for "".
Sat, 20 Jun 2015 18:03:38 -0700 bundle2: reword debug message for invalid .hgtags data
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 20 Jun 2015 18:03:38 -0700] rev 25641
bundle2: reword debug message for invalid .hgtags data marmoute requested a follow-up to make the verb the first word.
Tue, 07 Apr 2015 14:14:27 -0700 bundle2.getunbundler: rename "header" to "magicstring"
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 07 Apr 2015 14:14:27 -0700] rev 25640
bundle2.getunbundler: rename "header" to "magicstring" This is more consistent with the name used in the bundler class. Thanks goes to Martin von Zweigbergk for pointing this out.
Wed, 24 Jun 2015 12:37:55 -0500 ancestors: prefetch method outside of the loop
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 24 Jun 2015 12:37:55 -0500] rev 25639
ancestors: prefetch method outside of the loop 15412bba5a68 is yet another example where this is worthwhile when it comes to performance, we blindly do it for all 'lazyancestors' methods.
Sun, 21 Jun 2015 13:24:43 +0900 templater: fix handling of \-escapes in raw string literals stable
Yuya Nishihara <yuya@tcha.org> [Sun, 21 Jun 2015 13:24:43 +0900] rev 25638
templater: fix handling of \-escapes in raw string literals The backslash character should start escape sequences no matter if a string is prefixed with 'r'. They are just not interpreted as escape sequences in raw strings. revset.tokenize() handles them correctly, but templater didn't. https://docs.python.org/2/reference/lexical_analysis.html#string-literals
Sat, 20 Jun 2015 23:13:34 +0900 templater: evaluate "query" argument passed to revset() stable
Yuya Nishihara <yuya@tcha.org> [Sat, 20 Jun 2015 23:13:34 +0900] rev 25637
templater: evaluate "query" argument passed to revset() revset() had the same issue as 9452112c8eb0. It crashed by passing non-string expression.
Sat, 20 Jun 2015 19:59:26 -0400 match: let 'path:.' and 'path:' match everything (issue4687) stable
Matt Harbison <matt_harbison@yahoo.com> [Sat, 20 Jun 2015 19:59:26 -0400] rev 25636
match: let 'path:.' and 'path:' match everything (issue4687) Previously, both queries exited with code 1, printing nothing. The pattern in the latter query is normalized to '.', so it is really the same case.
Sun, 28 Sep 2014 20:18:43 -0700 changelog: document the 'readpending' method
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 28 Sep 2014 20:18:43 -0700] rev 25635
changelog: document the 'readpending' method I happen to have spent some time understanding this logic, so I'm leaving documentation for the next poor fellow.
Fri, 10 Oct 2014 17:30:09 -0700 revsets: use '&' instead of '.filter' in head
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 10 Oct 2014 17:30:09 -0700] rev 25634
revsets: use '&' instead of '.filter' in head More high level operations are more likely to be optimised.
Sat, 20 Jun 2015 11:07:36 -0400 fileset: don't suggest private or undocumented queries
Matt Harbison <matt_harbison@yahoo.com> [Sat, 20 Jun 2015 11:07:36 -0400] rev 25633
fileset: don't suggest private or undocumented queries Unlike revsets, it looks like all of the filesets are documented, so there's really nothing to test. This is aimed more at parity with revsets and future-proofing.
Sat, 20 Jun 2015 10:59:56 -0400 revset: don't suggest private or undocumented queries
Matt Harbison <matt_harbison@yahoo.com> [Sat, 20 Jun 2015 10:59:56 -0400] rev 25632
revset: don't suggest private or undocumented queries I noticed when I mistyped 'matching', that it suggested '_matchfiles' as well. Rather than simply exclude names that start with '_', this excludes anything without a docstring. That way, if it isn't in the help text, it isn't suggested, such as 'wdir()'.
Thu, 18 Jun 2015 15:42:40 -0500 patch: add fuzz config flag (issue4697)
Matt Mackall <mpm@selenic.com> [Thu, 18 Jun 2015 15:42:40 -0500] rev 25631
patch: add fuzz config flag (issue4697)
Fri, 19 Jun 2015 11:17:11 -0700 devel-warn: issue a warning for old style revsets
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 19 Jun 2015 11:17:11 -0700] rev 25630
devel-warn: issue a warning for old style revsets We have move to smartset class more than a year ago, we now have the tool to aggressively nudge developer into upgrading their extensions.
Fri, 19 Jun 2015 11:19:45 -0700 devel-warn: move the develwarn function as a method of the ui object
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 19 Jun 2015 11:19:45 -0700] rev 25629
devel-warn: move the develwarn function as a method of the ui object We are going to use this feature in more and more place. Having to import scmutil makes it an import cycle hell.
Thu, 18 Jun 2015 23:08:27 +0900 templates: fix missing closing brace in map-cmdline.status
Yuya Nishihara <yuya@tcha.org> [Thu, 18 Jun 2015 23:08:27 +0900] rev 25628
templates: fix missing closing brace in map-cmdline.status Currently the parser does not validate the last closing brace, but future patches will make it less permissive for this kind of syntax errors.
Fri, 19 Jun 2015 12:00:06 -0500 verify: clarify misleading fncache message
Matt Mackall <mpm@selenic.com> [Fri, 19 Jun 2015 12:00:06 -0500] rev 25627
verify: clarify misleading fncache message This is a message about cache corruption, not repository corruption or actually missing files. Fix message and reduce to a warning.
Fri, 19 Jun 2015 11:07:15 -0700 phase: add a pointer to 'hg help phases' in the 'phase' help
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 19 Jun 2015 11:07:15 -0700] rev 25626
phase: add a pointer to 'hg help phases' in the 'phase' help The command and the general topic have very similar name. The topic is pointing to the command, but the command was not pointing to the topic.
Thu, 18 Jun 2015 15:39:52 -0500 publishing: unconditionally trust publishing flag
Matt Mackall <mpm@selenic.com> [Thu, 18 Jun 2015 15:39:52 -0500] rev 25625
publishing: unconditionally trust publishing flag Unfortunately, there are currently no tests for this behavior because we lack a good way of testing trust.
Thu, 18 Jun 2015 15:34:22 -0500 publishing: use new helper method
Matt Mackall <mpm@selenic.com> [Thu, 18 Jun 2015 15:34:22 -0500] rev 25624
publishing: use new helper method
Thu, 18 Jun 2015 15:33:24 -0500 publishing: add helper method to localrepo
Matt Mackall <mpm@selenic.com> [Thu, 18 Jun 2015 15:33:24 -0500] rev 25623
publishing: add helper method to localrepo
Wed, 10 Jun 2015 19:18:51 -0700 revset: make use of natively-computed set for 'draft()' and 'secret()'
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 10 Jun 2015 19:18:51 -0700] rev 25622
revset: make use of natively-computed set for 'draft()' and 'secret()' If the computation of a set for each phase (done in C) is available, we use it directly instead of applying a simple filter. This give a massive speed-up in the vast majority of cases. On my mercurial repo with about 15000 out of 40000 draft changesets: revset: draft() plain min first last 0) 0.011201 0.019950 0.009844 0.000074 1) 0.000284 2% 0.000312 1% 0.000314 3% 0.000315 x4.3 Bad performance for "last" come from the handling of the 15000 elements set (memory allocation, filtering hidden changesets (99% of it) etc. compared to applying the filter only on a handfuld of revisions (the first draft changesets being close of tip). This is not seen as an issue since: * Timing is still pretty good and in line with all the other one, * Current user of Vanilla Mercurial will not have 1/3 of their repo draft, This bad effect disappears when phase's set is smaller. (about 200 secrets): revset: secret() plain min first last 0) 0.011181 0.022228 0.010851 0.000452 1) 0.000058 0% 0.000084 0% 0.000087 0% 0.000087 19%
Wed, 17 Jun 2015 19:19:57 -0700 revset: refactor the non-public phase code
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Jun 2015 19:19:57 -0700] rev 25621
revset: refactor the non-public phase code Code for draft and secret are the same. We'll make it more complex to take advantages of the set recomputed in C, so we first refactor the code to only have one place to update (and make sure all behave properly). We do not refactor the 'public()' code because it does not have a natively computed set.
Tue, 16 Jun 2015 19:47:46 -0700 revset: translate node directly with changelog in 'head'
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 16 Jun 2015 19:47:46 -0700] rev 25620
revset: translate node directly with changelog in 'head' Using 'repo[X]' is much slower because it creates a 'changectx' object and goes though multiple layers of code to do so. It is also error prone if there is tags, bookmarks, branch or other names that could map to a node hash and take precedence (user are wicked). This provides a significant performance boost on repository with a lot of heads. Benchmark result for a repo with 1181 heads. revset: head() plain min last reverse 0) 0.014853 0.014371 0.014350 0.015161 1) 0.001402 9% 0.000975 6% 0.000874 6% 0.001415 9% revset: head() - public() plain min last reverse 0) 0.015121 0.014420 0.014560 0.015028 1) 0.001674 11% 0.001109 7% 0.000980 6% 0.001693 11% revset: draft() and head() plain min last reverse 0) 0.015976 0.014490 0.014214 0.015892 1) 0.002335 14% 0.001018 7% 0.000887 6% 0.002340 14% The speed up is visible even when other more costly revset are in use revset: head() and author("mpm") plain min last reverse 0) 0.105419 0.090046 0.017169 0.108180 1) 0.090721 86% 0.077602 86% 0.003556 20% 0.093324 86%
Wed, 10 Jun 2015 19:58:27 -0700 revset: use a baseset in _notpublic()
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 10 Jun 2015 19:58:27 -0700] rev 25619
revset: use a baseset in _notpublic() The '_notpublic()' internal revset was "returning" a set. That was wrong. We now return a 'baseset' as appropriate. This has no effect on performance in most case, because we do the exact same operation than what the combination with a 'fullreposet' was doing. This as a small effect on some operation when combined with other set, because we now apply the filtering in all cases. I think the correctness is worth the impact on some corner cases. The optimizer should take care of these corner cases anyway. revset #0: not public() plain min max first last reverse 0) 0.000465 0.000491 0.000495 0.000500 0.000494 0.000479 1) 0.000484 0.000503 0.000498 0.000505 0.000504 0.000491 revset #1: (tip~1000::) - public() plain min max first last reverse 0) 0.002765 0.001742 0.002767 0.001730 0.002761 0.002782 1) 0.002847 0.001777 0.002776 0.001741 0.002764 0.002858 revset #2: not public() and branch("default") plain min max first last reverse 0) 0.012104 0.011138 0.011189 0.011138 0.011166 0.011578 1) 0.011387 94% 0.011738 105% 0.014220 127% 0.011223 0.011184 0.012077 revset #3: (not public() - obsolete()) plain min max first last reverse 0) 0.000583 0.000556 0.000552 0.000555 0.000552 0.000610 1) 0.000613 105% 0.000559 0.000557 0.000573 0.000558 0.000613 revset #4: head() - public() plain min max first last reverse 0) 0.010869 0.010800 0.011547 0.010843 0.010891 0.010891 1) 0.011031 0.011497 106% 0.011087 0.011100 0.011100 0.011085
Wed, 17 Jun 2015 16:29:46 -0700 contrib: clean up all-revsets.txt file
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Jun 2015 16:29:46 -0700] rev 25618
contrib: clean up all-revsets.txt file I forgot to cleanup a handful of them when I originally created the file.
Thu, 18 Jun 2015 17:06:18 +0800 hgweb: link to revision by node hash in paper & coal
Anton Shestakov <av6@dwimlabs.net> [Thu, 18 Jun 2015 17:06:18 +0800] rev 25617
hgweb: link to revision by node hash in paper & coal Unlike other styles, paper and coal had only one link to current revision: in the sidebar. Since those links now use symbolic revisions after 3bb6f5f478a7, it's nice to have a link that allows going from /rev/tip to /rev/<tip hash>, for instance. Let's make the node hash in the page header that new link.
Thu, 18 Jun 2015 16:14:10 +0800 hgweb: link to revision by node hash in gitweb & monoblue
Anton Shestakov <av6@dwimlabs.net> [Thu, 18 Jun 2015 16:14:10 +0800] rev 25616
hgweb: link to revision by node hash in gitweb & monoblue This allows going from /rev/tip to /rev/<tip hash> with ease.
Tue, 16 Jun 2015 23:14:45 -0400 archive: report the node as "{p1node}+" when archiving a dirty wdir()
Matt Harbison <matt_harbison@yahoo.com> [Tue, 16 Jun 2015 23:14:45 -0400] rev 25615
archive: report the node as "{p1node}+" when archiving a dirty wdir() This is more useful than reporting all 'f's, allowing the archive to be diffed against a specific revision to see what changed.
Mon, 15 Jun 2015 16:06:17 -0700 phase: remove a 'for x in "foo bar".split()' idiom in phasecache.replace
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 15 Jun 2015 16:06:17 -0700] rev 25614
phase: remove a 'for x in "foo bar".split()' idiom in phasecache.replace I find this idiom fairly horrible.
Mon, 15 Jun 2015 16:06:24 -0700 phase: document the replace method
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 15 Jun 2015 16:06:24 -0700] rev 25613
phase: document the replace method This is a minor documentation update to answer a co-worker question.
Mon, 15 Jun 2015 16:16:02 -0700 revset: ensure we have loaded phases data in '_notpublic()'
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 15 Jun 2015 16:16:02 -0700] rev 25612
revset: ensure we have loaded phases data in '_notpublic()' If we are the very first rev access (or if the phase cache just got invalidated) the phasesets will be None even if we support the native computation. So we explicitly trigger a computation if needed. This was not an issue before because requesting any phase information would have triggered such computation.
Mon, 15 Jun 2015 16:04:14 -0700 phase: rename getphaserevs to loadphaserevs
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 15 Jun 2015 16:04:14 -0700] rev 25611
phase: rename getphaserevs to loadphaserevs This function is: - already loading the data in place, - used once in the code. So we drop the return value and change the name to make this obvious. We keep the function public because we'll have to use it in revset.
Wed, 17 Jun 2015 16:45:25 -0400 test-subrepo-recursion: more aggressively regex 'unzip -l' output for 10.10
Matt Harbison <mharbison@attotech.com> [Wed, 17 Jun 2015 16:45:25 -0400] rev 25610
test-subrepo-recursion: more aggressively regex 'unzip -l' output for 10.10 The output on 10.10 looks like this: Length Date Time Name -------- ---- ---- ---- 172 01-01-80 00:00 .hg_archival.txt 10 01-01-80 00:00 .hgsub 45 01-01-80 00:00 .hgsubstate 3 01-01-80 00:00 x.txt 10 01-01-80 00:00 foo/.hgsub 45 01-01-80 00:00 foo/.hgsubstate 9 01-01-80 00:00 foo/y.txt 9 01-01-80 00:00 foo/bar/z.txt -------- ------- 303 8 files (2 digit year, shorter -- separators and closer columns). We don't care about any of that, so ignore it.
Tue, 16 Jun 2015 22:15:30 -0700 contrib: introduce an all-revsets.txt file
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 16 Jun 2015 22:15:30 -0700] rev 25609
contrib: introduce an all-revsets.txt file This file should gather all revsets ever thought interesting by anyone. That way one can check the impact of a change when touching something revset-ish. See inline comments for details. This file have been refilled with all the entry I could automatically find from changeset descriptions. I assume we missed some not using 'revsetbenchmarks.py' output.
Tue, 16 Jun 2015 20:36:00 -0700 contrib: rename revsetbenchmarks.txt to 'base-revsets.txt'
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 16 Jun 2015 20:36:00 -0700] rev 25608
contrib: rename revsetbenchmarks.txt to 'base-revsets.txt' We rename the file and document its purpose. We'll be introducing another file gathering revsets useful for benchmark of the predicate themsleves in a coming changesets.
(0) -10000 -3000 -1000 -300 -100 -64 +64 +100 +300 +1000 +3000 +10000 tip