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
Thu, 20 Mar 2014 19:38:17 -0700 subrepo: convert matched string to integer before comparing Git version stable
Siddharth Agarwal <sid0@fb.com> [Thu, 20 Mar 2014 19:38:17 -0700] rev 20816
subrepo: convert matched string to integer before comparing Git version (1, '4') is greater than (1, 5) so the version check never actually worked.
Thu, 20 Mar 2014 19:37:01 -0700 subrepo: only retrieve the first two components of the Git version stable
Siddharth Agarwal <sid0@fb.com> [Thu, 20 Mar 2014 19:37:01 -0700] rev 20815
subrepo: only retrieve the first two components of the Git version This makes the version detection compatible with Git versions like '1.9-rc0'. We only cared about the first two components of the version anyway.
Tue, 18 Mar 2014 18:56:08 -0700 bundle2: force the first char of parameter to be an letter.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 18 Mar 2014 18:56:08 -0700] rev 20814
bundle2: force the first char of parameter to be an letter. We need a case sensitive character to convey mandatory/advisory parameter semantic in a later patches.
Tue, 18 Mar 2014 18:40:31 -0700 bundle2: refuse empty parameter name
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 18 Mar 2014 18:40:31 -0700] rev 20813
bundle2: refuse empty parameter name The bundle2 now raise value error when seeing invalid parameter names. The first introduced rules is: no empty parameter. The test extension is improve to properly abort when ValueError are encountered.
Tue, 18 Mar 2014 17:43:08 -0700 bundle2: urlunquote stream parameter name and value during unbundling
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 18 Mar 2014 17:43:08 -0700] rev 20812
bundle2: urlunquote stream parameter name and value during unbundling Align to new escaping used during bundling.
Tue, 18 Mar 2014 17:38:11 -0700 bundle2: urlquote stream parameter name and value
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 18 Mar 2014 17:38:11 -0700] rev 20811
bundle2: urlquote stream parameter name and value This introduces support for arbitrary characters in stream parameters name and value. The urlquote format has been chosen because it is: - simple, - standard, - no-op on simple alphanumerical entry.
Tue, 18 Mar 2014 16:12:33 -0700 bundle2: support for unbundling parameter value
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 18 Mar 2014 16:12:33 -0700] rev 20810
bundle2: support for unbundling parameter value The unbundler now understand parameter value. introduced in the previous changeset.
Tue, 18 Mar 2014 16:05:06 -0700 bundle2: support for bundling parameter value
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 18 Mar 2014 16:05:06 -0700] rev 20809
bundle2: support for bundling parameter value Parameter can now have a value. We use a `<name>=<value>` form inspired from capabilities. There is still no kind of escaping in the name or value, yet.
Thu, 20 Mar 2014 13:18:34 -0700 bundle2: clarify stream parameter design in the documentation
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 20 Mar 2014 13:18:34 -0700] rev 20808
bundle2: clarify stream parameter design in the documentation Stream level parameter have very restricted use case. Clarify why we chosen a textual format and point that applicative data goes in applicative parts.
Tue, 18 Mar 2014 20:10:33 -0500 repoview: add non-global tags to candidate list for blocking hidden changesets
Sean Farley <sean.michael.farley@gmail.com> [Tue, 18 Mar 2014 20:10:33 -0500] rev 20807
repoview: add non-global tags to candidate list for blocking hidden changesets Previously, only bookmarks would be considered for blocking a changeset from being hidden. Now, we also consider non-global tags. This is helpful if we have local tags that might be hard to find once they are hidden, or tag that are added by extensions (e.g. hggit or remotebranches).
Thu, 13 Mar 2014 16:05:06 -0700 histedit: select the lowest rev when looking for a root in a revset (bc)
David Soria Parra <davidsp@fb.com> [Thu, 13 Mar 2014 16:05:06 -0700] rev 20806
histedit: select the lowest rev when looking for a root in a revset (bc) When we specify a revision or a revset we just get the last element from the list. For revsets this can lead to unintended effects where you specify a revset like only() but instead histedit selects the highest revision in the set as root. Therefore we should always use the lowest revision number as root.
Tue, 18 Mar 2014 15:56:24 -0700 bundle2: support for unbundling simple parameter
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 18 Mar 2014 15:56:24 -0700] rev 20805
bundle2: support for unbundling simple parameter the unbundler now understand simple list of parameter.
Wed, 19 Mar 2014 14:52:03 -0700 bundle2: support bundling simple parameter
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 19 Mar 2014 14:52:03 -0700] rev 20804
bundle2: support bundling simple parameter This changeset add bundling capacity for simple parameters, not value or any special case are handled.
Tue, 18 Mar 2014 16:35:34 -0700 bundle2: make sure the unbundler refuse non bundle2 stream
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 18 Mar 2014 16:35:34 -0700] rev 20803
bundle2: make sure the unbundler refuse non bundle2 stream We now make use of the magic string at the beginning of the file.
Tue, 18 Mar 2014 14:28:42 -0700 bundle2: a very first version of bundle2 unbundler
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 18 Mar 2014 14:28:42 -0700] rev 20802
bundle2: a very first version of bundle2 unbundler This changeset introduce an unbundler class to match the bundle2 bundler. It is currently able to unbundle an empty bundle2 only and will gain more feature at the same pace than the bundler. It also comes with its special extension command in test.
Tue, 18 Mar 2014 14:00:50 -0700 bundle2: very first version of a bundle2 bundler
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 18 Mar 2014 14:00:50 -0700] rev 20801
bundle2: very first version of a bundle2 bundler This changeset is the very first of a long series. It create a new bundle2 module and add a simple class that generate and empty bundle2 container. The module is documented with the current state of the implementation. For information about the final goal you may want to consult the mercurial wiki page: http://mercurial.selenic.com/wiki/BundleFormat2 The documentation of the module will be updated with later patches adding more and more feature to the format. This patches also introduce a test case. This test case build and use its own small extension that use the new bundle2 module. Since the new format is unable to do anything right now, we could not use real mercurial code to test it. Moreover, some advanced feature of the bundle2 spec will not be used by core mercurial at all. So we need to have them tested.
Sat, 22 Mar 2014 00:46:12 +0900 clone: abort if default destination has no meaningful name (BC)
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Mar 2014 00:46:12 +0900] rev 20800
clone: abort if default destination has no meaningful name (BC) If source URL has no path, default destination is resolved as '.'. It is surprising than useful, and perhaps an unexpected behavior. This change does not solve issue3880, but can avoid to clone into current directory by accident.
Sat, 22 Mar 2014 00:46:08 +0900 clone: add doctest for default destination
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Mar 2014 00:46:08 +0900] rev 20799
clone: add doctest for default destination
Thu, 20 Mar 2014 09:55:44 -0700 scmutil: fix revrange when multiple revs are specified
Durham Goode <durham@fb.com> [Thu, 20 Mar 2014 09:55:44 -0700] rev 20798
scmutil: fix revrange when multiple revs are specified revrange was trying to add a list to a revset class, but revset classes only support adding with other revset classes. So wrap the lists in basesets.
Thu, 20 Mar 2014 00:01:59 -0400 parsers: fix compiler errors on MSVC 2008
Matt Harbison <matt_harbison@yahoo.com> [Thu, 20 Mar 2014 00:01:59 -0400] rev 20797
parsers: fix compiler errors on MSVC 2008 This broke in 3681de20b0a7.
Wed, 19 Mar 2014 18:04:03 -0500 check-code: check for argument passing py2.6ism
Matt Mackall <mpm@selenic.com> [Wed, 19 Mar 2014 18:04:03 -0500] rev 20796
check-code: check for argument passing py2.6ism
Wed, 19 Mar 2014 16:21:53 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 19 Mar 2014 16:21:53 -0500] rev 20795
merge with stable
Tue, 18 Mar 2014 13:40:03 -0700 sshpeer: only print out 'running ssh' messages in debug mode (BC)
Siddharth Agarwal <sid0@fb.com> [Tue, 18 Mar 2014 13:40:03 -0700] rev 20794
sshpeer: only print out 'running ssh' messages in debug mode (BC) Previously, if another command was run with --verbose, and for whatever reason that invoked sshpeer, we'd get a 'running ssh' message from sshpeer. This extra line would interfere with that command's output and cause dumb parsers to break. For example, hg annotate can be run with --verbose to get full usernames. This, combined with the third-party remotefilelog extension which can cause ssh connections to be created, leads to an extra 'running ssh' line that breaks most parsers. This patch is (BC) because hg pull --verbose will no longer print out exactly what ssh command it is running. No tests are affected by this change.
Wed, 19 Mar 2014 00:19:54 +0100 tests: small refactoring of run-tests' handling of tests list
Mads Kiilerich <madski@unity3d.com> [Wed, 19 Mar 2014 00:19:54 +0100] rev 20793
tests: small refactoring of run-tests' handling of tests list
Fri, 28 Feb 2014 02:26:03 +0100 merge: mark mergestate as dirty when resolve changes _state
Mads Kiilerich <madski@unity3d.com> [Fri, 28 Feb 2014 02:26:03 +0100] rev 20792
merge: mark mergestate as dirty when resolve changes _state Correctness - no visible difference so far.
Mon, 24 Feb 2014 22:42:14 +0100 backout: improve confusing 'cannot backout change on a different branch' abort
Mads Kiilerich <madski@unity3d.com> [Mon, 24 Feb 2014 22:42:14 +0100] rev 20791
backout: improve confusing 'cannot backout change on a different branch' abort These days 'branch' usually refer to a named branch. Instead, abort with 'cannot backout change that not is an ancestor'.
Wed, 19 Mar 2014 02:45:14 +0100 config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com> [Wed, 19 Mar 2014 02:45:14 +0100] rev 20790
config: set a 'source' in most cases where config don't come from file but code Some extensions set configuration settings that showed up in 'hg showconfig --debug' with 'none' as source. That was confusing. Instead, they will now tell which extension they come from. This change tries to be consistent and specify a source everywhere - also where it perhaps is less relevant.
Wed, 19 Mar 2014 02:45:14 +0100 config: don't set source when no source is specified - don't overwrite with ''
Mads Kiilerich <madski@unity3d.com> [Wed, 19 Mar 2014 02:45:14 +0100] rev 20789
config: don't set source when no source is specified - don't overwrite with '' This prevents ui.fixconfig from overwriting the source of paths and it will thus show up in showconfig --debug.
Wed, 19 Mar 2014 02:45:04 +0100 config: give a useful hint of source for the most common command line settings
Mads Kiilerich <madski@unity3d.com> [Wed, 19 Mar 2014 02:45:04 +0100] rev 20788
config: give a useful hint of source for the most common command line settings 'hg showconfig --debug' will instead of: none: ui.verbose=False give the better hint: --verbose: ui.verbose=False
Wed, 19 Mar 2014 01:59:15 +0100 config: backout 77f1f206e135 - 743daa601445 removed the only use of overlay
Mads Kiilerich <madski@unity3d.com> [Wed, 19 Mar 2014 01:59:15 +0100] rev 20787
config: backout 77f1f206e135 - 743daa601445 removed the only use of overlay
Thu, 20 Mar 2014 00:10:45 +0900 mq: omit ".hgsubstate" from qnew/qrefresh target list for consistent node hash
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 20 Mar 2014 00:10:45 +0900] rev 20786
mq: omit ".hgsubstate" from qnew/qrefresh target list for consistent node hash Before this patch, even if specified file patterns and -I/-X options cause listing ".hgsubstate" up in the target list, qnew/qrefresh put ".hgsubstate" into the target list individually and forcibly. This changes how many times ".hgsubstate" appear in the target list according to run-time conditions, and causes inconsistent node hash, even though revision content is same, because node hash calculation uses the specified target list directly (without duplication check or so). This patch always omits ".hgsubstate" from qnew/qrefresh target list for consistent node hash. This omitting doesn't miss including ".hgsubstate" changes, because: - "localrepository.commit()" puts ".hgsubstate" into the target list for "commitctx()" forcibly if needed - "mq.putsubstate2changes()" puts ".hgsubstate" into the target list for "patch.diff()" if it is not yet listed up
Thu, 20 Mar 2014 00:10:45 +0900 qnew: omit meaningless and harmful putting subrepositories into target list
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 20 Mar 2014 00:10:45 +0900] rev 20785
qnew: omit meaningless and harmful putting subrepositories into target list Before this patch, qnew puts updated subrepositories into target list forcibly, if any of -I, -X or patterns are specified. But this is meaningless and harmful, because: - putting subrepositories into target list doesn't affect the result of "localrepository.status()" "dirstate.status()" invoked via "localrepository.status()" always omits subrepositories from the result of it - any -I/-X opts and empty "pats" causes unexpected failure when any -I/-X opts are specified, "inclsubs" are always added to "pats", even if "pats" is empty. but this changes meaning of "pats" from "including all to be included" to "including only listed subrepositories" this may exclude ".hgsub" and cause unexpected exception raising ("can't commit subrepos without .hgsub" ). - qnew at other than repository root (with -I, -X or any patterns) causes unexpected failure "scmutil.match()" treats pattern without syntax type as 'relpath' type (= one rooted at cwd). but qnew puts subrepository paths rooted at the repository root, and it causes unexpected exception raising ("SUBREPO not under root ROOT" in "pathutil.canonpath()"), if "hg qnew" is executed at other than repository root with -I, -X or any patterns. This patch omits meaningless and harmful putting subrepositories into target list. This omitting doesn't miss including updated subrepositories, because subrepositories are specified to "scmutil.matchfiles()" directly, to get "match" object for "localrepository.commit()".
Wed, 19 Mar 2014 00:19:54 +0100 convert: more clear documentation of the 'include' default of a 'include .' stable
Mads Kiilerich <madski@unity3d.com> [Wed, 19 Mar 2014 00:19:54 +0100] rev 20784
convert: more clear documentation of the 'include' default of a 'include .' At first glance it can be confusing that adding a superfluous include directive will exclude more files.
Tue, 18 Mar 2014 18:57:19 -0500 config: mention edit options and config topic in help
Matt Mackall <mpm@selenic.com> [Tue, 18 Mar 2014 18:57:19 -0500] rev 20783
config: mention edit options and config topic in help
Tue, 18 Mar 2014 18:49:30 -0500 config: add --global and --local flags
Matt Mackall <mpm@selenic.com> [Tue, 18 Mar 2014 18:49:30 -0500] rev 20782
config: add --global and --local flags These start an editor on the system-wide or repository-level config files.
Tue, 18 Mar 2014 17:56:27 -0500 revrange: pass repo to revset parser
Matt Mackall <mpm@selenic.com> [Tue, 18 Mar 2014 17:56:27 -0500] rev 20781
revrange: pass repo to revset parser This allows handling of hyphenated symbols for command-line revsets.
Tue, 18 Mar 2014 17:54:42 -0500 revset: try to handle hyphenated symbols if lookup callback is available
Matt Mackall <mpm@selenic.com> [Tue, 18 Mar 2014 17:54:42 -0500] rev 20780
revset: try to handle hyphenated symbols if lookup callback is available Formerly an expression like "2.4-rc::" was tokenized as 2.4|-|rc|::. This allows dashes in symbols iff the whole symbol-like string can be looked up. Otherwise, it's tokenized as a series of symbols and operators. No attempt is made to accept dashed symbols inside larger symbol-like string, for instance foo-bar or bar-baz inside foo-bar-baz.
Tue, 18 Mar 2014 17:19:44 -0500 revset: pass a lookup function to the tokenizer
Matt Mackall <mpm@selenic.com> [Tue, 18 Mar 2014 17:19:44 -0500] rev 20779
revset: pass a lookup function to the tokenizer
Tue, 18 Mar 2014 17:17:23 -0500 parser: allow passing a lookup function to a tokenizer
Matt Mackall <mpm@selenic.com> [Tue, 18 Mar 2014 17:17:23 -0500] rev 20778
parser: allow passing a lookup function to a tokenizer This will allow us to dynamically handle hyphenated symbols in revsets.
Sat, 15 Mar 2014 18:11:51 -0700 benchmark-revset: add full version of benchmarked revset
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 15 Mar 2014 18:11:51 -0700] rev 20777
benchmark-revset: add full version of benchmarked revset All revsets added to benchmark so far are aimed to show an improvement of performance from laziness. We had more wider version to track impact of laziness on them.
Fri, 14 Mar 2014 00:02:05 -0700 localrepo: rename capability set to lower case.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 14 Mar 2014 00:02:05 -0700] rev 20776
localrepo: rename capability set to lower case. This is not C and they are not even constant.
Wed, 12 Mar 2014 14:46:41 -0700 wireproto: move wireproto capabilities computation in a subfunction
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 12 Mar 2014 14:46:41 -0700] rev 20775
wireproto: move wireproto capabilities computation in a subfunction It will help people that need to add capabilities (in a more subtle was that just adding some to the list) in multiple way: 1. This function returns a list, not a string. Making it easier to look at, extend or alter the content. 2. The original capabilities function will be store in the dictionary of wire protocol command. So extension that wrap this function also need to update the dictionary entry. Both wrapping and update of the dictionary entry are needed because the `hello` wire protocol use the function itself. This is specifically sneaky for extension writer as ssh use the `hello` command while http use the `capabilities` command. With this new `_capabilities` function there is one and only one obvious place to wrap when needed.
Tue, 11 Mar 2014 01:38:02 -0700 wireproto: extract capabilities list in outside the wireproto function
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 11 Mar 2014 01:38:02 -0700] rev 20774
wireproto: extract capabilities list in outside the wireproto function Before that it was over complicated to add capabilities from an extension. This mimic was is done for capabilities in localrepo.
Tue, 18 Mar 2014 14:25:28 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 18 Mar 2014 14:25:28 -0500] rev 20773
merge with stable
Mon, 17 Mar 2014 14:57:13 -0400 commit: propagate --secret option to subrepos (issue4182) stable
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Mon, 17 Mar 2014 14:57:13 -0400] rev 20772
commit: propagate --secret option to subrepos (issue4182) Before this patch, `hg commit --secret` was not getting propagated correctly, and subrepos were not getting the commit in the secret phase. The problem is that subrepos get their ui from the base repo's baseui object and ignore the ui object passed on to them. This sets and restores both ui objects with the appropriate option.
Wed, 19 Mar 2014 01:07:41 +0900 amend: save commit message into ".hg/last-message.txt" stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 19 Mar 2014 01:07:41 +0900] rev 20771
amend: save commit message into ".hg/last-message.txt" Before this patch, commit message (may be manually edited) for "commit --amend" is never saved into ".hg/last-message.txt", because it uses "localrepository.commitctx()" instead of "localrepository.commit()": saving into ".hg/last-message.txt" is executed only in the latter. This patch saves commit message for "commit --amend" into ".hg/last-message.txt" just after user editing. This is the simplest implementation to fix on stable. Editing and saving commit message for memctx should be centralized into the framework like "localrepository.commit()" with "editor" argument or so in the future.
Wed, 19 Mar 2014 01:07:41 +0900 histedit: save manually edited commit message into ".hg/last-message.txt" stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 19 Mar 2014 01:07:41 +0900] rev 20770
histedit: save manually edited commit message into ".hg/last-message.txt" Before this patch, manually edited commit message for "fold" command in histedit-ing is never saved into ".hg/last-message.txt", because it uses "localrepository.commitctx()" instead of "localrepository.commit()": saving into ".hg/last-message.txt" is executed only in the latter. This patch saves manually edited commit message for "fold" command in histedit-ing into ".hg/last-message.txt" just after user editing. This is the simplest implementation to fix on stable. Editing and saving commit message for memctx should be centralized into the framework like "localrepository.commit()" with "editor" argument or so in the future.
Wed, 19 Mar 2014 01:07:41 +0900 qfold: save manually edited commit message into ".hg/last-message.txt" stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 19 Mar 2014 01:07:41 +0900] rev 20769
qfold: save manually edited commit message into ".hg/last-message.txt" Before this patch, manually edited commit message for "hg qfold -e" isn't saved into ".hg/last-message.txt" until it is saved by "localrepository.savecommitmessage()" in "localrepository.commit()". This may lose such commit message, if unexpected exception is raised. This patch saves manually edited commit message for "hg qfold -e" into ".hg/last-message.txt" just after user editing. This patch doesn't save the message specified by -m/-l options as same as other commands. This is the simplest implementation to fix on stable. Editing and saving commit message should be centralized into the framework of "localrepository.commit()" with "editor" argument in the future. This patch uses repository wrapping class for exception raising before saving commit message in "localrepository.commit()" easily and certainly, because such exception requires corner case condition.
Wed, 19 Mar 2014 01:07:41 +0900 qnew: save manually edited commit message into ".hg/last-message.txt" stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 19 Mar 2014 01:07:41 +0900] rev 20768
qnew: save manually edited commit message into ".hg/last-message.txt" Before this patch, manually edited commit message for "hg qnew -e" isn't saved into ".hg/last-message.txt" until it is saved by "localrepository.savecommitmessage()" in "localrepository.commit()". This may lose such commit message, if unexpected exception is raised. This patch saves manually edited commit message for "hg qnew -e" into ".hg/last-message.txt" just after user editing. This patch doesn't save the message specified by -m/-l options as same as other commands. This is the simplest implementation to fix on stable. Editing and saving commit message should be centralized into the framework of "localrepository.commit()" with "editor" argument in the future. This patch uses repository wrapping class for exception raising before saving commit message in "localrepository.commit()" easily and certainly, because such exception requires corner case condition.
Wed, 19 Mar 2014 01:07:41 +0900 tag: save manually edited commit message into ".hg/last-message.txt" stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 19 Mar 2014 01:07:41 +0900] rev 20767
tag: save manually edited commit message into ".hg/last-message.txt" Before this patch, manually edited commit message for "hg tag -e" isn't saved into ".hg/last-message.txt" until it is saved by "localrepository.savecommitmessage()" in "localrepository.commit()". This may lose such commit message, if unexpected exception is raised. This patch saves manually edited commit message for "hg tag -e" into ".hg/last-message.txt" just after user editing. This patch doesn't save the message specified by -m option (-l is not supported for "hg tag") as same as other commands. This is the simplest implementation to fix on stable. Editing and saving commit message should be centralized into the framework of "localrepository.commit()" with "editor" argument in the future.
Wed, 19 Mar 2014 01:07:41 +0900 rebase: use "commitforceeditor" instead of "ui.edit()" for "--collapse" stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 19 Mar 2014 01:07:41 +0900] rev 20766
rebase: use "commitforceeditor" instead of "ui.edit()" for "--collapse" Before this patch, "rebase --collapse --edit" without "--message" and "--logfile" invokes editor twice unexpectedly: 1. explicit "ui.edit()" invocation in rebase extension itself 2. indirect invocation in "localrepository.commit()" with "editor = commitforceeditor" assigned by "--edit" option This patch uses indirect "commitforceeditor" invocation instead of "ui.edit()" for "--collapse" without "--message" and "--logfile" to: - suppress redundant the former invocation - ensure editor invocation even when "--edit" is not specified
Wed, 19 Mar 2014 01:07:41 +0900 localrepo: save manually edited commit message as soon as possible stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 19 Mar 2014 01:07:41 +0900] rev 20765
localrepo: save manually edited commit message as soon as possible Before this patch, "localrepository.commit()" invokes specified "editor" to edit commit message manually, and saves it after checking sub-repositories. This may lose manually edited commit message, if unexpected exception is raised while checking (or commiting recursively) sub-repositories. This patch saves manually edited commit message as soon as possible.
Sat, 15 Mar 2014 15:44:51 +0100 hgk: enable selected patch text on Windows
Andrew Shadura <andrew@shadura.me> [Sat, 15 Mar 2014 15:44:51 +0100] rev 20764
hgk: enable selected patch text on Windows Port a patch from gitk. Original description: On windows, mouse input follows the keyboard focus, so to allow selecting text from the patch canvas we must not shift focus back to the top level. This change has no negative impact on X, so we don't explicitly test for Win32 on this change. This provides similar selection capability as already available using X-Windows. Signed-off-by: Mark Levedahl <mdl123@verizon.net> Signed-off-by: Paul Mackerras <paulus@samba.org>
Sat, 15 Mar 2014 15:33:50 +0100 hgk: ignore ctrl-z as EOF on windows
Andrew Shadura <andrew@shadura.me> [Sat, 15 Mar 2014 15:33:50 +0100] rev 20763
hgk: ignore ctrl-z as EOF on windows Port a patch from gitk. Original description: Cygwin's Tcl is configured to honor any occurence of ctrl-z as an end-of-file marker, while some commits in the git repository and possibly elsewhere include that character in the commit comment. This causes gitk ignore commit history following such a comment and incorrect graphs. This change affects only Windows as Tcl on other platforms already has eofchar == {}. This fixes problems noted by me and by Ray Lehtiniemi, and the fix was suggested by Shawn Pierce. Signed-off-by: Mark Levedahl <mdl123@verizon.net> Signed-off-by: Paul Mackerras <paulus@samba.org>
Fri, 14 Mar 2014 08:46:46 -0700 graphmod: changed code in dagwalker to use lazy implementations
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 08:46:46 -0700] rev 20762
graphmod: changed code in dagwalker to use lazy implementations Used lazy methods when possible.
Fri, 14 Mar 2014 08:47:57 -0700 webcommands: changed code to use lazy classes when calling dagwalker
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 08:47:57 -0700] rev 20761
webcommands: changed code to use lazy classes when calling dagwalker This needs to be changed to use a baseset since dagwalker now expects to receive a smartset. This is basically wrapping revs into a baseset to be compatible with smartset implementations.
Fri, 14 Mar 2014 13:27:12 -0700 cmdutil: changed max method for lazy call
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 13:27:12 -0700] rev 20760
cmdutil: changed max method for lazy call Used the lazy max call instead of the python max implementation to be able to use lazysets for graphlog.
Fri, 14 Mar 2014 13:26:40 -0700 getgraphlogrevs: return an empty baseset instead of a empty list
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 13:26:40 -0700] rev 20759
getgraphlogrevs: return an empty baseset instead of a empty list We aims at returning smartset only so that function higher in the stack can use smartset feature.
Fri, 14 Mar 2014 16:26:50 -0700 getgraphlogrevs: do not convert smartset to baseset
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 14 Mar 2014 16:26:50 -0700] rev 20758
getgraphlogrevs: do not convert smartset to baseset We are now sure that revs is a smartset. We remove the baseset call that would defeat any lazyness.
Fri, 14 Mar 2014 08:44:52 -0700 cmdutil: changed revset for spanset
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 08:44:52 -0700] rev 20757
cmdutil: changed revset for spanset Instead of using baseset(repo.changelog) changed it for spanset(repo) which is much faster.
Fri, 14 Mar 2014 11:35:17 -0700 cmdutil: changed code in _makegraphlogrevset not to use getitem
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 11:35:17 -0700] rev 20756
cmdutil: changed code in _makegraphlogrevset not to use getitem __getitem__ is a method that is not implemented lazily on many of the new classes and it can be easily replaced with a structure that takes advantage of the new lazy implementations instead.
Fri, 14 Mar 2014 08:43:52 -0700 cmdutil: changed code in getgraphlogrevs not to use getitem
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 08:43:52 -0700] rev 20755
cmdutil: changed code in getgraphlogrevs not to use getitem __getitem__ is a method that is not implemented lazily on many of the new classes and it can be easily replaced with a structure that takes advantage of the new lazy implementations instead.
Tue, 18 Feb 2014 11:35:03 -0800 revset: changed minrev and maxrev implementations to use ordered sets
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 18 Feb 2014 11:35:03 -0800] rev 20754
revset: changed minrev and maxrev implementations to use ordered sets Performance Benchmarking: 0) max(tip:0) 1) min(0:tip) 2) min(0::) b96cb15ec9e0 (2.9.1 release) 0) ! wall 0.005699 comb 0.000000 user 0.000000 sys 0.000000 (best of 450) 1) ! wall 0.005414 comb 0.010000 user 0.010000 sys 0.000000 (best of 493) 2) ! wall 0.025951 comb 0.030000 user 0.030000 sys 0.000000 (best of 107) 05267e6e94dd (public tip at submission time) 0) ! wall 0.015177 comb 0.020000 user 0.020000 sys 0.000000 (best of 175) 1) ! wall 0.014779 comb 0.010000 user 0.010000 sys 0.000000 (best of 189) 2) ! wall 12.345179 comb 12.350000 user 12.350000 sys 0.000000 (best of 3) Current patches: 0) ! wall 0.001911 comb 0.000000 user 0.000000 sys 0.000000 (best of 1357) 1) ! wall 0.001943 comb 0.010000 user 0.010000 sys 0.000000 (best of 1406) 2) ! wall 0.000405 comb 0.000000 user 0.000000 sys 0.000000 (best of 6761)
Fri, 14 Mar 2014 14:43:44 -0700 revset: changed addset to extend _orderedsetmixin
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 14:43:44 -0700] rev 20753
revset: changed addset to extend _orderedsetmixin Now _addset can use the lazy min and max implementation.
Fri, 14 Mar 2014 11:41:26 -0700 revset: add a default argument for baseset.__init__
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 14 Mar 2014 11:41:26 -0700] rev 20752
revset: add a default argument for baseset.__init__ We are now able to create empty baseset using `baseset()` as we are able to create empty list with `list()`.
Thu, 13 Mar 2014 11:36:45 -0700 revset: changed orderedlazyset to also extend _orderedsetmixin
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 11:36:45 -0700] rev 20751
revset: changed orderedlazyset to also extend _orderedsetmixin Now orderedlazyset can use the lazy min and max implementation.
Thu, 13 Mar 2014 11:36:11 -0700 revset: changed spanset to extend _orderedsetmixin
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 11:36:11 -0700] rev 20750
revset: changed spanset to extend _orderedsetmixin Now spanset can use the lazy min and max methods implementation.
Wed, 12 Mar 2014 16:40:18 -0700 revset: added _orderedsetmixin class
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 12 Mar 2014 16:40:18 -0700] rev 20749
revset: added _orderedsetmixin class This class has utility methods for any ordered class to get the min and the max values.
Wed, 19 Feb 2014 09:28:17 -0800 revset: added min and max methods to baseset and lazyset
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 19 Feb 2014 09:28:17 -0800] rev 20748
revset: added min and max methods to baseset and lazyset This classes have no particular order so they rely on python min() and max() implementation. This methods will be implemented in every smartset class in future patches. For other classes there are lazy implementations that can be made for this methods.
Fri, 14 Mar 2014 15:47:29 -0700 contrib: make revset benchmark script able to read from stdin
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 14 Mar 2014 15:47:29 -0700] rev 20747
contrib: make revset benchmark script able to read from stdin This help fine control of what we want to benchmark
Fri, 14 Mar 2014 15:43:55 -0700 contrib: have the revset benchmark test script take a revset
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 14 Mar 2014 15:43:55 -0700] rev 20746
contrib: have the revset benchmark test script take a revset The script now selection revision to run benchmark against using a revset query instead of a revision range. It is expected that people benchmarking revset have some knowledge of revset.
Fri, 14 Mar 2014 11:24:59 -0700 contrib: added revset performance benchmarking script
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 11:24:59 -0700] rev 20745
contrib: added revset performance benchmarking script This script takes two arguments (starting revision, ending revision) and tests for each revision in between the entire list of revsets in the script using perfrevset.
Fri, 14 Mar 2014 15:00:15 -0700 contrib: added revset examples for benchmarking performance
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 15:00:15 -0700] rev 20744
contrib: added revset examples for benchmarking performance Added list of revsets used for benchmarking revset performance so far.
Mon, 17 Feb 2014 07:39:53 +0100 help: filter out deprecated options with untranslated descriptions
Simon Heimberg <simohe@besonet.ch> [Mon, 17 Feb 2014 07:39:53 +0100] rev 20743
help: filter out deprecated options with untranslated descriptions When using a different language than English, deprecated options were only removed from the output of `hg help anycmd` when "DEPRECATED" in the options description was translated.
Wed, 04 Dec 2013 20:38:27 -0800 parsers: fail fast if Python has wrong minor version (issue4110)
Chris Jerdonek <chris.jerdonek@gmail.com> [Wed, 04 Dec 2013 20:38:27 -0800] rev 20742
parsers: fail fast if Python has wrong minor version (issue4110) This change causes an informative ImportError to be raised when importing the parsers extension module if the minor version of the currently-running Python interpreter doesn't match that of the Python used when compiling the extension module. This change also exposes a parsers.versionerrortext constant in the C implementation of the module. Its presence can be used to determine whether this behavior is present in a version of the module. The value of the constant is the leading text of the ImportError raised and is set to "Python minor version mismatch". Here is an example of what the new error looks like: Traceback (most recent call last): File "test.py", line 1, in <module> import mercurial.parsers ImportError: Python minor version mismatch: The Mercurial extension modules were compiled with Python 2.7.6, but Mercurial is currently using Python with sys.hexversion=33883888: Python 2.5.6 (r256:88840, Nov 18 2012, 05:37:10) [GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] at: /opt/local/Library/Frameworks/Python.framework/Versions/2.5/Resources/ Python.app/Contents/MacOS/Python The reason for raising an error in this scenario is that Python's C API is known not to be compatible from minor version to minor version, even if sys.api_version is the same. See for example this Python bug report about incompatibilities between 2.5 and 2.6+: http://bugs.python.org/issue8118 These incompatibilities can cause Mercurial to break in mysterious, unforeseen ways. For example, when Mercurial compiled with Python 2.7 was run with 2.5, the following crash occurred when running "hg status": http://bz.selenic.com/show_bug.cgi?id=4110 After this crash was fixed, running with Python 2.5 no longer crashes, but the following puzzling behavior still occurs: $ hg status ... File ".../mercurial/changelog.py", line 123, in __init__ revlog.revlog.__init__(self, opener, "00changelog.i") File ".../mercurial/revlog.py", line 251, in __init__ d = self._io.parseindex(i, self._inline) File ".../mercurial/revlog.py", line 158, in parseindex index, cache = parsers.parse_index2(data, inline) TypeError: data is not a string which can be reproduced more simply with: import mercurial.parsers as parsers parsers.parse_index2("", True) Both the crash and the TypeError occurred because the Python C API's PyString_Check() returns the wrong value when the C header files from Python 2.7 are run with Python 2.5. This is an example of an incompatibility of the sort mentioned in the Python bug report above. Failing fast with an informative error message results in a better user experience in cases like the above. The information in the ImportError also simplifies troubleshooting for those on Mercurial mailing lists, the bug tracker, etc. This patch only adds the version check to parsers.c, which is sufficient to affect command-line commands like "hg status" and "hg summary". An idea for a future improvement is to move the version-checking C code to a more central location, and have it run when importing all Mercurial extension modules and not just parsers.c.
Fri, 14 Mar 2014 16:00:11 -0500 debuginstall: change showing to checking for consistency and future checking
Matt Mackall <mpm@selenic.com> [Fri, 14 Mar 2014 16:00:11 -0500] rev 20741
debuginstall: change showing to checking for consistency and future checking
Tue, 31 Dec 2013 00:37:16 -0800 debuginstall: add Python information to debuginstall output (issue4128)
Chris Jerdonek <chris.jerdonek@gmail.com> [Tue, 31 Dec 2013 00:37:16 -0800] rev 20740
debuginstall: add Python information to debuginstall output (issue4128) This change adds to the output of "hg debuginstall" information about the Python being used by Mercurial. It adds both the path to the Python executable (i.e. the value of sys.executable) and the version of Python (specifically the major, minor, and micro versions). Below is an example of what the output looks like after this change. The marked lines are the new output lines: $ hg debuginstall checking encoding (UTF-8)... -->showing Python executable (/Users/chris/.virtualenvs/default/bin/python) -->showing Python version (2.7.6) checking Python lib (/Users/chris/.virtualenvs/default/lib/python2.7)... checking installed modules (/Users/chris/mercurial)... checking templates (/Users/chris/mercurial/templates)... checking commit editor... checking username... no problems detected Note that we use the word "showing" without an ellipsis for the new lines because, unlike the other lines (except for "Python lib" which will be adjusted in a subsequent commit), no check follows the display of this information.
Fri, 14 Mar 2014 10:57:04 -0700 revset: add documentation and comment for _generatorset
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 14 Mar 2014 10:57:04 -0700] rev 20739
revset: add documentation and comment for _generatorset (clean up some old irrelevant comment in the process)
Fri, 14 Mar 2014 10:55:03 -0700 revset: add some documentation for lazyset
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 14 Mar 2014 10:55:03 -0700] rev 20738
revset: add some documentation for lazyset
Fri, 14 Mar 2014 10:59:51 -0700 revset: added documentation and comment for spanset class
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 10:59:51 -0700] rev 20737
revset: added documentation and comment for spanset class
Tue, 11 Mar 2014 17:25:53 -0700 revset: extend sorting tests
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 11 Mar 2014 17:25:53 -0700] rev 20736
revset: extend sorting tests
Fri, 14 Mar 2014 13:12:45 -0500 merge with crew
Matt Mackall <mpm@selenic.com> [Fri, 14 Mar 2014 13:12:45 -0500] rev 20735
merge with crew
Tue, 11 Mar 2014 17:25:53 -0700 revset: changed smartset methods to return ordered addsets
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 11 Mar 2014 17:25:53 -0700] rev 20734
revset: changed smartset methods to return ordered addsets Now when adding two structures that are ordered, they are wrapped into an _addset and they get added lazily while keeping the order.
Fri, 14 Mar 2014 10:24:09 -0700 revset: added isascending and isdescending methods to _addset
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 10:24:09 -0700] rev 20733
revset: added isascending and isdescending methods to _addset This methods are intended to duck-type baseset, so we will still have _addset as a private class but now we can return it without wrapping it into an orderedlazyset or a lazyset. These were the last methods to add for smartset compatibility.
Fri, 14 Mar 2014 10:23:54 -0700 revset: added __add__ method to _addset
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 10:23:54 -0700] rev 20732
revset: added __add__ method to _addset This method is intended to duck-type baseset, so we will still have _addset as a private class but we will be able to return it without wrapping it into an orderedlazyset or a lazyset.
Fri, 14 Mar 2014 10:22:51 -0700 revset: added __sub__ mehtod to _addset
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 10:22:51 -0700] rev 20731
revset: added __sub__ mehtod to _addset This method is intended to duck-type baseset, so we will still have _addset as a private class but now will be able to return it without wrapping it into an orderedlazyset or a lazyset.
Fri, 14 Mar 2014 10:22:29 -0700 revset: added __and__ method to _addset
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 10:22:29 -0700] rev 20730
revset: added __and__ method to _addset This method is intended to duck-type baseset, so we will still have _addset as a private class but we will be able to return it without wrapping it into an orderedlazyset or a lazyset.
Fri, 14 Mar 2014 10:21:56 -0700 revset: added ascending and descending methods to _addset
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 10:21:56 -0700] rev 20729
revset: added ascending and descending methods to _addset This methods are intended to duck-type baseset, so we will still have _addset as a private class but will be able return it without wrapping it into an orderedlazyset or a lazyset.
Thu, 13 Mar 2014 19:12:36 -0700 revset: added filter method to _addset
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 19:12:36 -0700] rev 20728
revset: added filter method to _addset This method is intended to duck-type baseset, so we will still have _addset as a private class but we will be able return it without wrapping it into an orderedlazyset or a lazyset.
Fri, 14 Mar 2014 09:18:14 -0700 revset: added comments to all methods needed to duck-type from baseset
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 09:18:14 -0700] rev 20727
revset: added comments to all methods needed to duck-type from baseset All this methods are required to duck-type for any class that works as a smart set.
Fri, 14 Mar 2014 10:10:18 -0700 revset: use more explicit argument names for baseset methods
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 10:10:18 -0700] rev 20726
revset: use more explicit argument names for baseset methods Use other instead of x and condition instead of l
Tue, 11 Mar 2014 17:09:23 -0700 revset: added isascending and isdescending methods to smartset classes
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 11 Mar 2014 17:09:23 -0700] rev 20725
revset: added isascending and isdescending methods to smartset classes This methods state if the class is sorted in an ascending or descending order We need this to implement methods based on order on smartset classes in order to be able to create new objects with a given order. We cannot just rely on a simple boolean since unordered set are neither ascending nor descending.
Tue, 11 Mar 2014 17:03:43 -0700 revset: added sort method in addset
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 11 Mar 2014 17:03:43 -0700] rev 20724
revset: added sort method in addset We need this method to duck-type generatorset since this class is not going to be used outside revset.py and we don't need to duck-type baseset. This sort method will only do something when the addset is not already sorted or is not sorted in the way we want it to be.
Thu, 13 Mar 2014 18:57:30 -0700 revset: added reverse method to addset
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 18:57:30 -0700] rev 20723
revset: added reverse method to addset This method is needed to duck type generatorset.
Thu, 13 Mar 2014 13:29:04 -0700 revset: changed _iterator() method on addset to work with a given order
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 13:29:04 -0700] rev 20722
revset: changed _iterator() method on addset to work with a given order If the two collections are in ascending order, yield their values in an ordered way by iterating both at the same time and picking the values to yield.
Thu, 13 Mar 2014 14:51:04 -0700 revset: changed _iterator() in addset to use the generated list when available
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 14:51:04 -0700] rev 20721
revset: changed _iterator() in addset to use the generated list when available Now when all the elements have been generated, the iterator will just use the generated list instead of going through all the elements again.
Tue, 11 Mar 2014 16:59:42 -0700 revset: added cached generated list to addset
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 11 Mar 2014 16:59:42 -0700] rev 20720
revset: added cached generated list to addset This way when all the values have been generated the list can be sorted without having to generate them all again.
Thu, 13 Mar 2014 17:15:21 -0700 revset: changed sort method to use native sort implementation of smartsets
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 17:15:21 -0700] rev 20719
revset: changed sort method to use native sort implementation of smartsets When sort is done by revision or reversed revision number it can just call sort on the set and doesn't have to iterate it all over again.
Thu, 13 Mar 2014 17:16:58 -0700 revset: fixed sorting issue with spanset
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 17:16:58 -0700] rev 20718
revset: fixed sorting issue with spanset When a spanset was being sorted it didn't take into account it's current state (ascending or descending) and it reversed itself everytime the reverse parameter was True. This is not yet used but it will be as soon as the sort revset is changed to directly use the structures sort method.
Thu, 13 Mar 2014 17:20:03 -0700 tests: added tests to test sort revset
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Mar 2014 17:20:03 -0700] rev 20717
tests: added tests to test sort revset This tests are intended to test sort in many different cases where it could fail when using the new structures
Fri, 14 Mar 2014 09:07:59 -0700 revset: added __nonzero__ method to spanset class
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 14 Mar 2014 09:07:59 -0700] rev 20716
revset: added __nonzero__ method to spanset class Implemented it in a lazy way, just look for the first non-filtered revision and return True if there's any revision at all.
Sat, 25 Jun 2011 02:46:23 +0200 require: provide a link to a wiki page in addition of suggesting upgrade
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sat, 25 Jun 2011 02:46:23 +0200] rev 20715
require: provide a link to a wiki page in addition of suggesting upgrade The wiki page is intended to describe several solution to the requirement issue. Some of those solutions does not involve upgrading mercurial. That is very useful for people that can't easily upgrade they Mercurial in some place.
Thu, 06 Mar 2014 09:41:47 -0800 revset: optimized sort method in lazyset class
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Mar 2014 09:41:47 -0800] rev 20714
revset: optimized sort method in lazyset class We are taking advantage of the smartset classes sort method when it exists and converting the set to a baseset otherwise.
Thu, 13 Mar 2014 13:47:21 -0700 revset: improve head revset performance
Durham Goode <durham@fb.com> [Thu, 13 Mar 2014 13:47:21 -0700] rev 20713
revset: improve head revset performance Previously the head() revset would iterate over every item in the subset and check if it was a head. Since the subset is often the entire repo, this was slow on large repos. Now we iterate over each item in the head list and check if it's in the subset, which results in much less work. hg log -r 'head()' on a large repo: Before: 0.95s After: 0.28s
Tue, 11 Mar 2014 16:52:15 -0700 revset: added ascending attribute to addset class
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 11 Mar 2014 16:52:15 -0700] rev 20712
revset: added ascending attribute to addset class In case both collections are in an ascending/descending order then we will be able to iterate them lazily while keeping the order.
Mon, 10 Mar 2014 10:49:04 -0700 revset: added set method to addset to duck type generatorset
Lucas Moscovicz <lmoscovicz@fb.com> [Mon, 10 Mar 2014 10:49:04 -0700] rev 20711
revset: added set method to addset to duck type generatorset Since this class is only going to be used inside revset.py (it does not duck type baseset) it needs to duck type only a few more methods for the next patches.
Thu, 13 Mar 2014 15:00:34 -0500 merge with default
Matt Mackall <mpm@selenic.com> [Thu, 13 Mar 2014 15:00:34 -0500] rev 20710
merge with default
Thu, 13 Mar 2014 14:34:32 -0500 revsets: backout d04aac468bf4 due to performance regressions
Matt Mackall <mpm@selenic.com> [Thu, 13 Mar 2014 14:34:32 -0500] rev 20709
revsets: backout d04aac468bf4 due to performance regressions
Wed, 12 Mar 2014 17:20:26 -0700 revset: made addset a private class
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 12 Mar 2014 17:20:26 -0700] rev 20708
revset: made addset a private class This class is not supposed to be used outside revset.py since it only wraps content that is used by baseset typed classes. It only gets created by revset operations or private methods.
Wed, 12 Mar 2014 17:19:46 -0700 revset: made descgeneratorset a private class
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 12 Mar 2014 17:19:46 -0700] rev 20707
revset: made descgeneratorset a private class This class is not supposed to be used outside revset.py since it only wraps content that is used by baseset typed classes. It only gets created by revset operations or private methods.
Wed, 12 Mar 2014 17:18:54 -0700 revset: made ascgeneratorset a private class
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 12 Mar 2014 17:18:54 -0700] rev 20706
revset: made ascgeneratorset a private class This class is not supposed to be used outside revset.py since it only wraps content that is used by baseset typed classes. It only gets created by revset operations or private methods.
Wed, 12 Mar 2014 17:07:38 -0700 revset: made generatorset a private class
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 12 Mar 2014 17:07:38 -0700] rev 20705
revset: made generatorset a private class This class are not supposed to be used outside revset.py since it only wraps content that is used by baseset typed classes. It only gets created by revset operations or private methods.
Wed, 05 Mar 2014 18:49:47 -0800 cmdutil: changed walkchangerevs to use spanset instead of baseset
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 05 Mar 2014 18:49:47 -0800] rev 20704
cmdutil: changed walkchangerevs to use spanset instead of baseset Using a spanset takes almost no memory at all. A baseset builds the entire list in memory and is much slower for methods like __contains__.
Mon, 24 Feb 2014 16:36:17 -0800 revset: added sort methods to generatorsets
Lucas Moscovicz <lmoscovicz@fb.com> [Mon, 24 Feb 2014 16:36:17 -0800] rev 20703
revset: added sort methods to generatorsets Method needed to propagate sort calls amongst lazy structures. The generated list (stored in the object) is sorted. If the generated list did not contain all elements from the generator, we take care of that before sorting the list.
Thu, 13 Mar 2014 12:05:08 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 13 Mar 2014 12:05:08 -0500] rev 20702
merge with stable
Tue, 04 Feb 2014 18:33:25 -0500 fix_bytesmod: use the "from mercurial" form of the import to avoid breaking httpclient
Augie Fackler <raf@durin42.com> [Tue, 04 Feb 2014 18:33:25 -0500] rev 20701
fix_bytesmod: use the "from mercurial" form of the import to avoid breaking httpclient Without this patch, 2to3's rewrites to httpclient cause it to fail to import. With this patch, it's probably hopelessly broken, but at least won't block forward progress on non-http2 functionality on Python 3.
Thu, 13 Mar 2014 19:48:41 +0900 commit: create new amend changeset as secret correctly for "--secret" option stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 13 Mar 2014 19:48:41 +0900] rev 20700
commit: create new amend changeset as secret correctly for "--secret" option Before this patch, "hg commit --amend --secret" doesn't create new amend changeset as secret, even though the internal function "commitfunc()" passed to "cmdutil.amend()" make "phases.new-commit" configuration as "secret" temporarily. "cmdutil.amend()" uses specified "commitfunc" only for temporary amend commit, and creates the final amend commit changeset by "localrepository.commitctx()" directly with memctx. This patch creates new amend changeset as secret correctly for "--secret" option, by changing "phases.new-commit" configuration temporarily before "localrepository.commitctx()".
Wed, 12 Mar 2014 10:26:48 +0200 hg log: solves bug regarding hg log -r 0:null (issue4039) stable
Cristian Zamfir <cristi_zmf@yahoo.com> [Wed, 12 Mar 2014 10:26:48 +0200] rev 20699
hg log: solves bug regarding hg log -r 0:null (issue4039) 'hg log -r 0:null' was showing only one changeset(the '-1' one) instead of the first two changesets.
Mon, 10 Mar 2014 17:52:42 -0400 killdaemons: drop superfluous L suffix from constant
Augie Fackler <raf@durin42.com> [Mon, 10 Mar 2014 17:52:42 -0400] rev 20698
killdaemons: drop superfluous L suffix from constant As far as I'm aware PEP 237[0] means this suffix is superfluous even on Python 2.4, and we can just drop it, which makes this code happy on Python 3. 0: http://legacy.python.org/dev/peps/pep-0237/
Wed, 12 Mar 2014 18:28:57 -0400 setup.py: fix 2.4 breakage in 77ab0abb
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 18:28:57 -0400] rev 20697
setup.py: fix 2.4 breakage in 77ab0abb
Thu, 19 Sep 2013 15:38:42 -0400 setup: handle more invalid python3 syntax
Augie Fackler <raf@durin42.com> [Thu, 19 Sep 2013 15:38:42 -0400] rev 20696
setup: handle more invalid python3 syntax This should keep the file portable to both python2 and python3.
Fri, 07 Mar 2014 14:06:49 -0800 revset: changed __add__ methods on lazy sets to return addsets (issue4191)
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 07 Mar 2014 14:06:49 -0800] rev 20695
revset: changed __add__ methods on lazy sets to return addsets (issue4191) Performance Benchmarking: $ hg --time log --graph --style compact --limit 6 -r 'sort((::. or bookmark() or heads(public())), "-rev")' time: real 1.540 secs (user 1.510+0.000 sys 0.020+0.000) $ ./hg --time log --graph --style compact --limit 6 -r 'sort((::. or bookmark() or heads(public())), "-rev")' time: real 1.240 secs (user 1.190+0.000 sys 0.040+0.010)
Fri, 07 Mar 2014 13:48:31 -0800 revset: added addset class with its basic methods
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 07 Mar 2014 13:48:31 -0800] rev 20694
revset: added addset class with its basic methods This class addresses the problem of losing performance on the __contains__ method when adding two smart structures with fast membership testing.
Tue, 11 Feb 2014 14:03:43 -0800 revset: changed _children method to use lazy structures
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 11 Feb 2014 14:03:43 -0800] rev 20693
revset: changed _children method to use lazy structures
Mon, 10 Feb 2014 12:26:45 -0800 revset: changed descendants revset to use lazy generators
Lucas Moscovicz <lmoscovicz@fb.com> [Mon, 10 Feb 2014 12:26:45 -0800] rev 20692
revset: changed descendants revset to use lazy generators Performance Benchmarking: $ time hg log -qr "0:: and 0:5" ... real 0m3.665s user 0m3.364s sys 0m0.289s $ time ./hg log -qr "0:: and 0:5" ... real 0m0.492s user 0m0.394s sys 0m0.097s
Fri, 07 Feb 2014 13:44:57 -0800 revset: optimized _revancestors method based on order of revisions
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 07 Feb 2014 13:44:57 -0800] rev 20691
revset: optimized _revancestors method based on order of revisions If the revisions for which the ancestors are required are in descending order, it lazily loads them into a heap to be able to yield values faster.
Fri, 07 Feb 2014 10:32:02 -0800 revset: changed ancestors revset to return lazy generators
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 07 Feb 2014 10:32:02 -0800] rev 20690
revset: changed ancestors revset to return lazy generators This will not improve revsets like "::tip" but will do when that gets intersected or substracted with another revset. Performance Benchmarking: $ time hg log -qr "draft() and ::tip" ... real 0m3.961s user 0m3.640s sys 0m0.313s $ time ./hg log -qr "draft() and ::tip" ... real 0m1.080s user 0m0.987s sys 0m0.083s
Tue, 11 Mar 2014 14:36:40 +0900 doc: show short description of each commands in generated documents
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 11 Mar 2014 14:36:40 +0900] rev 20689
doc: show short description of each commands in generated documents Before this patch, short description of each commands is not shown in generated documents (HTML file and UNIX man page). This omitting may prevent users from understanding about commands. This patch show it as the 1st paragraph in the help section of each commands. This style is chosen because: - showing it as the section title in "command - short desc" style disallows referencing by "#command" in HTML file: in "en" locale, hyphen concatenated title is used as the section ID in HTML file for this style - showing it as the 1st paragraph in "command - short desc" style seems to be redundant: "command" appears also just before as the section title - showing it just after synopsis like "hg help command" seems not to be reasonable in UNIX man page This patch just writes short description ("d['desc'][0]") before "::", because it should be already "strip()"-ed in "get_desc()", or empty string for the command without description.
Wed, 12 Mar 2014 13:31:27 -0400 check-code: disallow use of dict(key=value) construction
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:31:27 -0400] rev 20688
check-code: disallow use of dict(key=value) construction {} literals are faster and more consistent across Python 2 and 3. Whitelisted the one use of dict() that is using a generator expresion.
Wed, 12 Mar 2014 13:29:29 -0400 setup.py: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:29:29 -0400] rev 20687
setup.py: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:21:30 -0400 test-wireproto: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:21:30 -0400] rev 20686
test-wireproto: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:21:17 -0400 test-url: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:21:17 -0400] rev 20685
test-url: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:21:02 -0400 test-filelog: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:21:02 -0400] rev 20684
test-filelog: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:20:42 -0400 templatekw: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:20:42 -0400] rev 20683
templatekw: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:20:24 -0400 minirst: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:20:24 -0400] rev 20682
minirst: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:20:04 -0400 webutil: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:20:04 -0400] rev 20681
webutil: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:19:43 -0400 run-tests: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:19:43 -0400] rev 20680
run-tests: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:19:20 -0400 util: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:19:20 -0400] rev 20679
util: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:29:07 -0400 webcommands: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:29:07 -0400] rev 20678
webcommands: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:15:37 -0400 hgwebdir_mod: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:15:37 -0400] rev 20677
hgwebdir_mod: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:15:09 -0400 filemerge: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:15:09 -0400] rev 20676
filemerge: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:14:31 -0400 changegroup: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:14:31 -0400] rev 20675
changegroup: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:13:42 -0400 extdiff: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:13:42 -0400] rev 20674
extdiff: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:13:10 -0400 bugzilla: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:13:10 -0400] rev 20673
bugzilla: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:12:26 -0400 synthrepo: move from dict() construction to {} literals
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:12:26 -0400] rev 20672
synthrepo: move from dict() construction to {} literals The latter are both faster and more consistent across Python 2 and 3.
Wed, 12 Mar 2014 13:00:51 -0400 wireproto: remove todict() and use {} literals instead
Augie Fackler <raf@durin42.com> [Wed, 12 Mar 2014 13:00:51 -0400] rev 20671
wireproto: remove todict() and use {} literals instead
Tue, 11 Mar 2014 16:19:08 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 11 Mar 2014 16:19:08 -0500] rev 20670
merge with stable
Mon, 10 Mar 2014 15:00:41 -0500 templater: deprecate --style now that -T exists
Matt Mackall <mpm@selenic.com> [Mon, 10 Mar 2014 15:00:41 -0500] rev 20669
templater: deprecate --style now that -T exists
Sat, 08 Mar 2014 17:38:50 -0600 templating: make -T much more flexible
Matt Mackall <mpm@selenic.com> [Sat, 08 Mar 2014 17:38:50 -0600] rev 20668
templating: make -T much more flexible It can now accept styles and paths and references to settings in [templates].
Sat, 08 Mar 2014 16:14:08 -0600 changeset_templater: remove use_template method
Matt Mackall <mpm@selenic.com> [Sat, 08 Mar 2014 16:14:08 -0600] rev 20667
changeset_templater: remove use_template method
Sat, 08 Mar 2014 16:01:58 -0600 cmdutil: make helper function to process template args
Matt Mackall <mpm@selenic.com> [Sat, 08 Mar 2014 16:01:58 -0600] rev 20666
cmdutil: make helper function to process template args
Sat, 08 Mar 2014 15:27:25 -0600 commands: add -T alternative to --template
Matt Mackall <mpm@selenic.com> [Sat, 08 Mar 2014 15:27:25 -0600] rev 20665
commands: add -T alternative to --template
Fri, 07 Mar 2014 14:29:26 -0500 config: clarify and exemplify the user name in the sample config file
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Fri, 07 Mar 2014 14:29:26 -0500] rev 20664
config: clarify and exemplify the user name in the sample config file
Mon, 10 Mar 2014 01:01:43 +0900 templater: make strings in template expressions be "string-escape"-ed correctly stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 10 Mar 2014 01:01:43 +0900] rev 20663
templater: make strings in template expressions be "string-escape"-ed correctly Changeset 64b4f0cd7336 (released with 2.8.1) fixed "recursively evaluate string literals as templates" problem (issue4102) by moving the location of "string-escape"-ing from "tokenizer()" to "compiletemplate()". But some parts in template expressions below are not processed by "compiletemplate()", and it may cause unexpected result. - 'expr' of 'if(expr, then, else)' - 'expr's of 'ifeq(expr, expr, then, else)' - 'sep' of 'join(list, sep)' - 'text' and 'style' of 'rstdoc(text, style)' - 'text' and 'chars' of 'strip(text, chars)' - 'pat' and 'repl' of 'sub(pat, repl, expr)' For example, '\n' of "{join(extras, '\n')}" is not "string-escape"-ed and treated as a literal '\n'. This breaks "Display the contents of the 'extra' field, one per line" example in "hg help templates". Just "string-escape"-ing on each parts above may not work correctly, because inside expression of nested ones already applies "string-escape" on string literals. For example: - "{join(files, '\n')}" doesn't return "string-escape"-ed string, but - "{join(files, if(branch, '\n', '\n'))}" does To fix this problem, this patch does: - introduce "rawstring" token and "runrawstring" method to handle strings not to be "string-escape"-ed correctly, and - make "runstring" method return "string-escape"-ed string, and delay "string-escape"-ing until evaluation This patch invokes "compiletemplate()" with "strtoken=exp[0]" in "gettemplate()", because "exp[1]" is not yet evaluated. This code path is tested via mapping ("expr % '{template}'"). In the other hand, this patch invokes it with "strtoken='rawstring'" in "_evalifliteral()", because "t" is the result of "arg" evaluation and it should be "string-escape"-ed if "arg" is "string" expression. This patch doesn't test "string-escape"-ing on 'expr' of 'if(expr, then, else)', because it doesn't affect the result.
Mon, 10 Mar 2014 01:01:43 +0900 templater: apply "stringify()" on sub expression to get string correctly stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 10 Mar 2014 01:01:43 +0900] rev 20662
templater: apply "stringify()" on sub expression to get string correctly Templating syntax allows nested expression to be specified as parts below, but they are evaluated as a generator and don't work correctly. - 'sep' of 'join(list, sep)' - 'text' and 'chars' of 'strip(text, chars)' In the former case, 'sep' returns expected string only for the first separation, and empty one for the second or later, because the generator has only one element. In the latter case, templating is aborted by exception, because the generator doesn't have 'strip()' method (as 'text') and can't be passed as the argument to 'str.strip()' (as 'chars'). This patch applies "stringify()" on these sub expression to get string correctly.
Mon, 10 Mar 2014 01:01:42 +0900 templater: avoid recursive evaluation of string literals completely stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 10 Mar 2014 01:01:42 +0900] rev 20661
templater: avoid recursive evaluation of string literals completely Changeset 3d8bfe2ecf6d (released with 2.8.1) fixed "recursively evaluate string literals as templates" problem (issue4103) by introducing "_evalifliteral()". But some parts in template expressions below are still processed by the combination of "compiletemplate()" and "runtemplate()", and may cause same problem unexpectedly. - 'init' and 'hang' of 'fill(text, width, init, hang)' - 'expr' of 'sub(pat, repl, expr)' - 'label' of 'label(label, expr)' This patch processes them by "_evalifliteral()" instead of the combination of "compiletemplate()" and "runtemplate()" to avoid recursive evaluation of string literals completely.
Thu, 06 Mar 2014 17:26:49 -0600 status: improve explanation of ' ' status
Matt Mackall <mpm@selenic.com> [Thu, 06 Mar 2014 17:26:49 -0600] rev 20660
status: improve explanation of ' ' status a) it shows for states other than 'A' b) it only shows with --copies
Tue, 18 Feb 2014 13:07:08 -0800 revset: changed methods in spanset to return ordered sets
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 18 Feb 2014 13:07:08 -0800] rev 20659
revset: changed methods in spanset to return ordered sets Now __sub__ and __and__ can smartly return ordered lazysets.
Tue, 25 Feb 2014 10:36:23 -0800 revset: added sort method to orderedlazyset
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 25 Feb 2014 10:36:23 -0800] rev 20658
revset: added sort method to orderedlazyset
Fri, 07 Feb 2014 08:44:18 -0800 revset: added order methods to lazyset classes
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 07 Feb 2014 08:44:18 -0800] rev 20657
revset: added order methods to lazyset classes This will allow revsets to ask for an ordered set when possible to be able to work lazily with it.
Thu, 06 Mar 2014 12:37:28 +0100 setdiscovery: document algorithms used
Olle Lundberg <geek@nerd.sh> [Thu, 06 Mar 2014 12:37:28 +0100] rev 20656
setdiscovery: document algorithms used This is taken from: http://programmers.stackexchange.com/questions/208998 And modified slightly.
Thu, 20 Feb 2014 09:17:22 +0100 doc: gendoc.py creates valid output for option descriptions with newlines
Simon Heimberg <simohe@besonet.ch> [Thu, 20 Feb 2014 09:17:22 +0100] rev 20655
doc: gendoc.py creates valid output for option descriptions with newlines gendoc.py did not handle the hanging indentation for descriptions. Work around this by joining all in one single line (same as in minirst since previous patch). This problem occurred when translations of option lines were very long. Do not bother the translators with this detail. On a long option description, the translator continued on a new line as usual. gendoc.py created invalid rst syntax like this: -o, --option Description line 1 description line 2 The new output is: -o, --option Description line 1 description line 2 The lines could theoretically become very long, but line breaking is handled when generating the final documentation.
Wed, 19 Feb 2014 17:32:21 +0100 minirst: create valid output when table data contains a newline
Simon Heimberg <simohe@besonet.ch> [Wed, 19 Feb 2014 17:32:21 +0100] rev 20654
minirst: create valid output when table data contains a newline When table data contained a newline, the result of minirst.maketable did not look nice plus it was not recognised by minirst.format: == === ==== l1 1 one l2 2 2 22 l3 == === ==== This problem occurred when the description of options had a very long translation which was split by newlines. Do not bother a translator with this detail. The multiline translations for option descriptions have been fixed in baf1600adfbe in it.po, de.po and ro.po. I manually did the same as this patch does, I removed the newlines. When a newline was in the description, this created unusable help output: $ hg help somecommand hg somecommand [option]... with somecommand, you can... options: == =================== ======================================================= =================================== --longdesc VALUE xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -n --norm normal desc --newline VALUE line1 line2 == =================== =============== =========================================================================== now this looks much nicer: ... options: --longdesc VALUE xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -n --norm normal desc --newline VALUE line1 line2
Wed, 05 Mar 2014 14:03:08 +0100 tests: match time by a glob to fix intermittent failures of test-lock-badness.t
Simon Heimberg <simohe@besonet.ch> [Wed, 05 Mar 2014 14:03:08 +0100] rev 20653
tests: match time by a glob to fix intermittent failures of test-lock-badness.t Sometimes the lock was a bit slower and took 2 seconds. Do not fail the test by this. The glob ? matches from 0 to 9 seconds, which should be enough safety.
Wed, 05 Mar 2014 10:49:43 -0800 merge: adds documentation to the mergestate class
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 05 Mar 2014 10:49:43 -0800] rev 20652
merge: adds documentation to the mergestate class Document most the new function involved in the new serialisation process (and a few others).
Wed, 05 Mar 2014 10:22:43 -0800 merge: add blank line between mergestate's method
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 05 Mar 2014 10:22:43 -0800] rev 20651
merge: add blank line between mergestate's method This class is now too big to be a single big block of continuous text.
Mon, 03 Mar 2014 23:21:24 +0900 cmdserver: allow to start server without repository
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 23:21:24 +0900] rev 20650
cmdserver: allow to start server without repository Typical use case is to clone repository through command server. Clone may require user interaction, so command-server protocol is beneficial over raw stdio channels.
Mon, 03 Mar 2014 23:11:17 +0900 cmdserver: prepare test for starting server without repository
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 23:11:17 +0900] rev 20649
cmdserver: prepare test for starting server without repository
Thu, 06 Mar 2014 01:24:03 +0100 histedit: move logic for finding child nodes to new function
Olle Lundberg <geek@nerd.sh> [Thu, 06 Mar 2014 01:24:03 +0100] rev 20648
histedit: move logic for finding child nodes to new function This function will be used in later patches.
Wed, 05 Mar 2014 22:02:45 +0100 histedit: clean up lock imports
Olle Lundberg <geek@nerd.sh> [Wed, 05 Mar 2014 22:02:45 +0100] rev 20647
histedit: clean up lock imports We are alread importing the release function from lock, no need to actually import the module too.
Wed, 05 Mar 2014 17:42:05 -0800 localrepo: changed revs to use spanset instead of baseset
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 05 Mar 2014 17:42:05 -0800] rev 20646
localrepo: changed revs to use spanset instead of baseset Performance benchmarking: $ time hg log -qf -l1 ... real 0m1.420s user 0m1.249s sys 0m0.167s $ time ~/local/hg/hg log -qf -l1 ... real 0m0.719s user 0m0.614s sys 0m0.103s
Wed, 05 Mar 2014 09:31:05 +0000 extensions: use normpath to allow trailing '\' on Windows (issue4187)
Ed Morley <emorley@mozilla.com> [Wed, 05 Mar 2014 09:31:05 +0000] rev 20645
extensions: use normpath to allow trailing '\' on Windows (issue4187) Fixes same issue as 5c794e7331e7 but now works on Windows too. With this patch a trailing backward slash won't prevent the extension from being found on Windows, and we continue to support any combination of forward and back slashes within the path.
Tue, 04 Mar 2014 09:56:59 -0600 tests: fix unused imports from inotify removal caught by pyflakes
Matt Mackall <mpm@selenic.com> [Tue, 04 Mar 2014 09:56:59 -0600] rev 20644
tests: fix unused imports from inotify removal caught by pyflakes
Thu, 27 Feb 2014 17:27:03 -0800 revset: added ordered generatorset classes with __contains__ method
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 27 Feb 2014 17:27:03 -0800] rev 20643
revset: added ordered generatorset classes with __contains__ method They stop iterating as soon as they go past the value they are looking for, so, for values not in the generator they return faster.
Tue, 25 Feb 2014 20:29:46 +0100 merge: use the right ancestor when both sides copied the same file
Mads Kiilerich <madski@unity3d.com> [Tue, 25 Feb 2014 20:29:46 +0100] rev 20642
merge: use the right ancestor when both sides copied the same file The tests shows no real changes because of this ... but there must be some weird corner cases where using the right ancestor for the merge planning is better than using the wrong one.
Tue, 25 Feb 2014 20:29:14 +0100 copies: when both sides made the same copy, report it as a copy
Mads Kiilerich <madski@unity3d.com> [Tue, 25 Feb 2014 20:29:14 +0100] rev 20641
copies: when both sides made the same copy, report it as a copy Not used yet ... but shows up in debug output.
Sun, 02 Mar 2014 18:36:02 +0100 merge: handle create+delete prompts in calculateupdates
Mads Kiilerich <madski@unity3d.com> [Sun, 02 Mar 2014 18:36:02 +0100] rev 20640
merge: handle create+delete prompts in calculateupdates I would like to move it all the way to the interactive resolve state like merges are ... but this is a first intermediate step.
Fri, 28 Feb 2014 02:26:03 +0100 merge: handle acceptremove of create+delete early in manifest merge
Mads Kiilerich <madski@unity3d.com> [Fri, 28 Feb 2014 02:26:03 +0100] rev 20639
merge: handle acceptremove of create+delete early in manifest merge
Sun, 02 Mar 2014 18:30:41 +0100 largefiles: override calculateupdates instead of manifestmerge
Mads Kiilerich <madski@unity3d.com> [Sun, 02 Mar 2014 18:30:41 +0100] rev 20638
largefiles: override calculateupdates instead of manifestmerge That will give calculateupdates a purpose in life ... and be convenient later.
Tue, 25 Feb 2014 20:28:40 +0100 tests: add systematic test of merge ancestor calculation
Mads Kiilerich <madski@unity3d.com> [Tue, 25 Feb 2014 20:28:40 +0100] rev 20637
tests: add systematic test of merge ancestor calculation There is probably some overlap with the existing tests - it is hard to figure out what these tests are doing.
Sun, 02 Mar 2014 18:25:19 +0100 tests: add test case for criss cross merge
Mads Kiilerich <madski@unity3d.com> [Sun, 02 Mar 2014 18:25:19 +0100] rev 20636
tests: add test case for criss cross merge The test do not fit in any existing test file...
Mon, 03 Mar 2014 15:34:09 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 03 Mar 2014 15:34:09 -0600] rev 20635
merge with stable
Mon, 03 Mar 2014 12:54:46 -0800 revset: changed generatorset code to remove unnecesary function call
Lucas Moscovicz <lmoscovicz@fb.com> [Mon, 03 Mar 2014 12:54:46 -0800] rev 20634
revset: changed generatorset code to remove unnecesary function call Removed _nextitem() method, now __iter__ has that logic and __contains__ uses __iter__ to check for membership.
Mon, 03 Mar 2014 15:50:45 +0900 phase: say "Returns 0" instead of "Return 0" like other command help stable
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 15:50:45 +0900] rev 20633
phase: say "Returns 0" instead of "Return 0" like other command help
Mon, 03 Mar 2014 15:50:41 +0900 dirstate: remove double imports of errno
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 15:50:41 +0900] rev 20632
dirstate: remove double imports of errno
Mon, 03 Mar 2014 15:50:51 +0900 cmdserver: mask return code of runcommand in the same way as dispatch.run
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 15:50:51 +0900] rev 20631
cmdserver: mask return code of runcommand in the same way as dispatch.run "hg help" does not state that the code for abort is 255, but it's confusing to have different code between hg command and command server. Tests of python-hglib 1.2 passed with this change.
Mon, 03 Mar 2014 15:50:48 +0900 cmdserver: include non-zero return code of runcommand in test output
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 15:50:48 +0900] rev 20630
cmdserver: include non-zero return code of runcommand in test output
Mon, 03 Mar 2014 19:41:30 +0900 cmdserver: recreate mq object on runcommand in case queue path was changed
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 19:41:30 +0900] rev 20629
cmdserver: recreate mq object on runcommand in case queue path was changed repo.mq needs to be recreated after queue path change. Since there is little benefit to keep invalidated mq object, it always delete repo.mq.
Mon, 03 Mar 2014 19:41:26 +0900 cmdserver: reload mq on each runcommand request to avoid corruption
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 19:41:26 +0900] rev 20628
cmdserver: reload mq on each runcommand request to avoid corruption If mq was changed by another process, command server should invalidate caches. Otherwise, mq status would go wrong.
Mon, 03 Mar 2014 19:41:23 +0900 localrepo: add hook point to invalidate everything on each command-server run
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 19:41:23 +0900] rev 20627
localrepo: add hook point to invalidate everything on each command-server run MQ extension will wrap this function to invalidate its state. repo.invalidate cannot be wrapped for this purpose because qpush obtains repo.lock in the middle of the operation, triggering repo.invalidate. Also, it seems wrong to obtain lock earlier because mq data is non-store parts.
Mon, 03 Mar 2014 23:37:59 +0530 paper: overlapping of section title on help pages (issue4051) stable
anuraggoel <anurag.dsps@gmail.com> [Mon, 03 Mar 2014 23:37:59 +0530] rev 20626
paper: overlapping of section title on help pages (issue4051) Now there will be no overlap lines between various section title on help pages. http://selenic.com/repo/hg/help/config
Sat, 01 Mar 2014 20:08:41 -0600 contrib: drop tmplrewrite
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 20:08:41 -0600] rev 20625
contrib: drop tmplrewrite Needed for the 1.3 transition in 2009, no longer relevant
Sat, 01 Mar 2014 19:51:22 -0600 extensions: mark win32text deprecated
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 19:51:22 -0600] rev 20624
extensions: mark win32text deprecated Happened a long time ago.
Sat, 01 Mar 2014 19:44:14 -0600 extensions: remove interhg
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 19:44:14 -0600] rev 20623
extensions: remove interhg Has been built-in for a few releases.
Sat, 01 Mar 2014 16:20:15 -0600 extensions: remove the inotify extension (BC)
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 16:20:15 -0600] rev 20622
extensions: remove the inotify extension (BC) This extension has always had correctness issues and has been unmaintained for years. It is now removed in favor of the third-party hgwatchman which is maintained and appears to be correct. Users with inotify enabled in their config files will fall back to standard status performance.
Sat, 01 Mar 2014 21:08:43 -0500 merge main and crew
Augie Fackler <raf@durin42.com> [Sat, 01 Mar 2014 21:08:43 -0500] rev 20621
merge main and crew
Sat, 01 Mar 2014 21:08:28 -0500 merge with stable
Augie Fackler <raf@durin42.com> [Sat, 01 Mar 2014 21:08:28 -0500] rev 20620
merge with stable
Sat, 01 Mar 2014 09:30:23 -0500 merge with mpm
Augie Fackler <raf@durin42.com> [Sat, 01 Mar 2014 09:30:23 -0500] rev 20619
merge with mpm
Sat, 01 Mar 2014 09:21:45 -0500 test-help.t: fix for non-Linux platforms
Augie Fackler <raf@durin42.com> [Sat, 01 Mar 2014 09:21:45 -0500] rev 20618
test-help.t: fix for non-Linux platforms
Sat, 01 Mar 2014 15:22:49 -0600 Added signature for changeset b96cb15ec9e0 stable
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 15:22:49 -0600] rev 20617
Added signature for changeset b96cb15ec9e0
Sat, 01 Mar 2014 15:22:30 -0600 Added tag 2.9.1 for changeset b96cb15ec9e0 stable
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 15:22:30 -0600] rev 20616
Added tag 2.9.1 for changeset b96cb15ec9e0
Sat, 01 Mar 2014 18:09:39 +0100 merge: audit the right destination file when merging with dir rename stable 2.9.1
Mads Kiilerich <madski@unity3d.com> [Sat, 01 Mar 2014 18:09:39 +0100] rev 20615
merge: audit the right destination file when merging with dir rename
Mon, 03 Feb 2014 02:09:46 -0500 setup: specify --prefix="" for install-home-bin to avoid badness with defaults
Augie Fackler <raf@durin42.com> [Mon, 03 Feb 2014 02:09:46 -0500] rev 20614
setup: specify --prefix="" for install-home-bin to avoid badness with defaults Sometimes (I'm not sure when) setup.py gets a default value for --prefix, which breaks --home. This fixes that for me.
Sat, 16 Nov 2013 08:57:08 -0800 revset: add 'only' revset
Durham Goode <durham@fb.com> [Sat, 16 Nov 2013 08:57:08 -0800] rev 20613
revset: add 'only' revset Adds a only() revset that has two forms: only(<set>) is equivalent to "::<set> - ::(heads() - heads(<set>::))" only(<include>,<exclude>) is equivalent to "::<include> - ::<exclude>" On a large repo, this implementation can process/traverse 50,000 revs in 0.7 seconds, versus 4.2 seconds using "::<include> - ::<exclude>". This is useful for performing histedits on your branch: hg histedit -r 'first(only(.))' Or lifting branch foo off of branch bar: hg rebase -d @ -s 'only(foo, bar)' Or a variety of other uses.
Thu, 06 Feb 2014 17:42:08 -0800 revset: added basic operators to orderedlazyset
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 17:42:08 -0800] rev 20612
revset: added basic operators to orderedlazyset Now __and__ and __sub__ return orderedlazyset.
Thu, 06 Feb 2014 09:28:41 -0800 revset: changed revset code to use filter method
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 09:28:41 -0800] rev 20611
revset: changed revset code to use filter method Revset methods now use the filter code to apply a condition.
Thu, 06 Feb 2014 17:18:11 -0800 revset: added filter method to revset classes
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 17:18:11 -0800] rev 20610
revset: added filter method to revset classes This method will replace the creation of lazysets inside the revset methods. Instead, the classes that handle lazy structures will create them based on their current order.
Wed, 05 Feb 2014 15:24:08 -0800 revset: added orderedlazyset class
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 05 Feb 2014 15:24:08 -0800] rev 20609
revset: added orderedlazyset class
Thu, 27 Feb 2014 23:17:37 -0600 config: make repo optional again
Matt Mackall <mpm@selenic.com> [Thu, 27 Feb 2014 23:17:37 -0600] rev 20608
config: make repo optional again
Fri, 28 Feb 2014 02:28:12 +0100 merge: fix spelling of length
Olle Lundberg <geek@nerd.sh> [Fri, 28 Feb 2014 02:28:12 +0100] rev 20607
merge: fix spelling of length
Mon, 10 Feb 2014 07:13:10 +0400 ui: edit(): transplant: set HGREVISION environment variable for an editor
Alexander Drozdov <al.drozdov@gmail.com> [Mon, 10 Feb 2014 07:13:10 +0400] rev 20606
ui: edit(): transplant: set HGREVISION environment variable for an editor transplant command set 'transplant_source' extra for the revision. Allow an editor to access the extra using HGREVISION environment variable. This may be useful when an editor is actually a script which modifies a commit message. Transplant filters is an alternative way to do it.
Thu, 06 Feb 2014 12:21:20 +0400 ui: edit(): rebase, graft: set HGREVISION environment variable for an editor
Alexander Drozdov <al.drozdov@gmail.com> [Thu, 06 Feb 2014 12:21:20 +0400] rev 20605
ui: edit(): rebase, graft: set HGREVISION environment variable for an editor rebase and graft commands set 'rebase_source' or 'source' extras for the revision. Allow an editor to access the extras using HGREVISION environment variable. This may be useful when an editor is actually a script which modifies a commit message. The name 'HGREVISION' has been selected as transplant already sets this variable for its filters (--filter).
Thu, 06 Feb 2014 10:15:20 +0400 cmdutil: make commitforceeditor() to pass revision extras to ui.edit()
Alexander Drozdov <al.drozdov@gmail.com> [Thu, 06 Feb 2014 10:15:20 +0400] rev 20604
cmdutil: make commitforceeditor() to pass revision extras to ui.edit()
Thu, 06 Feb 2014 11:38:28 +0400 ui: allow edit() to work with revision extras
Alexander Drozdov <al.drozdov@gmail.com> [Thu, 06 Feb 2014 11:38:28 +0400] rev 20603
ui: allow edit() to work with revision extras Make edit() to accept optional 'extra' dictionary. Revision extras will be used in upcoming patches to set some environment variables.
Fri, 14 Feb 2014 00:36:44 +0100 tests: glob match has a glob character for not getting a warning on windows
Simon Heimberg <simohe@besonet.ch> [Fri, 14 Feb 2014 00:36:44 +0100] rev 20602
tests: glob match has a glob character for not getting a warning on windows When / matches on / on windows, and there is no other glob character, this results in a warning. Avoid this by using an other glob character.
Sun, 16 Feb 2014 23:41:24 +0100 run-tests: fixed warn detection on failures with too many output
Simon Heimberg <simohe@besonet.ch> [Sun, 16 Feb 2014 23:41:24 +0100] rev 20601
run-tests: fixed warn detection on failures with too many output The state "warned" was reported too often. The problem fixed here is that warnonly was only reset when a line did not match. When there was a line too much, warnonly remained set. Fix this by setting more states to warnonly. More negative testing (testing on result "Failed") has been done this time.
Sun, 16 Feb 2014 23:36:02 +0100 run-tests: fixed warn detection on detecting warn only for lines
Simon Heimberg <simohe@besonet.ch> [Sun, 16 Feb 2014 23:36:02 +0100] rev 20600
run-tests: fixed warn detection on detecting warn only for lines The state "warned" was reported too often. The main problem was that "False == 0" is true in python. Therefore use an empty string instead of 0 for reporting warn only for a line. The other problem is fixed in the next patch.
(0) -10000 -3000 -1000 -224 +224 +1000 +3000 +10000 +30000 tip