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 32966
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 32965
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 32964
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 32963
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 32962
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 32961
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 32960
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 32959
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 32958
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 32957
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 32956
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 32955
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 32954
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 32953
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 32952
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 32951
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 32950
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 32949
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 32948
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 32947
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 32946
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 32945
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 32944
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 32943
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 32942
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 32941
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 32940
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 32939
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 32938
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 32937
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 32936
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 32935
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 32934
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 32933
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 32932
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 32931
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 32930
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 32929
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 32928
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 32927
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 32926
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 32925
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 32924
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 32923
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 32922
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 32921
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 32920
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 32919
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 32918
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 32917
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 32916
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 32915
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 32914
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 32913
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 32912
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 32911
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 32910
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 32909
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 32908
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 32907
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 32906
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 32905
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 32904
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 32903
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 32902
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 32901
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 32900
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 32899
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 32898
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 32897
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 32896
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 32895
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 32894
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 32893
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 32892
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 32891
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 32890
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 32889
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 32888
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 32887
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 32886
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 32885
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 32884
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 32883
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 32882
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 32881
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 32880
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 32879
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 32878
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 32877
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 32876
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 32875
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 32874
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 32873
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 32872
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 32871
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 32870
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 32869
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 32868
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 32867
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 32866
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 32865
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 32864
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 32863
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 32862
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 32861
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 32860
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 32859
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 32858
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 32857
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 32856
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 32855
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 32854
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 32853
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 32852
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 32851
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 32850
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 32849
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 32848
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 32847
check-config: use compiled regexp And split the regexp across multiple lines to make it easier to read.
(0) -30000 -10000 -3000 -1000 -120 +120 +1000 +3000 +10000 tip