Thu, 22 Jun 2017 11:16:29 +0200 tests: update regex check for fetch error in test-clonebundles.t
Denis Laxalde <denis@laxalde.org> [Thu, 22 Jun 2017 11:16:29 +0200] rev 33009
tests: update regex check for fetch error in test-clonebundles.t On some systems, e.g. Docker container, the actual error may be: error fetching bundle: [Errno 99] Cannot assign requested address Update the regex to handle this case.
Tue, 20 Jun 2017 20:53:29 -0700 hgweb: use separate CSS class for navigation links in footer
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 20 Jun 2017 20:53:29 -0700] rev 33008
hgweb: use separate CSS class for navigation links in footer 2d93d2159e30 changed the styling of the "page_nav" CSS class to use flexbox to separate elements within the <div>. I didn't realize that this class was used outside of the links in the header. So this resulted in incorrectly formatting links in the footer of various pages. Fix that by introducing a new CSS class that preserves the old CSS behavior.
Sat, 17 Jun 2017 13:25:42 +0200 configitems: register 'ui.clonebundleprefers' as example for 'configlist'
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 17 Jun 2017 13:25:42 +0200] rev 33007
configitems: register 'ui.clonebundleprefers' as example for 'configlist' This exercise the default value handling in 'configlist'.
Sat, 17 Jun 2017 13:17:10 +0200 configitems: register 'patch.fuzz' as first example for 'configint'
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 17 Jun 2017 13:17:10 +0200] rev 33006
configitems: register 'patch.fuzz' as first example for 'configint' This exercise the default value handling in 'configint'.
Sat, 17 Jun 2017 13:08:03 +0200 configitems: issue a devel warning when overriding default config
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 17 Jun 2017 13:08:03 +0200] rev 33005
configitems: issue a devel warning when overriding default config If the option is registered, there is already a default value available and passing a new one is at best redundant. So we issue a deprecation warning in this case. (note: there will be case were the default value will not be as simple as what is currently possible. We'll upgrade the configitems code to handle them in time.)
Sat, 17 Jun 2017 12:33:59 +0200 configitems: register 'ui.quiet' as first example
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 17 Jun 2017 12:33:59 +0200] rev 33004
configitems: register 'ui.quiet' as first example We now have a user and this works fine.
Sat, 17 Jun 2017 12:15:28 +0200 configitems: get default values from the central registry when available
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 17 Jun 2017 12:15:28 +0200] rev 33003
configitems: get default values from the central registry when available We do not have any registered config yet, but we are now ready to use them. For now we ignore this feature for config access with "alternates". On the long run, we expect alternates to be handled as "aliases" by the config item themself.
Sat, 17 Jun 2017 18:43:27 +0200 configitems: introduce a central registry for config option
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 17 Jun 2017 18:43:27 +0200] rev 33002
configitems: introduce a central registry for config option We now have the appropriate infrastructure to register config items. Usage will added in the next changeset.
Sat, 17 Jun 2017 18:41:55 +0200 configitems: add a basic class to hold config item information
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 17 Jun 2017 18:41:55 +0200] rev 33001
configitems: add a basic class to hold config item information The goal of this class is allow explicit declaration for the available config option. This class will hold the data for one specific config item. To keep it simple we start centralizing the handling of the default config value. In the future we can expect more data to be carried on this class. For example: - documentation, - status (experimental, advanced, normal, deprecated), - aliases, - expected type, - etc...
Wed, 21 Jun 2017 01:12:31 -0700 run-tests: fix -i when "#testcases" is used in .t test
Jun Wu <quark@fb.com> [Wed, 21 Jun 2017 01:12:31 -0700] rev 33000
run-tests: fix -i when "#testcases" is used in .t test The "#testcases" feature introduced by 7340465bd788 has issues with "-i" because "-i" uses "test.name.endswith('.t')" to test if a test is .t or not. test.name could now be something like "test-foo.t (caseA)" so the above endswith test is no longer valid. This patch changes the test to use "self.path" which won't have the issue.
Wed, 21 Jun 2017 01:12:31 -0700 run-tests: update .t reference output after reading the test
Jun Wu <quark@fb.com> [Wed, 21 Jun 2017 01:12:31 -0700] rev 32999
run-tests: update .t reference output after reading the test The .t file is both test input and reference output. They should always match. However we have different code paths to read reference output (Test.__init__ -> Test.readrefout) and test input (TTest._run) so they might be inconsistent if somethings change the file between those two functions. This patch assigns "lines" read by "_run" back to "_refout" if "_refout" is not None (with --debug, see Test.readrefout) so reference output and test input will always match.
Wed, 21 Jun 2017 01:05:20 -0700 run-tests: do not prompt changes (-i) if a race condition is detected
Jun Wu <quark@fb.com> [Wed, 21 Jun 2017 01:05:20 -0700] rev 32998
run-tests: do not prompt changes (-i) if a race condition is detected The race condition is like: 1. run-tests.py reads test-a.t as reference output, content A 2. run-tests.py runs the test (which could be content B, another race condition fixed by the next patch, but assume it's content A here) 3. something changes test-a.t to content C 4. run-tests.py compares test output (content D) with content A 5. with "-i", run-tests.py prompts diff(A, D), while the file has content C instead of A at this time This patch detects the above case and tell the user to rerun the test if they want to apply test changes.
Tue, 20 Jun 2017 23:22:38 -0700 patch: rewrite reversehunks (issue5337)
Jun Wu <quark@fb.com> [Tue, 20 Jun 2017 23:22:38 -0700] rev 32997
patch: rewrite reversehunks (issue5337) The old reversehunks code accesses "crecord.uihunk._hunk", which is the raw recordhunk without crecord selection information, therefore "revert -i" cannot revert individual lines, aka. issue5337. The patch rewrites related logic to return the right reverse hunk for revert. Namely, 1. "fromline" and "toline" are correctly swapped [1] 2. crecord.uihunk generates a correct reverse hunk [2] Besides, reversehunks(hunks) will no longer modify its input "hunks", which is more expected. [1]: To explain why "fromline" and "toline" need to be swapped, take the following example: $ cat > a <<EOF > 1 > 2 > 3 > 4 > EOF $ cat > b <<EOF > 2 > 3 > 5 > EOF $ diff a b 1d0 <---- "1" is "fromline" and "0" is "toline" < 1 and they are swapped if diff from the reversed direction 4c3 | < 4 | --- | > 5 | | $ diff b a | 0a1 <---------+ > 1 3c4 <---- also "4c3" gets swapped to "3c4" < 5 --- > 4 [2]: This is a bit tricky. For example, given a file which is empty in working parent but has 3 lines in working copy, and the user selection: select hunk to discard [x] +1 [ ] +2 [x] +3 The user intent is to drop "1" and "3" in working copy but keep "2", so the reverse patch would be something like: -1 2 (2 is a "context line") -3 We cannot just take all selected lines and swap "-" and "+", which will be: -1 -3 That patch won't apply because of "2". So the correct way is to insert "2" as a "context line" by inserting it first then deleting it: -2 +2 Therefore, the correct revert patch is: -1 -2 +2 -3 It could be reordered to look more like a common diff hunk: -1 -2 -3 +2 Note: It's possible to return multiple hunks so there won't be lines like "-2", "+2". But the current implementation is much simpler. For deletions, like the working parent has "1\n2\n3\n" and it was changed to empty in working copy: select hunk to discard [x] -1 [ ] -2 [x] -3 The user intent is to drop the deletion of 1 and 3 (in other words, keep those lines), but still delete "2". The reverse patch is meant to be applied to working copy which is empty. So the patch would be: +1 +3 That is to say, there is no need to special handle the unselected "2" like the above insertion case.
Wed, 21 Jun 2017 10:46:18 +0200 profiling: cope with configwith default value handling changes
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 21 Jun 2017 10:46:18 +0200] rev 32996
profiling: cope with configwith default value handling changes Changeset 6ff6eb33f353 change 'configwith' behavior so that the default value is run through the conversion function. In parallel a new user of 'configwith' got introduced unaware of this coming behavior change. This broke profiling. We resolve the situation by having the new conversion function cope with a default value already using the right type.
Tue, 20 Jun 2017 14:00:41 -0700 py3: catch StopIteration from next() in generatorset
Martin von Zweigbergk <martinvonz@google.com> [Tue, 20 Jun 2017 14:00:41 -0700] rev 32995
py3: catch StopIteration from next() in generatorset IIUC, letting the StopIteration through would not cause any bugs, but not doing it makes the test-py3-commands.t pass. I have also diligently gone through all uses of next() in our code base. They either: * are not called from a generator * pass a default value to next() * catch StopException * work on infinite iterators * request a fixed number of items that matches the generated number * are about batching in wireproto which I didn't quite follow I'd appreciate if Augie or someone else could take a look at the wireproto batching and convince themselves that the next(batchable) calls there will not raise a StopIteration.
Tue, 20 Jun 2017 23:23:45 -0400 tests: adjust quoting to keep Windows happy with recent $PYTHON change
Matt Harbison <matt_harbison@yahoo.com> [Tue, 20 Jun 2017 23:23:45 -0400] rev 32994
tests: adjust quoting to keep Windows happy with recent $PYTHON change I tried adding quotes to the $PYTHON variable, and also tried converting the path from the current 'c:/Python/python.exe' form to '/c/python/python.exe', but neither worked. I'm not sure why one of these needs '\"' around the variable and the other doesn't.
Tue, 20 Jun 2017 16:33:13 -0700 bundle2: don't use debug message "no-transaction" with transaction
Martin von Zweigbergk <martinvonz@google.com> [Tue, 20 Jun 2017 16:33:13 -0700] rev 32993
bundle2: don't use debug message "no-transaction" with transaction
Wed, 21 Jun 2017 02:20:34 +0530 py3: use pycompat.bytestr() in place of str()
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 21 Jun 2017 02:20:34 +0530] rev 32992
py3: use pycompat.bytestr() in place of str()
Wed, 21 Jun 2017 02:13:34 +0530 py3: use r'' to access values from kwargs where keys are str
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 21 Jun 2017 02:13:34 +0530] rev 32991
py3: use r'' to access values from kwargs where keys are str These are the cases where either args is again passed as keyword argument or 1 or 2 elements are accessed. So it's better to add an r'' to prevent it converting to bytes rather than doing the conversion of args.
Wed, 21 Jun 2017 02:10:25 +0530 py3: convert keys of kwargs in template keywords functions to bytes
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 21 Jun 2017 02:10:25 +0530] rev 32990
py3: convert keys of kwargs in template keywords functions to bytes This patch converts the args argument keys' to bytes wherever necessary as there are some places where either args is not used or using r'' is better or args is again passed as keyword arguments.
Tue, 20 Jun 2017 23:50:50 +0530 py3: make sure the commands name are bytes in test-devel-warnings.t
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 20 Jun 2017 23:50:50 +0530] rev 32989
py3: make sure the commands name are bytes in test-devel-warnings.t
Tue, 20 Jun 2017 23:46:18 +0530 py3: replace str with bytes in isinstance()
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 20 Jun 2017 23:46:18 +0530] rev 32988
py3: replace str with bytes in isinstance() We were using str because on Python 2, str were bytes but now we have to use bytes. Otherwise the if conditions fails and we have weird results from commands on Python 3.
Tue, 20 Jun 2017 22:11:46 +0530 py3: catch binascii.Error raised from binascii.unhexlify
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 20 Jun 2017 22:11:46 +0530] rev 32987
py3: catch binascii.Error raised from binascii.unhexlify Before Python 3, binsacii.unhexlify used to raise TypeError, now it raises binascii.Error.
Tue, 20 Jun 2017 23:39:59 -0700 shelve: allow unlimited shelved changes per name
Jun Wu <quark@fb.com> [Tue, 20 Jun 2017 23:39:59 -0700] rev 32986
shelve: allow unlimited shelved changes per name Previously, there is a 100 changes limit per name (bookmark or named branch). And the user will get "too many shelved changes named %s" when they are trying to shelve the 101th change. I hit that error message today. This limit was introduced by the shelve extension since the beginning. The function generating the names was called "gennames", under "getshelvename". There is another "gennames" under "backupfilename": def backupfilename(self): def gennames(base): yield base base, ext = base.rsplit('.', 1) for i in itertools.count(1): yield '%s-%d.%s' % (base, i, ext) "itertools.count" is an endless counter. Since the other "gennames" generates unlimited number of names, and the changeset introducing the limit (49d4919d21) does not say why the limit is useful. It seems safe to just remove the limit. The format "%02d" was kept intentionally so existing shelved changes won't break.
Sat, 17 Jun 2017 12:51:37 +0200 config: use the new '_unset' value for 'configsuboptions'
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 17 Jun 2017 12:51:37 +0200] rev 32985
config: use the new '_unset' value for 'configsuboptions' This should let configsuboptions delegate all special processing of the default config value to the main 'config' method.
Sat, 17 Jun 2017 18:28:20 +0200 config: use the 'config' method in 'configsuboptions'
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 17 Jun 2017 18:28:20 +0200] rev 32984
config: use the 'config' method in 'configsuboptions' There was unnecessary code duplication. It was getting in the way of the unification of the default value logic.
Sat, 17 Jun 2017 12:52:02 +0200 config: use the new '_unset' value for 'configpath'
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 17 Jun 2017 12:52:02 +0200] rev 32983
config: use the new '_unset' value for 'configpath' This should let 'configpath' delegate all special processing of the default config value to the main 'config' method.
Sat, 17 Jun 2017 12:54:45 +0200 config: use the new '_unset' value for 'configdate'
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 17 Jun 2017 12:54:45 +0200] rev 32982
config: use the new '_unset' value for 'configdate' This should let 'configdate' delegate all special processing of the default config value to the main 'config' method. The default value for date (None) is still enforced in this method if no other default were passed.
Sat, 17 Jun 2017 12:54:04 +0200 config: use the new '_unset' value for 'configlist'
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 17 Jun 2017 12:54:04 +0200] rev 32981
config: use the new '_unset' value for 'configlist' This should let 'configlist' delegate all special processing of the default config value to the main 'config' method. The default config value ([]) is still handled in this method.
Sat, 17 Jun 2017 12:53:51 +0200 config: use the new '_unset' value for 'configbytes'
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 17 Jun 2017 12:53:51 +0200] rev 32980
config: use the new '_unset' value for 'configbytes' This should let 'configbytes' delegates all special processing of the default config value to the main 'config' method.
Sat, 17 Jun 2017 12:53:40 +0200 config: use the new '_unset' value for 'configint'
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 17 Jun 2017 12:53:40 +0200] rev 32979
config: use the new '_unset' value for 'configint' This should let 'configint' delegates all special processing of the default config value to the main 'config' method.
Sat, 17 Jun 2017 12:52:31 +0200 config: use the new '_unset' value for 'configwith'
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 17 Jun 2017 12:52:31 +0200] rev 32978
config: use the new '_unset' value for 'configwith' This should let 'configwith' delegate all special processing of the default config value to the main 'config' method. This changeset introduce a small change in behavior since the default value is run through the 'convert' function. This does not seems harmful and no actual test break. This small change make the code simpler so I'm keeping it.
Sat, 17 Jun 2017 12:52:16 +0200 config: use the new '_unset' value for 'configbool'
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 17 Jun 2017 12:52:16 +0200] rev 32977
config: use the new '_unset' value for 'configbool' This should let 'configbool' delegate all special processing of the default config value to the main 'config' method. The default value for bool (False) is still enforced in this method if no other default were passed.
Sat, 17 Jun 2017 12:51:11 +0200 config: explicitly track the use of the standard default value
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 17 Jun 2017 12:51:11 +0200] rev 32976
config: explicitly track the use of the standard default value We introduce a small object used to detect that no specific default value has been passed to 'ui.config'. We need this explicit special value since "None" is a valid and common default value. The end goal here is to make progress on a centralised and explicit declaration of the available config option. A first good usecase for this are "default" value. Before starting looking further down this alley we needs to rework the handling of default value in the 'ui' object to have all configxyz methods going through the same logic. This is the first changeset on this trek.
Mon, 19 Jun 2017 22:14:37 -0700 clonebundle: update hook arguments (BC)
Martin von Zweigbergk <martinvonz@google.com> [Mon, 19 Jun 2017 22:14:37 -0700] rev 32975
clonebundle: update hook arguments (BC) By calling applybundle() with 'clonebundles' and the url instead of calling processbundle(), the hooks will get different arguments: HG_SOURCE will be 'clonebundles' instead of 'bundle2' and HG_URL will be the url instead of 'bundle2'. This is consistent with the bundle1 behavior and seems like a bug fix, but I'm marking it BC anyway.
Sat, 10 Jun 2017 23:42:38 -0700 commands: move checkconflict to bookmarks module
Sean Farley <sean@farley.io> [Sat, 10 Jun 2017 23:42:38 -0700] rev 32974
commands: move checkconflict to bookmarks module Again, commands.bookmark is getting too large. checkconflict already has a lot of state and putting it in the bmstore makes more sense than having it as a closure. This also allows extensions a place to override this behavior. While we're here, add a documentation string because, well, we should be documenting more of our methods.
Sat, 10 Jun 2017 23:32:58 -0700 commands: move checkformat to bookmarks module
Sean Farley <sean@farley.io> [Sat, 10 Jun 2017 23:32:58 -0700] rev 32973
commands: move checkformat to bookmarks module commands.bookmark has grown quite large with two closures already. Let's split this up (and in the process allow extensions to override the default behavior).
Tue, 20 Jun 2017 14:35:53 -0700 tests: tell pip not to check for a newer version
Danek Duvall <danek.duvall@oracle.com> [Tue, 20 Jun 2017 14:35:53 -0700] rev 32972
tests: tell pip not to check for a newer version pip will check to see if it's the latest version, and complain if it isn't. The --no-index flag implies the --disable-pip-version-check flag, and makes the warning (and any associated network activity) go away.
Sat, 22 Apr 2017 21:16:08 +0900 changeset_templater: backport parts map of [templates] section from formatter
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 21:16:08 +0900] rev 32971
changeset_templater: backport parts map of [templates] section from formatter
Sat, 22 Apr 2017 21:29:00 +0900 formatter: add support for parts map of [templates] section
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 21:29:00 +0900] rev 32970
formatter: add support for parts map of [templates] section Unlike a mapfile whose template is looked up by spec -> mapfile -> topic, [templates] section is global. We use :sub-section syntax to define parts per template.
Sat, 17 Jun 2017 16:32:20 +0900 changeset_templater: backport separator template from formatter
Yuya Nishihara <yuya@tcha.org> [Sat, 17 Jun 2017 16:32:20 +0900] rev 32969
changeset_templater: backport separator template from formatter As commented, this should be used with docheader and docfooter, not with header nor footer. That's one reason why no props are passed to templater when rendering a separator. (See map-cmdline.changelog to understand what the "header" is.)
Sat, 22 Apr 2017 21:50:51 +0900 formatter: add support for separator template
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 21:50:51 +0900] rev 32968
formatter: add support for separator template This seems useful for writing JSON template.
Sat, 22 Apr 2017 21:46:14 +0900 formatter: add support for docheader and docfooter templates
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 21:46:14 +0900] rev 32967
formatter: add support for docheader and docfooter templates templatepartsmap() is a minimal copy of changeset_templater.__init__(). I tried to factor out a common function, but it was unnecessarily complicated.
Sat, 22 Apr 2017 21:38:08 +0900 formatter: extract helper function to render template
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 21:38:08 +0900] rev 32966
formatter: extract helper function to render template
Sat, 22 Apr 2017 21:09:07 +0900 changeset_templater: do not enable verbosity postfix for [templates] section
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 21:09:07 +0900] rev 32965
changeset_templater: do not enable verbosity postfix for [templates] section Since this postfix hack exists only for backward compatibility, we don't need it for new [templates] section. This isn't a BC as templates defined in [templates] section weren't loaded until recently.
Sat, 22 Apr 2017 21:06:11 +0900 changeset_templater: simplify handling of verbosity postfix
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 21:06:11 +0900] rev 32964
changeset_templater: simplify handling of verbosity postfix
Tue, 20 Jun 2017 16:33:46 -0400 merge with stable
Augie Fackler <augie@google.com> [Tue, 20 Jun 2017 16:33:46 -0400] rev 32963
merge with stable
Mon, 19 Jun 2017 16:08:20 -0700 tests: don't touch the network when using virtualenv
Danek Duvall <danek.duvall@oracle.com> [Mon, 19 Jun 2017 16:08:20 -0700] rev 32962
tests: don't touch the network when using virtualenv
Sat, 03 Jun 2017 17:32:52 -0700 tests: removed ReportedTest exception
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Jun 2017 17:32:52 -0700] rev 32961
tests: removed ReportedTest exception The only call site called addFailure before raising, which is exactly what the failure exception handler does. So this complexity is not needed. We have test coverage of this "server failed to start" scenario and nothing appeared to change.
Sat, 03 Jun 2017 17:22:45 -0700 tests: remove support for warned tests
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Jun 2017 17:22:45 -0700] rev 32960
tests: remove support for warned tests The previous changeset removed the last caller of addWarn(). So, we rip out that method and all the code related to tracking warned tests in the results system. There was even a comment saying we may want to fold warned tests into the "failed" state, which is what the previous changeset did.
Tue, 20 Jun 2017 09:49:43 -0400 contrib: add check-code rule to enforce non-use of `python` in tests
Augie Fackler <augie@google.com> [Tue, 20 Jun 2017 09:49:43 -0400] rev 32959
contrib: add check-code rule to enforce non-use of `python` in tests
Tue, 20 Jun 2017 09:45:02 -0400 cleanup: use $PYTHON to run python in many more tests
Augie Fackler <augie@google.com> [Tue, 20 Jun 2017 09:45:02 -0400] rev 32958
cleanup: use $PYTHON to run python in many more tests Spotted one of these, then wrote a check-code rule that caught them all. It will be the next change.
Thu, 15 Jun 2017 14:22:39 -0400 tests: enforce use of $PYTHON in tests
Augie Fackler <augie@google.com> [Thu, 15 Jun 2017 14:22:39 -0400] rev 32957
tests: enforce use of $PYTHON in tests
Thu, 15 Jun 2017 14:27:52 -0400 tests: use $PYTHON in #! so we always use the right Python
Augie Fackler <augie@google.com> [Thu, 15 Jun 2017 14:27:52 -0400] rev 32956
tests: use $PYTHON in #! so we always use the right Python
Tue, 20 Jun 2017 09:33:19 -0400 tests: sed away python #! in test-run-tests.t to avoid some upcoming insanity
Augie Fackler <augie@google.com> [Tue, 20 Jun 2017 09:33:19 -0400] rev 32955
tests: sed away python #! in test-run-tests.t to avoid some upcoming insanity
Tue, 20 Jun 2017 08:44:56 -0400 tests: remove #! from primes.py in test-highlight.t
Augie Fackler <augie@google.com> [Tue, 20 Jun 2017 08:44:56 -0400] rev 32954
tests: remove #! from primes.py in test-highlight.t It's about to be a source of trouble, but removing it changes a ton of test lines, so doing this change as a standalone commit.
Tue, 20 Jun 2017 12:51:36 +0100 keyword: use context manager for rollback locking
Christian Ebert <blacktrash@gmx.net> [Tue, 20 Jun 2017 12:51:36 +0100] rev 32953
keyword: use context manager for rollback locking
Sat, 03 Jun 2017 17:13:35 -0700 tests: remove WarnTest
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Jun 2017 17:13:35 -0700] rev 32952
tests: remove WarnTest We would raise this if a test didn't return a result code. AFAICT this can only occur if there is a logic error in the test harness itself. I don't think it is worth the code complexity to distinguish this failure scenario from a regular test failure.
Sat, 03 Jun 2017 17:09:13 -0700 tests: remove unused IgnoreTest exception
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Jun 2017 17:09:13 -0700] rev 32951
tests: remove unused IgnoreTest exception AFAICT its last use was removed in d839e4820da7.
Sat, 03 Jun 2017 17:04:42 -0700 tests: use unittest.SkipTest
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 03 Jun 2017 17:04:42 -0700] rev 32950
tests: use unittest.SkipTest unittest.SkipTest was introduced in Python 2.7. We previously defined it with our own class so we could run on Python 2.6.
Thu, 15 Jun 2017 23:23:47 -0700 changegroup: delete "if True" and reflow
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 23:23:47 -0700] rev 32949
changegroup: delete "if True" and reflow
Thu, 15 Jun 2017 22:46:38 -0700 changegroup: let callers pass in transaction to apply() (API)
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 22:46:38 -0700] rev 32948
changegroup: let callers pass in transaction to apply() (API) I think passing in the transaction makes it a little clearer and more consistent with bundle2.
Thu, 15 Jun 2017 23:09:14 -0700 repair: create transaction for bundle1 unbundling earlier
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 23:09:14 -0700] rev 32947
repair: create transaction for bundle1 unbundling earlier See earlier patch for motivation.
Thu, 15 Jun 2017 22:18:21 -0700 unbundle: create transaction for bundle1 unbundling earlier
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 22:18:21 -0700] rev 32946
unbundle: create transaction for bundle1 unbundling earlier See earlier patch for motivation.
Thu, 15 Jun 2017 16:10:53 -0700 exchange: create transaction for bundle1 unbundling earlier
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 16:10:53 -0700] rev 32945
exchange: create transaction for bundle1 unbundling earlier changegroup.apply() currently creates a transation if there isn't already one. Having the callers of that method pass in an existing transaction seems a little cleaner. To do that, we need to make sure all callers have a transaction. Since the transaction name is used as a hook argument (HG_TXNNAME), we need to match the name from changegroup.apply().
Mon, 19 Jun 2017 00:06:23 -0700 changegroup: inline 'publishing' variable in apply()
Martin von Zweigbergk <martinvonz@google.com> [Mon, 19 Jun 2017 00:06:23 -0700] rev 32944
changegroup: inline 'publishing' variable in apply()
Mon, 19 Jun 2017 11:24:49 -0700 repair: remove unnecessary locking for bookmarks
Martin von Zweigbergk <martinvonz@google.com> [Mon, 19 Jun 2017 11:24:49 -0700] rev 32943
repair: remove unnecessary locking for bookmarks The caller has already locked the repo.
Mon, 19 Jun 2017 13:18:00 -0700 repair: move check for existing transaction earlier
Martin von Zweigbergk <martinvonz@google.com> [Mon, 19 Jun 2017 13:18:00 -0700] rev 32942
repair: move check for existing transaction earlier Several benefits: * Gets close the comment describing it * Splits off unrelated comment about "backup" argument * Error checking is customarily done early * If we added an early return to the method, it would still consistently fail if there was an existing transaction (so we would find and fix that case quickly) One test needs updating with for this change, because we no longer create the backup bundle before we fail. I don't see much reason to create that backup bundle. If some command was adding content and then trying to strip it as well within the transaction, we would have a backup for the user, but the risk of that not being discovered in development seems very small.
Mon, 19 Jun 2017 13:13:28 -0700 strip: remove unncessary "del" and inline variable
Martin von Zweigbergk <martinvonz@google.com> [Mon, 19 Jun 2017 13:13:28 -0700] rev 32941
strip: remove unncessary "del" and inline variable
Mon, 19 Jun 2017 11:24:21 -0700 repair: clarify in comment that caller must take lock, but not transaction
Martin von Zweigbergk <martinvonz@google.com> [Mon, 19 Jun 2017 11:24:21 -0700] rev 32940
repair: clarify in comment that caller must take lock, but not transaction I have checked that all callers have already taken the lock (and if they hadn't, we should have seen tests fail thanks to the 'transaction requires locking' devel warning in localrepo.transaction()).
Mon, 19 Jun 2017 11:21:37 -0700 amend: use context manager for locking
Martin von Zweigbergk <martinvonz@google.com> [Mon, 19 Jun 2017 11:21:37 -0700] rev 32939
amend: use context manager for locking
Mon, 19 Jun 2017 11:20:29 -0700 strip: use context manager for locking and transaction in stripcmd()
Martin von Zweigbergk <martinvonz@google.com> [Mon, 19 Jun 2017 11:20:29 -0700] rev 32938
strip: use context manager for locking and transaction in stripcmd()
Mon, 19 Jun 2017 11:17:31 -0700 strip: use context manager for locking in strip()
Martin von Zweigbergk <martinvonz@google.com> [Mon, 19 Jun 2017 11:17:31 -0700] rev 32937
strip: use context manager for locking in strip()
Mon, 19 Jun 2017 11:18:12 -0700 rebase: use context manager for locking in pullrebase()
Martin von Zweigbergk <martinvonz@google.com> [Mon, 19 Jun 2017 11:18:12 -0700] rev 32936
rebase: use context manager for locking in pullrebase()
Mon, 19 Jun 2017 11:18:05 -0700 rebase: use context manager for locking in rebase()
Martin von Zweigbergk <martinvonz@google.com> [Mon, 19 Jun 2017 11:18:05 -0700] rev 32935
rebase: use context manager for locking in rebase()
Mon, 19 Jun 2017 21:53:54 -0400 test-http-proxy: redirect proxy stdout to /dev/null
Matt Harbison <matt_harbison@yahoo.com> [Mon, 19 Jun 2017 21:53:54 -0400] rev 32934
test-http-proxy: redirect proxy stdout to /dev/null This output hasn't been getting flushed, but would alter the log if it ever grew large enough. See 23b07333a8b2.
Mon, 19 Jun 2017 21:44:23 -0400 test-logtoprocess: don't run on Windows
Matt Harbison <matt_harbison@yahoo.com> [Mon, 19 Jun 2017 21:44:23 -0400] rev 32933
test-logtoprocess: don't run on Windows Several bits of output were missing[1], unless the DETACHED_PROCESS flag is _not_ passed to subprocess.Popen(). The problem with that is it briefly opens and closes several cmd.exe windows on screen. Foozy also mentioned some other issues in that thread. With this, the last of the long standing Windows failures fixed, the test suite now runs cleanly (536 ran, 67 skipped) on Windows 7 x64, with python 2.7.13. \o/ [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-April/096987.html
Sun, 18 Jun 2017 12:06:22 +0900 revset: add support of keyword arguments to ancestors() and descendants()
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Jun 2017 12:06:22 +0900] rev 32932
revset: add support of keyword arguments to ancestors() and descendants() Prepares for adding depth parameter.
Sun, 18 Jun 2017 11:57:28 +0900 revsetlang: check arguments passed to ancestors() before optimizing to only()
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Jun 2017 11:57:28 +0900] rev 32931
revsetlang: check arguments passed to ancestors() before optimizing to only() Future patches will add depth parameter to ancestors(), which isn't compatible with only().
Sun, 18 Jun 2017 11:39:03 +0900 revsetlang: factor out helper to match ancestors() in parsed tree
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Jun 2017 11:39:03 +0900] rev 32930
revsetlang: factor out helper to match ancestors() in parsed tree More checks will be added.
Sat, 17 Jun 2017 13:34:18 +0900 templatekw: use common "rev:node" format as the default of predecessors
Yuya Nishihara <yuya@tcha.org> [Sat, 17 Jun 2017 13:34:18 +0900] rev 32929
templatekw: use common "rev:node" format as the default of predecessors I'm not sure if this is better. If we're planning to add a template keyword that returns obsoleted nodes unavailable in the repo (i.e. they have no valid revision numbers), we might want to use the current "node"-only format everywhere.
Sat, 17 Jun 2017 13:23:55 +0900 templatekw: populate all keywords depending on predecessor in map operation
Yuya Nishihara <yuya@tcha.org> [Sat, 17 Jun 2017 13:23:55 +0900] rev 32928
templatekw: populate all keywords depending on predecessor in map operation This is what showparents() does. repo[precnode] should never fail since its validity is tested by closestpredecessors().
Sat, 17 Jun 2017 13:18:03 +0900 templatekw: reference predecessor node id as {node} in map operation
Yuya Nishihara <yuya@tcha.org> [Sat, 17 Jun 2017 13:18:03 +0900] rev 32927
templatekw: reference predecessor node id as {node} in map operation More predecessor-depending values will be populated by the next patch.
Sun, 18 Jun 2017 23:05:54 -0400 highlight: put pygments import inside demandimport.deactivated
Augie Fackler <raf@durin42.com> [Sun, 18 Jun 2017 23:05:54 -0400] rev 32926
highlight: put pygments import inside demandimport.deactivated I tripped on some weirdness relating to _thread vs threading way down in a dep of highlight recently. I'm not really sure why I'm only just seeing this defect now, but experimentally this fixes the problem, and shouldn't cause any load-time slowness for people until pygments is actually about to be used since highlight.highlight is still lazily loaded in the highlight/__init__.py file.
Sun, 18 Jun 2017 22:19:54 -0400 run-tests: explicitly flush test runner output for Windows stability
Matt Harbison <matt_harbison@yahoo.com> [Sun, 18 Jun 2017 22:19:54 -0400] rev 32925
run-tests: explicitly flush test runner output for Windows stability When hghave testing goes awry, the output order was changing on Windows. diff --git a/tests/test-run-tests.t b/tests/test-run-tests.t --- a/tests/test-run-tests.t +++ b/tests/test-run-tests.t @@ -920,10 +920,10 @@ > EOF > done $ rt -j 2 - .... + ....skipped: unknown feature: notarealhghavefeature\r (esc) + + # Ran 5 tests, 0 skipped, 0 warned, 0 failed. - skipped: unknown feature: notarealhghavefeature - $ cd .. $ rm -rf broken Since 'skipped: unknown feature: notarealhghavefeature\n\n' is printed to stdout and the rest to stderr, it seems like maybe stdio isn't line buffered on Windows. When a program exits, stdout is flushed before stderr[1]. [1] https://blogs.msdn.microsoft.com/oldnewthing/20060519-09/?p=31133
Sun, 18 Jun 2017 21:31:53 -0400 tinyproxy: explicitly flush logged messages
Matt Harbison <matt_harbison@yahoo.com> [Sun, 18 Jun 2017 21:31:53 -0400] rev 32924
tinyproxy: explicitly flush logged messages On Windows, output streams are buffered when redirected to a file, and TerminateProcess() apparently doesn't trigger a flush. This left test-http-proxy.t missing part of the last line when it cat'd proxy.log[1]. Flushing stderr is all that is needed (on py27 anyway). I originally flushed stdout too, but that added additional output to the log: $ cat proxy.log + Accept: $LOCALIP (localhost)\r (esc) + Serving HTTP on 0.0.0.0 port 20810 ...\r (esc) + connect to localhost:$HGPORT\r (esc) * - - [*] "GET http://localhost:$HGPORT/?cmd=capabilities HTTP/1.1" - - (glob) + bye\r (esc) + connect to localhost:$HGPORT\r (esc) * - - [*] "GET http://localhost:$HGPORT/?cmd=branchmap HTTP/1.1" - - x-hgproto-1:0.1 0.2 comp=*zlib,none,bzip2 (glob) + bye\r (esc) + connect to localhost:$HGPORT\r (esc) * - - [*] "GET http://localhost:$HGPORT/?cmd=stream_out HTTP/1.1" - - x-hgproto-1:0.1 0.2 comp=*zlib,none,bzip2 (glob) + bye\r (esc) + connect to localhost:$HGPORT\r (esc) ... [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-April/096987.html
Sun, 18 Jun 2017 22:46:56 +0900 help: clarify ancestors() and descendants() include given set (issue5594)
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Jun 2017 22:46:56 +0900] rev 32923
help: clarify ancestors() and descendants() include given set (issue5594) Also unified "a changeset" to "changesets".
Sun, 19 Feb 2017 19:37:14 +0900 dagop: move blockancestors() and blockdescendants() from context
Yuya Nishihara <yuya@tcha.org> [Sun, 19 Feb 2017 19:37:14 +0900] rev 32922
dagop: move blockancestors() and blockdescendants() from context context.py seems not a good place to host these functions. % wc -l mercurial/context.py mercurial/dagop.py 2306 mercurial/context.py 424 mercurial/dagop.py 2730 total
Sun, 16 Oct 2016 18:03:24 +0900 dagop: split module hosting DAG-related algorithms from revset
Yuya Nishihara <yuya@tcha.org> [Sun, 16 Oct 2016 18:03:24 +0900] rev 32921
dagop: split module hosting DAG-related algorithms from revset This module hosts the following functions. They are somewhat similar (e.g. scanning revisions using heap queue or stack) and seem non-trivial in algorithmic point of view. - _revancestors() - _revdescendants() - reachableroots() - _toposort() I was thinking of adding revset._fileancestors() generator for better follow() implementation, but it would be called from context.py as well. So I decided to create new module. Naming is hard. I couldn't come up with any better module name, so it's called "dag operation" now. I rejected the following candidates: - ancestor.py - existing, revlog-level DAG algorithm - ancestorset.py - doesn't always return a set - dagalgorithm.py - hard to type - dagutil.py - existing - revancestor.py - I want to add fileancestors() % wc -l mercurial/dagop.py mercurial/revset.py 339 mercurial/dagop.py 2020 mercurial/revset.py 2359 total
Thu, 15 Jun 2017 17:14:53 -0700 tests: protect tests involving git ext::sh with git-ext-sh
Sean Farley <sean@farley.io> [Thu, 15 Jun 2017 17:14:53 -0700] rev 32920
tests: protect tests involving git ext::sh with git-ext-sh
Thu, 15 Jun 2017 17:13:23 -0700 hghave: add has_git_range for testing if git understands ext::sh
Sean Farley <sean@farley.io> [Thu, 15 Jun 2017 17:13:23 -0700] rev 32919
hghave: add has_git_range for testing if git understands ext::sh Even on CentOS 7, git is at version 1.8. It seems git 1.9 is when ext::sh was introduced so we a check for that. The way these functions are written follows the same style and format for the way we check svn and bzr versions.
Sat, 17 Jun 2017 23:09:47 -0700 rebase: rewrite "x in y.children()" as "y in x.parents()"
Martin von Zweigbergk <martinvonz@google.com> [Sat, 17 Jun 2017 23:09:47 -0700] rev 32918
rebase: rewrite "x in y.children()" as "y in x.parents()" children() is slow
Sat, 17 Jun 2017 23:09:39 -0700 shelve: rewrite "x in y.children()" as "y in x.parents()"
Martin von Zweigbergk <martinvonz@google.com> [Sat, 17 Jun 2017 23:09:39 -0700] rev 32917
shelve: rewrite "x in y.children()" as "y in x.parents()" children() is slow
Sat, 17 Jun 2017 17:16:28 +0530 py3: use open() instead of file() constructor
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 17 Jun 2017 17:16:28 +0530] rev 32916
py3: use open() instead of file() constructor The file() constructor has been removed in python 3.
Sat, 17 Jun 2017 15:29:26 +0530 py3: convert keys of kwargs back to bytes using pycompat.byteskwargs()
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 17 Jun 2017 15:29:26 +0530] rev 32915
py3: convert keys of kwargs back to bytes using pycompat.byteskwargs()
Sat, 17 Jun 2017 15:05:11 +0530 py3: use pycompat.strkwargs() to convert kwargs keys to str before passing
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 17 Jun 2017 15:05:11 +0530] rev 32914
py3: use pycompat.strkwargs() to convert kwargs keys to str before passing
Sat, 17 Jun 2017 14:53:25 +0530 py3: use '%d' instead of '%s' for integers
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 17 Jun 2017 14:53:25 +0530] rev 32913
py3: use '%d' instead of '%s' for integers Python 3 does not let you use '%s' for integers.
Sat, 17 Jun 2017 14:39:10 +0530 py3: pass the path in hg.repository() as bytes
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 17 Jun 2017 14:39:10 +0530] rev 32912
py3: pass the path in hg.repository() as bytes This make test-ancestor.py pass on Python 3.
Sat, 17 Jun 2017 14:38:02 +0530 py3: pass range() into list() to get one explicitly
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 17 Jun 2017 14:38:02 +0530] rev 32911
py3: pass range() into list() to get one explicitly range() on python 3 returns a generator whereas on python 2 returns a list. So to get a list on python 3, we passed it into list()
Sun, 28 May 2017 00:12:38 +0200 check-concurrency: expose the feature as 'concurrent-push-mode'
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 28 May 2017 00:12:38 +0200] rev 32910
check-concurrency: expose the feature as 'concurrent-push-mode' We move the feature to a proper configuration and document it. The config goes in the 'server' section because it feels like something the server owner would want to decide. We pick and open field because it seems likely that other checking levels will emerge in the future. (eg: server like the mozilla-try server will likely wants a "none" value) The option name contains 'push' since this affects 'push' only. The option value 'check-related' is preferred over one explicitly containing 'allow' or 'deny' because the client still have a strong decision power here. Here, the server is just advising the client on the check mode to use.
Fri, 16 Jun 2017 22:57:31 -0700 exchange: switch to usual way of testing for bundle2-ness
Martin von Zweigbergk <martinvonz@google.com> [Fri, 16 Jun 2017 22:57:31 -0700] rev 32909
exchange: switch to usual way of testing for bundle2-ness We used safehasattr() in one place, but we use isinstance() for this everywhere else, so switch to the latter.
Fri, 16 Jun 2017 21:57:22 -0400 setup: update a comment that blamed py26 for a Windows workaround
Matt Harbison <matt_harbison@yahoo.com> [Fri, 16 Jun 2017 21:57:22 -0400] rev 32908
setup: update a comment that blamed py26 for a Windows workaround
Fri, 16 Jun 2017 20:55:34 -0400 i18n: drop a py25 conditional
Matt Harbison <matt_harbison@yahoo.com> [Fri, 16 Jun 2017 20:55:34 -0400] rev 32907
i18n: drop a py25 conditional I'm not sure how to test this one. `make update-pot` spews all kinds of warnings, though it did before this change too.
Fri, 16 Jun 2017 20:49:32 -0400 perf: ensure HGRCPATH is exported on Windows
Matt Harbison <matt_harbison@yahoo.com> [Fri, 16 Jun 2017 20:49:32 -0400] rev 32906
perf: ensure HGRCPATH is exported on Windows After dropping the garbage collector hack, `hg perfstartup` started yelling about not being able to import the evolve extension, which I have in my user config. Launching `env` shows that an empty HGRCPATH isn't exported to the environment. Since `env` doesn't quote, I have no idea if the variable is trimmed, but Mercurial doesn't complain when processing it.
Fri, 16 Jun 2017 20:35:45 -0400 test-status: glob fixes for Windows
Matt Harbison <matt_harbison@yahoo.com> [Fri, 16 Jun 2017 20:35:45 -0400] rev 32905
test-status: glob fixes for Windows
Fri, 16 Jun 2017 18:42:03 -0400 plan9: drop py26 hacks
Matt Harbison <matt_harbison@yahoo.com> [Fri, 16 Jun 2017 18:42:03 -0400] rev 32904
plan9: drop py26 hacks
Sun, 18 Jun 2017 12:25:23 +0900 revset: fix negative ancestor spec to not return changectx objects
Yuya Nishihara <yuya@tcha.org> [Sun, 18 Jun 2017 12:25:23 +0900] rev 32903
revset: fix negative ancestor spec to not return changectx objects The order was unstable because of this.
Mon, 01 May 2017 05:57:36 +0200 obsolete: use ProgrammingError over assert for volatile set registration
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 01 May 2017 05:57:36 +0200] rev 32902
obsolete: use ProgrammingError over assert for volatile set registration We have ProgrammingError now.
Fri, 16 Jun 2017 10:13:44 -0700 strip: remove a redundant setting of hookargs
Martin von Zweigbergk <martinvonz@google.com> [Fri, 16 Jun 2017 10:13:44 -0700] rev 32901
strip: remove a redundant setting of hookargs bundle2.applybundle() will set both 'source' and 'url'.
Fri, 16 Jun 2017 10:38:14 -0700 unbundle: move streamclone error case away from bundle[12] cases
Martin von Zweigbergk <martinvonz@google.com> [Fri, 16 Jun 2017 10:38:14 -0700] rev 32900
unbundle: move streamclone error case away from bundle[12] cases The bundle1 and bundle2 cases are more similar, and having the streamclone case in between is distracting.
Fri, 16 Jun 2017 10:36:43 -0700 bundle2: use "else" instead of checking condition again
Martin von Zweigbergk <martinvonz@google.com> [Fri, 16 Jun 2017 10:36:43 -0700] rev 32899
bundle2: use "else" instead of checking condition again
Fri, 16 Jun 2017 09:37:22 -0700 wireproto: update reference to deleted addchangegroup()
Martin von Zweigbergk <martinvonz@google.com> [Fri, 16 Jun 2017 09:37:22 -0700] rev 32898
wireproto: update reference to deleted addchangegroup() Thanks to Yuya for catching this.
Thu, 15 Jun 2017 13:02:58 +0200 template: add predecessors template
Boris Feld <boris.feld@octobus.net> [Thu, 15 Jun 2017 13:02:58 +0200] rev 32897
template: add predecessors template Add a 'predecessors' template that returns the list of all closest known predecessors for a changectx. The elements of the list are row changectx node id formatted by default as short nodes. The "closest predecessors" are the first locally known revisions encountered while, walking predecessors markers. For example: 1) If a (A, (B)) markers exists and both A and B are locally known A is a closest predecessors of B. 2) If a (A, (B)) and (B, (C)) markers exists and only A and C are known locally, A will be the closest precursors of C. This logic respect repository filtering. So hidden revision will be skipped by this logic unless --hidden is specified. Since we only display the visible predecessors, this template will not display anything in most case. It makes a good candidate for inclusion in the default log output. I added a new test-file for testing the precursors in various scenarios. This test file will also be used for the successors template. A new "obsutil" module has been added to start gathering utility function outside of the large obsolete.py module.
Sat, 22 Apr 2017 20:29:45 +0900 commit: select template by spec.ref name
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 20:29:45 +0900] rev 32896
commit: select template by spec.ref name And load all templates defined in [committemplate] since the selected template is no longer be named as 'changeset'.
Sat, 22 Apr 2017 15:28:29 +0900 commit: do not look up committemplate in template paths (BC)
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 15:28:29 +0900] rev 32895
commit: do not look up committemplate in template paths (BC) From 5375ba75df40 and de5cee8ba088, I don't think the current behavior is intended. Commit templates should be processed as literal templates.
Sat, 06 May 2017 17:03:59 +0900 formatter: always store a literal template unnamed
Yuya Nishihara <yuya@tcha.org> [Sat, 06 May 2017 17:03:59 +0900] rev 32894
formatter: always store a literal template unnamed Now spec.ref should be '' if spec.tmpl is specified. Since spec.ref is the option to select the initial template to be rendered, it doesn't make sense to store the given literal template as spec.ref.
Sat, 22 Apr 2017 20:14:55 +0900 formatter: load templates section like a map file
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 20:14:55 +0900] rev 32893
formatter: load templates section like a map file Since a map file has another level to select a template (spec -> mapfile -> topic), this isn't exactly the same as how a map file works. But I believe most users would expect the new behavior. A literal template is stored as an unnamed template so that it will never conflict with the templates defined in [templates] section.
Sat, 06 May 2017 17:41:05 +0900 test-command-template: rewrite recursion tests by using a map file
Yuya Nishihara <yuya@tcha.org> [Sat, 06 May 2017 17:41:05 +0900] rev 32892
test-command-template: rewrite recursion tests by using a map file A literal template will be unnamed soon, so no recursion will be practically made by using -T option.
Sat, 22 Apr 2017 19:56:47 +0900 templater: add simple interface for unnamed template (API)
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 19:56:47 +0900] rev 32891
templater: add simple interface for unnamed template (API) This provides a simpler API for callers which don't need full templating stack. Instead of storing the given template as the name specified by topic, use '' as the default template to be rendered.
Wed, 14 Jun 2017 20:56:34 -0400 ui: add support for a tweakdefaults knob
Augie Fackler <augie@google.com> [Wed, 14 Jun 2017 20:56:34 -0400] rev 32890
ui: add support for a tweakdefaults knob We've been talking for years about a one-stop config knob to opt in to better behavior. There have been a lot of ideas thrown around, but they all seem to be too complicated to get anyone to actually do the work.. As such, this patch is the stupidest thing that can possibly work in the name of getting a good feature to users. Right now it's just three config settings that I think are generally uncontroversial, but I expect to add more soon. That will likely include adding new config knobs for the express purpose of adding them to tweakdefaults.
Thu, 15 Jun 2017 15:13:18 -0700 localrepo: remove unused addchangegroup() (API)
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 15:13:18 -0700] rev 32889
localrepo: remove unused addchangegroup() (API) This completes the cleanup started in d3775db748a0 (localrepo: move the addchangegroup method in changegroup module, 2014-04-01).
Thu, 15 Jun 2017 13:47:54 -0700 changegroup: rename "dh" to the clearer "deltaheads"
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 13:47:54 -0700] rev 32888
changegroup: rename "dh" to the clearer "deltaheads" We have a lot of frequently used abbreviations, but this is not one of them.
Thu, 15 Jun 2017 13:42:41 -0700 changegroup: rename "srccontent" to "cgnodes"
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 13:42:41 -0700] rev 32887
changegroup: rename "srccontent" to "cgnodes" It's the list of nodes in the incoming changegroup, so "cgnodes" made more sense to me.
Thu, 15 Jun 2017 13:42:35 -0700 revlog: rename list of nodes from "content" to "nodes"
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 13:42:35 -0700] rev 32886
revlog: rename list of nodes from "content" to "nodes" It seems like the reason for "content" is that the variable contains the nodes that the changegroup "contains", see e234eda20984 (revlog: make addgroup returns a list of node contained in the added source, 2012-01-13), but "nodes" seems much clearer.
Thu, 15 Jun 2017 13:25:41 -0700 revlog: delete obsolete comment
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 13:25:41 -0700] rev 32885
revlog: delete obsolete comment The comment seems to refer to code that was deleted in 557988c691d1 (revlog.addgroup(): always use _addrevision() to add new revlog entries, 2010-10-08).
Thu, 15 Jun 2017 13:23:21 -0700 revlog: delete dead assignment in addgroup()
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 13:23:21 -0700] rev 32884
revlog: delete dead assignment in addgroup()
Fri, 16 Jun 2017 03:01:22 +0530 pycompat: move the queue related definitions below queue import
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 16 Jun 2017 03:01:22 +0530] rev 32883
pycompat: move the queue related definitions below queue import This helps in understanding why empty and queue are there.
Fri, 16 Jun 2017 02:48:17 +0530 pycompat: move multiline comments above a function to function doc
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 16 Jun 2017 02:48:17 +0530] rev 32882
pycompat: move multiline comments above a function to function doc pycompat.py is unorganized and looks ugly. Next few patches will try to make it look more cleaner so that adding more code is easy and reading code also. This patch moves the multiline comments above functions to function docs. While moving, I improved the comments and make them better suitable for func doc. While I was here I drop a unrequired and misplaced comment.
Fri, 16 Jun 2017 01:46:47 +0530 py3: replace dict.iterkeys() with iter(dict)
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 16 Jun 2017 01:46:47 +0530] rev 32881
py3: replace dict.iterkeys() with iter(dict) dict.iterkeys() does not exists on Python 3.
Fri, 16 Jun 2017 01:28:23 +0530 py3: explicitly convert dict.values() to a list on py3
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 16 Jun 2017 01:28:23 +0530] rev 32880
py3: explicitly convert dict.values() to a list on py3 dict.values() returns a dict_values() object, so we need to pass it into list() explicitly to get one.
Fri, 16 Jun 2017 01:24:31 +0530 py3: alias long to int and xrange to range in test-ancestor.py on Python 3
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 16 Jun 2017 01:24:31 +0530] rev 32879
py3: alias long to int and xrange to range in test-ancestor.py on Python 3
Fri, 16 Jun 2017 00:36:17 +0530 py3: add a new bytesurl() to convert a str url into bytes
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 16 Jun 2017 00:36:17 +0530] rev 32878
py3: add a new bytesurl() to convert a str url into bytes
Fri, 16 Jun 2017 00:32:52 +0530 py3: add a new strurl() which will convert a bytes url to str
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 16 Jun 2017 00:32:52 +0530] rev 32877
py3: add a new strurl() which will convert a bytes url to str
Thu, 15 Jun 2017 21:59:42 -0400 killdaemons: fix WaitForSingleObject() error handling logic on Windows
Matt Harbison <matt_harbison@yahoo.com> [Thu, 15 Jun 2017 21:59:42 -0400] rev 32876
killdaemons: fix WaitForSingleObject() error handling logic on Windows The error return is not 0 for this method, so _check() was doing nothing when an error occurred. This forces the error path, much like the check for OpenProcess(). The only unhandled return is now WAIT_ABANDONED, but I don't see how that could happen in this case.
Tue, 06 Jun 2017 20:18:06 -0400 killdaemons: explicitly set the ctypes signatures
Matt Harbison <matt_harbison@yahoo.com> [Tue, 06 Jun 2017 20:18:06 -0400] rev 32875
killdaemons: explicitly set the ctypes signatures When I tried importing util.posixfile to work around removing a file opened by another process on Windows, it brought along the declarations in win32.py, which broke the error handling[1]. It doesn't seem worth hacking killdaemons[2] just to isolate these declarations in win32.py, so just declare them here to prevent any future issues. (win32.py mentions the declarations are required by pypy.) [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-May/097905.html [2] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-May/097907.html
Sun, 07 May 2017 14:58:40 -0400 hghave: enable 'serve' on Windows
Matt Harbison <matt_harbison@yahoo.com> [Sun, 07 May 2017 14:58:40 -0400] rev 32874
hghave: enable 'serve' on Windows I've been using a local hghaveaddon.py to enable this for a couple of months with reasonable success, and 'killdaemons' is already enabled on Windows. There's one failure[1] in test-http-proxy.t that this adds, which I can't figure out. [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-April/096987.html
Thu, 15 Jun 2017 11:00:29 -0400 contrib: add a ratchet for tests in Python 3
Augie Fackler <augie@google.com> [Thu, 15 Jun 2017 11:00:29 -0400] rev 32873
contrib: add a ratchet for tests in Python 3 This gives us an easy way to automatically update passing tests in Python 3.
Thu, 15 Jun 2017 10:59:48 -0400 contrib: check in a whitelist of passing tests in Python 3
Augie Fackler <augie@google.com> [Thu, 15 Jun 2017 10:59:48 -0400] rev 32872
contrib: check in a whitelist of passing tests in Python 3
Thu, 15 Jun 2017 13:13:36 -0400 tests: try and fail more gracefully with broken unicode escapes
Augie Fackler <augie@google.com> [Thu, 15 Jun 2017 13:13:36 -0400] rev 32871
tests: try and fail more gracefully with broken unicode escapes
Thu, 15 Jun 2017 12:49:13 -0400 md5sum: adapt for python 3 support
Augie Fackler <augie@google.com> [Thu, 15 Jun 2017 12:49:13 -0400] rev 32870
md5sum: adapt for python 3 support
Thu, 15 Jun 2017 11:10:51 -0700 profiling: allow configuring minimum display threshold for hotpath
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 15 Jun 2017 11:10:51 -0700] rev 32869
profiling: allow configuring minimum display threshold for hotpath statprof.display_hotpath() accepts a "limit" function to choose the minimum threshold for samples to display. The default is 0.05, which means you don't need individual items contributing less than 5%. I had a need to adjust this threshold. We already have a config option for it. So let's reuse it. check-config.py doesn't like having multiple defaults for the ui.configwith() calls. The behavior is obviously correct. I'm not sure if it is worth teaching check-config.py how to ignore this. So I've just accepted the new output.
Thu, 15 Jun 2017 11:04:46 -0700 config: document profiling.show{min,max}
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 15 Jun 2017 11:04:46 -0700] rev 32868
config: document profiling.show{min,max}
Thu, 15 Jun 2017 10:58:36 -0700 check-config: look for ui.configwith
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 15 Jun 2017 10:58:36 -0700] rev 32867
check-config: look for ui.configwith We previously weren't looking for this config helper. And, surprise, profiling.py references config options without docs. If I tried hard enough, I could have combined the regexps using a positive lookbehind assertion or something. But I didn't want to make my brain explode. At some point, we should probably do this linting at the tokenizer or ast layer. I'm not willing to open that can of worms right now.
Thu, 15 Jun 2017 10:38:19 -0700 check-config: use named groups in regexp
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 15 Jun 2017 10:38:19 -0700] rev 32866
check-config: use named groups in regexp In preparation for making this regexp a bit more complicated.
Thu, 15 Jun 2017 10:36:23 -0700 check-config: use compiled regexp
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 15 Jun 2017 10:36:23 -0700] rev 32865
check-config: use compiled regexp And split the regexp across multiple lines to make it easier to read.
Thu, 15 Jun 2017 10:46:39 -0700 tests: add test coverage for check-config
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 15 Jun 2017 10:46:39 -0700] rev 32864
tests: add test coverage for check-config We didn't have explicit test coverage before. I broke check-config.py as part of writing patches and was lucky I realized it.
Thu, 15 Jun 2017 22:57:20 -0700 exchange: use context manager for bundle1 unbundling
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 22:57:20 -0700] rev 32863
exchange: use context manager for bundle1 unbundling The lazy locking is not used for bundle1, so using a regular context manager is clearer.
Thu, 15 Jun 2017 14:47:18 -0700 unbundle: use context manager for transaction
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 14:47:18 -0700] rev 32862
unbundle: use context manager for transaction
Thu, 15 Jun 2017 17:00:32 -0700 clonebundle: use context managers for lock and transaction
Martin von Zweigbergk <martinvonz@google.com> [Thu, 15 Jun 2017 17:00:32 -0700] rev 32861
clonebundle: use context managers for lock and transaction
Tue, 11 Apr 2017 21:38:24 +0900 changeset_templater: render template specified by templatespec tuple
Yuya Nishihara <yuya@tcha.org> [Tue, 11 Apr 2017 21:38:24 +0900] rev 32860
changeset_templater: render template specified by templatespec tuple
Sat, 22 Apr 2017 19:29:41 +0900 formatter: render template specified by templatespec tuple
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 19:29:41 +0900] rev 32859
formatter: render template specified by templatespec tuple
Sat, 22 Apr 2017 19:07:00 +0900 formatter: put topic in templatespec tuple
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 19:07:00 +0900] rev 32858
formatter: put topic in templatespec tuple This will allow us to change the initial template reference depending on how the template is looked up. For example, -Tdefault => (ref='changeset', tmpl=None, mapfile='map-cmdline.default') -T'{rev}' => (ref='', tmpl='{rev}', mapfile=None) A literal template given by -T option will be stored as an unnamed template, which will free up the template namespace so that we can load named templates from [templates] section of user config.
Sat, 22 Apr 2017 19:02:47 +0900 cmdutil: pass templatespec tuple directly to changeset_templater (API)
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 19:02:47 +0900] rev 32857
cmdutil: pass templatespec tuple directly to changeset_templater (API) A fewer number of arguments should be better.
Sat, 22 Apr 2017 18:48:38 +0900 formatter: wrap (tmpl, mapfile) by named tuple
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 18:48:38 +0900] rev 32856
formatter: wrap (tmpl, mapfile) by named tuple I'm going to add more options to the templatespec tuple. cmdutil.logtemplatespec() is just an alias now, but it will be changed to a factory function later.
Sat, 22 Apr 2017 18:42:03 +0900 cmdutil: factor out helper to create changeset_templater with literal template
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 18:42:03 +0900] rev 32855
cmdutil: factor out helper to create changeset_templater with literal template changeset_templater has lots of arguments, but most callers only need to specify a literal template 'tmpl'. "hg debugtemplate" has no diff option, which means 'opts' were effectively {}, so dropped opts.
Wed, 14 Jun 2017 23:56:58 -0400 test-dirstate-race: stabilize for Windows
Matt Harbison <matt_harbison@yahoo.com> [Wed, 14 Jun 2017 23:56:58 -0400] rev 32854
test-dirstate-race: stabilize for Windows Without quoting, the output after "custom merge tool" in the next test is an abort trying to open "C:UsersMattAppData..."
Sat, 06 May 2017 16:24:21 +0900 formatter: document lookuptemplate()
Yuya Nishihara <yuya@tcha.org> [Sat, 06 May 2017 16:24:21 +0900] rev 32853
formatter: document lookuptemplate()
Sat, 22 Apr 2017 15:30:27 +0900 cmdutil: rename gettemplate() to _lookuplogtemplate()
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 15:30:27 +0900] rev 32852
cmdutil: rename gettemplate() to _lookuplogtemplate() This function is only useful when processing log options.
Sat, 22 Apr 2017 15:11:53 +0900 formatter: inline gettemplater()
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 15:11:53 +0900] rev 32851
formatter: inline gettemplater() Since it's highly use-case dependent how template should be looked up, gettemplater() function isn't useful. Keeping it would introduce another bug I've made and fixed earlier in this series.
Sat, 22 Apr 2017 15:06:06 +0900 formatter: factor out function to create templater from literal or map file
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 15:06:06 +0900] rev 32850
formatter: factor out function to create templater from literal or map file (tmpl, mapfile) will be packed into a named tuple later.
Sat, 22 Apr 2017 14:53:05 +0900 graphlog: do not look up graphnodetemplate in template paths (BC)
Yuya Nishihara <yuya@tcha.org> [Sat, 22 Apr 2017 14:53:05 +0900] rev 32849
graphlog: do not look up graphnodetemplate in template paths (BC) ui.graphnodetemplate config should be a literal template as ui.logtemplate is. The use of formatter.gettemplater() is valid only for a template string given by -T/--template option.
Sat, 06 May 2017 14:48:47 +0900 formatter: open raw template file in posix semantics
Yuya Nishihara <yuya@tcha.org> [Sat, 06 May 2017 14:48:47 +0900] rev 32848
formatter: open raw template file in posix semantics This should have no effect, but seems good for code consistency.
Sat, 06 May 2017 14:47:31 +0900 formatter: open raw template file in binary mode (BC)
Yuya Nishihara <yuya@tcha.org> [Sat, 06 May 2017 14:47:31 +0900] rev 32847
formatter: open raw template file in binary mode (BC) I believe it was a mistake to open file in text mode. Now '\r' is preserved on Windows, but it should be okay to print '\r\n' as long as users live in such platform.
Sat, 06 May 2017 14:40:22 +0900 formatter: close raw template file explicitly
Yuya Nishihara <yuya@tcha.org> [Sat, 06 May 2017 14:40:22 +0900] rev 32846
formatter: close raw template file explicitly
Tue, 13 Jun 2017 17:43:33 -0400 patchbomb: make getaddrs function easier to work with
Augie Fackler <augie@google.com> [Tue, 13 Jun 2017 17:43:33 -0400] rev 32845
patchbomb: make getaddrs function easier to work with Prior to this the return value was potentially None, a string, or a list of strings. It now always returns a list of strings where each string is always only one email address
Tue, 13 Jun 2017 16:30:50 -0400 patchbomb: look for non-empty publicurl, not a non-None one
Augie Fackler <augie@google.com> [Tue, 13 Jun 2017 16:30:50 -0400] rev 32844
patchbomb: look for non-empty publicurl, not a non-None one Otherwise it's impossible to turn this feature back off, which is making writing of tests awkward.
Tue, 13 Jun 2017 16:30:11 -0400 patchbomb: make variable name for publicurl always be publicurl
Augie Fackler <augie@google.com> [Tue, 13 Jun 2017 16:30:11 -0400] rev 32843
patchbomb: make variable name for publicurl always be publicurl
Wed, 14 Jun 2017 01:43:47 -0400 bisect: simpler approach for option validation message
Brandon McCaig <bamccaig@gmail.com> [Wed, 14 Jun 2017 01:43:47 -0400] rev 32842
bisect: simpler approach for option validation message Yuya Nishihara gave this suggestion on the mailing list after the previous patch was queued, and honestly this seems much simpler and looks more efficient.
Mon, 12 Jun 2017 16:35:57 -0700 pushkey: use False/True for return values from push functions
Martin von Zweigbergk <martinvonz@google.com> [Mon, 12 Jun 2017 16:35:57 -0700] rev 32841
pushkey: use False/True for return values from push functions It was particularly unclear in phases.pushphase() whether the 0/1 returned were the 0/1 for public/draft phase or for False/True
Fri, 10 Apr 2015 00:14:16 +0900 smartset: micro optimize spanset.slice() to narrow range accordingly
Yuya Nishihara <yuya@tcha.org> [Fri, 10 Apr 2015 00:14:16 +0900] rev 32840
smartset: micro optimize spanset.slice() to narrow range accordingly -1ms isn't significant, but seems not bad. revset #0: limit(0:9999, 100, 9000) 6) 0.001145 7) 0.000214 revset #3: last(0:9999, 100) 6) 0.000197 7) 0.000171
Thu, 09 Apr 2015 23:56:06 +0900 smartset: micro optimize baseset.slice() to use slice of list
Yuya Nishihara <yuya@tcha.org> [Thu, 09 Apr 2015 23:56:06 +0900] rev 32839
smartset: micro optimize baseset.slice() to use slice of list -1ms isn't significant, but seems not bad. revset #1: limit(0::9999, 100, 9000) 5) 0.001681 6) 0.000790
Tue, 24 Mar 2015 00:14:53 +0900 smartset: extract method to slice abstractsmartset
Yuya Nishihara <yuya@tcha.org> [Tue, 24 Mar 2015 00:14:53 +0900] rev 32838
smartset: extract method to slice abstractsmartset Sub classes can provide optimized implementations.
Sun, 24 May 2015 11:07:14 +0900 smartset: extract spanset factory to make it constructed without a repo
Yuya Nishihara <yuya@tcha.org> [Sun, 24 May 2015 11:07:14 +0900] rev 32837
smartset: extract spanset factory to make it constructed without a repo This renames the spanset class to _spanset, and moves its __init__ to new spanset() function. spanset() is now a factory function. This allows us to construct a spanset without keeping a repo instance.
Sun, 11 Jun 2017 00:21:38 +0900 smartset: change repr of spanset to show revisions as half-open range
Yuya Nishihara <yuya@tcha.org> [Sun, 11 Jun 2017 00:21:38 +0900] rev 32836
smartset: change repr of spanset to show revisions as half-open range Before, an empty spanset was displayed as '<spanset+ 0:-1>', which seemed confusing.
Mon, 12 Jun 2017 15:34:31 -0700 fsmonitor: don't write out state if identity has changed (issue5581)
Siddharth Agarwal <sid0@fb.com> [Mon, 12 Jun 2017 15:34:31 -0700] rev 32835
fsmonitor: don't write out state if identity has changed (issue5581) Inspired by the dirstate fix in dc7efa2826e4, this should fix any race conditions with the fsmonitor state changing from underneath. Since we now grab the wlock for any non-invalidate writes, the only situation this appears to happen in is with a concurrent invalidation. Test that.
Mon, 12 Jun 2017 15:34:31 -0700 fsmonitor: write state with wlock held and dirstate unchanged (issue5581)
Siddharth Agarwal <sid0@fb.com> [Mon, 12 Jun 2017 15:34:31 -0700] rev 32834
fsmonitor: write state with wlock held and dirstate unchanged (issue5581) This means that the state will not be written if: (1) either the wlock can't be obtained (2) something else came along and changed the dirstate while we were in the middle of a status run.
Mon, 12 Jun 2017 13:56:50 -0700 workingctx: add a way for extensions to run code at status fixup time
Siddharth Agarwal <sid0@fb.com> [Mon, 12 Jun 2017 13:56:50 -0700] rev 32833
workingctx: add a way for extensions to run code at status fixup time Some extensions like fsmonitor need to run code after dirstate.status is called, but while the wlock is held. The extensions could grab the wlock again, but that has its own peculiar race issues. For example, fsmonitor would not like its state to be written out if the dirstate has changed underneath (see issue5581 for what can go wrong in that sort of case). To protect against these sorts of issues, allow extensions to declare that they would like to run some code to run at fixup time. fsmonitor will switch to using this in the next patch in the series.
Mon, 12 Jun 2017 13:56:43 -0700 workingctx: also pass status tuple into poststatusfixup
Siddharth Agarwal <sid0@fb.com> [Mon, 12 Jun 2017 13:56:43 -0700] rev 32832
workingctx: also pass status tuple into poststatusfixup fsmonitor is going to need this to compute its set of notable files to persist.
Mon, 12 Jun 2017 13:54:59 -0700 workingctx: factor out post-status dirstate fixup
Siddharth Agarwal <sid0@fb.com> [Mon, 12 Jun 2017 13:54:59 -0700] rev 32831
workingctx: factor out post-status dirstate fixup We want to allow extensions to be able to add code to run inside the wlock.
Tue, 13 Jun 2017 10:02:34 -0400 merge with stable
Augie Fackler <augie@google.com> [Tue, 13 Jun 2017 10:02:34 -0400] rev 32830
merge with stable
Mon, 12 Jun 2017 17:24:10 +0200 profile: properly propagate exception from the sub-context manager
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 12 Jun 2017 17:24:10 +0200] rev 32829
profile: properly propagate exception from the sub-context manager Context manager has a mechanism to control extension propagation. It is not used by profiling right now, but making the code correct will help prevent bug in the future.
Mon, 12 Jun 2017 17:25:37 +0200 profile: close 'fp' in all cases
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 12 Jun 2017 17:25:37 +0200] rev 32828
profile: close 'fp' in all cases There are no way for this to happen today, but better be safe than sorry, no one know how the code will evolve. We now make sure the file pointer is closed even is profiler is None.
Mon, 12 Jun 2017 17:21:41 +0200 profile: close 'fp' on error within '__enter__'
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 12 Jun 2017 17:21:41 +0200] rev 32827
profile: close 'fp' on error within '__enter__' Previously, error when initialying the profiler would forgot to explicitly close the file. Thank goes to Yuya Nishihara for spotting this.
Mon, 12 Jun 2017 17:20:48 +0200 profile: indent part of '__enter__'
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 12 Jun 2017 17:20:48 +0200] rev 32826
profile: indent part of '__enter__' We are about to introduce a try except. We start with adding the indent to make the next patch clearer.
Mon, 12 Jun 2017 17:15:43 +0200 profile: remove now useless indent
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 12 Jun 2017 17:15:43 +0200] rev 32825
profile: remove now useless indent We no longer rely on the value of '_output' so we can remove this conditional.
Mon, 12 Jun 2017 17:14:56 +0200 profile: use explicit logic to control file closing
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 12 Jun 2017 17:14:56 +0200] rev 32824
profile: use explicit logic to control file closing We make the decision to close 'fp' more explicit instead of relying on the implication of other variable. This makes the overall logic more robust.
Mon, 12 Jun 2017 17:13:35 +0200 profiling: move 'fp' closing logic into its own function
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 12 Jun 2017 17:13:35 +0200] rev 32823
profiling: move 'fp' closing logic into its own function We are about to make the logic more robust and reuse it in more place, we start by isolating what we have.
Tue, 13 Jun 2017 01:23:54 +0530 py3: use python3 hg in test-py3-commands.t at places where py2 hg was used
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 13 Jun 2017 01:23:54 +0530] rev 32822
py3: use python3 hg in test-py3-commands.t at places where py2 hg was used This patch fixes my mistakes where I added test in test-py3-commands.t as `hg ...` where I forgot hg here refers to Python 2 mercurial.
Mon, 12 Jun 2017 13:10:09 -0700 test-dirstate-race: back out changeset c82fa7efcbc8
Siddharth Agarwal <sid0@fb.com> [Mon, 12 Jun 2017 13:10:09 -0700] rev 32821
test-dirstate-race: back out changeset c82fa7efcbc8 This is non-deterministic. In any case, I switched to using debugrebuilddirstate in my WIP patches, which makes this moot.
Sat, 10 Jun 2017 19:48:48 +0900 revset: fix order of first/last members in compound expression (BC)
Yuya Nishihara <yuya@tcha.org> [Sat, 10 Jun 2017 19:48:48 +0900] rev 32820
revset: fix order of first/last members in compound expression (BC) Suppose len(subset) >> len(ls) in common cases, 'subset & ls' should be avoided whenever possible.
Sat, 10 Jun 2017 19:41:42 +0900 revset: filter first/last members by __and__ operation
Yuya Nishihara <yuya@tcha.org> [Sat, 10 Jun 2017 19:41:42 +0900] rev 32819
revset: filter first/last members by __and__ operation This replaces 'if y in subset' with '& subset'. first(null) and last(wdir()) are fixed thanks to fullreposet.__and__. This also revealed that first() and last() don't follow the order of the input set. 'ls & subset' is valid only if the ordering requirement is 'define' or 'any'. No performance regression observed: revset #0: limit(0:9999, 100, 9000) 0) 0.001164 1) 0.001135 revset #2: 9000 & limit(0:9999, 100, 9000) 0) 0.001224 1) 0.001181 revset #3: last(0:9999, 100) 0) 0.000237 1) 0.000199
Sat, 10 Jun 2017 18:35:11 +0900 revset: reject negative number to select first/last n members
Yuya Nishihara <yuya@tcha.org> [Sat, 10 Jun 2017 18:35:11 +0900] rev 32818
revset: reject negative number to select first/last n members Negative 'lim' doesn't make sense here, and it makes things complicated when using list[:lim].
(0) -30000 -10000 -3000 -1000 -192 +192 +1000 +3000 +10000 tip