Sun, 14 Feb 2016 13:09:17 +0900 templater: fix shortest() to evaluate int argument and handle error
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Feb 2016 13:09:17 +0900] rev 28346
templater: fix shortest() to evaluate int argument and handle error
Sun, 14 Feb 2016 13:05:09 +0900 templater: fix pad() to evaluate int argument and handle error
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Feb 2016 13:05:09 +0900] rev 28345
templater: fix pad() to evaluate int argument and handle error
Sun, 14 Feb 2016 12:48:14 +0900 templater: drop redundant type conversion when evaluating integer argument
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Feb 2016 12:48:14 +0900] rev 28344
templater: drop redundant type conversion when evaluating integer argument A function argument may be an integer. In this case, it isn't necessary to convert a value to string and back to integer. Because an argument may be an arbitrary object (e.g. date tuple), TypeError should be caught as well.
Sun, 14 Feb 2016 12:42:25 +0900 templater: factor out function that evaluates argument as integer
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Feb 2016 12:42:25 +0900] rev 28343
templater: factor out function that evaluates argument as integer We have more bare int()s that may raise ValueError or TypeError. This function will be used to fix them.
Fri, 04 Mar 2016 13:18:02 +0000 chgserver: use basename for socket symlink
Jun Wu <quark@fb.com> [Fri, 04 Mar 2016 13:18:02 +0000] rev 28342
chgserver: use basename for socket symlink Previously we use full path and the symlink may point to outside (unsafe) world if the directory is moved. This patch fixes it by only linking to basename of the target. Therefore the symbolic link and socket files will always stay in the same directory.
Thu, 03 Mar 2016 18:34:19 +0100 patch: when importing from email, RFC2047-decode From/Subject headers
Julien Cristau <julien.cristau@logilab.fr> [Thu, 03 Mar 2016 18:34:19 +0100] rev 28341
patch: when importing from email, RFC2047-decode From/Subject headers Reported at https://bugs.debian.org/737498
Wed, 02 Mar 2016 22:39:03 +0000 histedit: reword message when a changeset produces no changes
timeless <timeless@mozdev.org> [Wed, 02 Mar 2016 22:39:03 +0000] rev 28340
histedit: reword message when a changeset produces no changes There are various ways to use histedit such that an item in the list of things to perform will not result in a change relative to the previous repository state. When that happens, histedit does not keep the commit/message. This changes the note to try to explain to the user that it will not be present in their history.
Wed, 02 Mar 2016 22:09:18 +0000 tests: replace cat.py with cat in test-histedit-fold-non-commute.t
timeless <timeless@mozdev.org> [Wed, 02 Mar 2016 22:09:18 +0000] rev 28339
tests: replace cat.py with cat in test-histedit-fold-non-commute.t
Wed, 02 Mar 2016 15:01:41 -0800 tests: Solaris grep doesn't add a trailing newline when it's missing
Danek Duvall <danek.duvall@oracle.com> [Wed, 02 Mar 2016 15:01:41 -0800] rev 28338
tests: Solaris grep doesn't add a trailing newline when it's missing The bad-extension tests emits a list of not-loaded extensions, and pipes that output through grep. On Solaris, the test-output gets "(no-eol)" appended because although the message has no trailing newline, GNU grep adds it. If we simply add the newline to the message, the problem goes away for both versions of grep.
Wed, 02 Mar 2016 14:58:29 -0800 tests: Solaris cmp complains about empty files, even with -s
Danek Duvall <danek.duvall@oracle.com> [Wed, 02 Mar 2016 14:58:29 -0800] rev 28337
tests: Solaris cmp complains about empty files, even with -s When you compare an empty file, such as /dev/null, with a non-empty file, Solaris cmp complains on stderr with "cmp: EOF on /dev/null", even if the -s argument is present. GNU cmp makes the complaint, but silences it with -s. We can change the pdiff utility to simply redirect stderr to /dev/null so that we don't have to worry about this difference in the test files.
Wed, 02 Mar 2016 14:55:13 -0800 tests: Solaris sed does not support "\n" meaning newline in the RHS of s///
Danek Duvall <danek.duvall@oracle.com> [Wed, 02 Mar 2016 14:55:13 -0800] rev 28336
tests: Solaris sed does not support "\n" meaning newline in the RHS of s/// The blackbox test rewrites a copy of test-dispatch.py on the fly, and adds a couple of lines with the s/// command. GNU sed supports the use of the \n escape to represent a newline, but not Solaris sed. Using a literal newline, prefixed by a backslash, works with both versions of the utility.
Wed, 02 Mar 2016 14:50:37 -0800 tests: Solaris cp doesn't support the -T option
Danek Duvall <danek.duvall@oracle.com> [Wed, 02 Mar 2016 14:50:37 -0800] rev 28335
tests: Solaris cp doesn't support the -T option The treemanifest tests use the -T option to cp in order to ensure that the two directories named on the commandline are treated as peers, rather than the usual behavior when the final argument is a directory. GNU cp has this option, but other implementations may not. Thankfully, there's no pressing reason to use it. We can simply copy the contents of the first directory into the target directory, since we know that the target directory already exists.
Sun, 14 Feb 2016 13:36:50 +0900 templater: make date() use helper function to evaluate argument
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Feb 2016 13:36:50 +0900] rev 28334
templater: make date() use helper function to evaluate argument A date argument should never be a generator, but using evalfuncarg() should be good for consistency.
Sun, 14 Feb 2016 00:27:09 +0900 templater: fix revset() to evaluate format arguments eagerly
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Feb 2016 00:27:09 +0900] rev 28333
templater: fix revset() to evaluate format arguments eagerly See the previous patch for why. This patch also removes redundant list() construction from a list.
Sun, 14 Feb 2016 00:18:12 +0900 templater: fix ifcontains() to evaluate items argument eagerly
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Feb 2016 00:18:12 +0900] rev 28332
templater: fix ifcontains() to evaluate items argument eagerly See the previous patch for why. An "items" argument may be a string, a generator, or an arbitrary container object.
Sun, 14 Feb 2016 00:05:58 +0900 templater: fix get() to evaluate arguments eagerly
Yuya Nishihara <yuya@tcha.org> [Sun, 14 Feb 2016 00:05:58 +0900] rev 28331
templater: fix get() to evaluate arguments eagerly If a key is constructed from a template expression, it may be a generator. In that case, a key have to be stringified. A dictarg should never be a generator, but this patch also changes it to call evalfuncarg() for consistency.
Wed, 02 Mar 2016 15:38:54 +0000 import-checker: report local with stdlib late warning
timeless <timeless@mozdev.org> [Wed, 02 Mar 2016 15:38:54 +0000] rev 28330
import-checker: report local with stdlib late warning Without this, developers have to figure it out on their own
Thu, 03 Mar 2016 23:11:33 -0800 tests: update test output for test written on stable branch (issue5104)
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 03 Mar 2016 23:11:33 -0800] rev 28329
tests: update test output for test written on stable branch (issue5104) The changed test lines were added in d493d64757eb, which landed on stable. When this changeset merged to the default branch, the test failed because a4692267bc2d (on default but not stable) changed the order of working directory update when performing a share-based clone from pooled storage. The changes in this patch are similar to test changes in a4692267bc2d.
Mon, 29 Feb 2016 13:46:54 +0000 chgserver: pass hashstate and base server address to chgcmdserver
Jun Wu <quark@fb.com> [Mon, 29 Feb 2016 13:46:54 +0000] rev 28328
chgserver: pass hashstate and base server address to chgcmdserver In order to detect a hash change from a request handler, chg must know the original hashstate. It also needs the base server address to figure out redirect addresses.
Mon, 29 Feb 2016 11:43:25 +0000 chg: drop progress.assume-tty config
Jun Wu <quark@fb.com> [Mon, 29 Feb 2016 11:43:25 +0000] rev 28327
chg: drop progress.assume-tty config It was necessary to go through progress.uisetup() to set up the progressui wrapper. Since the progress extension has got into the core, progress.assume-tty is no longer necessary.
Wed, 02 Mar 2016 10:10:06 +0000 chgserver: mangle server address to include confighash
Jun Wu <quark@fb.com> [Wed, 02 Mar 2016 10:10:06 +0000] rev 28326
chgserver: mangle server address to include confighash Before this patch, chgserver will use the address provided by the client. The new design is one server per confighash. This patch appends "-$confighash" to the address the client provides. To maintain the compatibility and make sure the client can connect to the server, a symbolic link is created at the original address pointing to the new address. The address is intentionally mangled at the server, instead of being pre- calculated by some other process (eg. a previous server). In this way, we can avoid file system race conditions.
Mon, 29 Feb 2016 14:05:45 +0000 chgserver: update docs
Jun Wu <quark@fb.com> [Mon, 29 Feb 2016 14:05:45 +0000] rev 28325
chgserver: update docs Update the docstring to reflect the latest changes
Wed, 02 Mar 2016 16:44:56 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 02 Mar 2016 16:44:56 -0600] rev 28324
merge with stable
Mon, 21 Dec 2015 22:26:31 -0800 commands: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Dec 2015 22:26:31 -0800] rev 28323
commands: use absolute_import All mercurial.* modules are now using absolute_import \o/
Sat, 27 Feb 2016 23:57:07 -0800 cmdutil: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 27 Feb 2016 23:57:07 -0800] rev 28322
cmdutil: use absolute_import Now that @command doesn't write back into commands when it is being executed during the loading of commands.py itself, we are unblocked from converting cmdutil to absolute_import.
Tue, 01 Mar 2016 10:33:06 +0000 keyword: use absolute_import
Christian Ebert <blacktrash@gmx.net> [Tue, 01 Mar 2016 10:33:06 +0000] rev 28321
keyword: use absolute_import
Sun, 28 Feb 2016 22:15:00 -0500 pager: use absolute_import
Augie Fackler <augie@google.com> [Sun, 28 Feb 2016 22:15:00 -0500] rev 28320
pager: use absolute_import
Sun, 28 Feb 2016 22:13:47 -0500 pager: add tests
Augie Fackler <augie@google.com> [Sun, 28 Feb 2016 22:13:47 -0500] rev 28319
pager: add tests We've never had tests for pager, and I want to start experimenting with ways to clean up the implementation and make it a bit more graceful.
Mon, 29 Feb 2016 01:01:20 -0500 tests: flag Windows specific lines about background closing as optional
Matt Harbison <matt_harbison@yahoo.com> [Mon, 29 Feb 2016 01:01:20 -0500] rev 28318
tests: flag Windows specific lines about background closing as optional
Sun, 28 Feb 2016 23:21:28 -0500 run-tests: defer leftover (?) cleanup until after all output is exhausted
Matt Harbison <matt_harbison@yahoo.com> [Sun, 28 Feb 2016 23:21:28 -0500] rev 28317
run-tests: defer leftover (?) cleanup until after all output is exhausted Previously, after matching a single line, any contiguous subsequent lines ending with (?) would be added to the output and removed from the expected output. This is a problem if the subsequent test output would have matched the consumed (?) line, because it kept the optional line and then added a duplicate without the (?) [1]. Instead, wait until there is nothing more to match before handling the leftovers. [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2016-February/080197.html
Sun, 28 Feb 2016 23:16:30 -0500 test-run-tests: pad the failure test to preserve the run order
Matt Harbison <matt_harbison@yahoo.com> [Sun, 28 Feb 2016 23:16:30 -0500] rev 28316
test-run-tests: pad the failure test to preserve the run order Test size seems to dictate the order in which the tests are run, and the next patch will add to test-success.t.
Wed, 02 Mar 2016 16:05:30 -0600 changelog: backed out changeset 86de91c56355
Matt Mackall <mpm@selenic.com> [Wed, 02 Mar 2016 16:05:30 -0600] rev 28315
changelog: backed out changeset 86de91c56355
Wed, 02 Mar 2016 12:46:54 -0600 changelog: backed out changeset 1778770e1982
Matt Mackall <mpm@selenic.com> [Wed, 02 Mar 2016 12:46:54 -0600] rev 28314
changelog: backed out changeset 1778770e1982 We want to avoid leaking UTF-8 to main body of code wherever possible.
Fri, 01 Jan 2016 22:16:25 +0900 dispatch: store norepo/optionalrepo/inferrepo attributes in function (API)
Yuya Nishihara <yuya@tcha.org> [Fri, 01 Jan 2016 22:16:25 +0900] rev 28313
dispatch: store norepo/optionalrepo/inferrepo attributes in function (API) This can eliminate import cycles and ugly push/pop of global variables at _checkshellalias(). Attributes of aliascmd are directly accessible. Because norepo/optionalrepo/inferrepo lists aren't populated, extensions examining them no longer work. That's why this patch removes these lists to signal the API incompatibility. This breaks 3rd-party extensions that are yet to be ported to @command decorator.
Sat, 09 Jan 2016 20:04:03 +0900 extensions: copy extra __dict__ of original function
Yuya Nishihara <yuya@tcha.org> [Sat, 09 Jan 2016 20:04:03 +0900] rev 28312
extensions: copy extra __dict__ of original function Future patches will make @command decorator set properties such as "norepo" to a function object. This patch makes sure these properties never be lost by wrapcommand() or wrapfunction(). This change won't be crazy as the standard functools.wraps() copies __dict__.
Sat, 09 Jan 2016 19:52:55 +0900 extensions: copy attributes to wrapper by wrapfunction()
Yuya Nishihara <yuya@tcha.org> [Sat, 09 Jan 2016 19:52:55 +0900] rev 28311
extensions: copy attributes to wrapper by wrapfunction() Before this patch, new partial function "wrap" had no useful docstring. It makes sense to copy __doc__ and __module__ as we do for wrapcommand().
Sat, 09 Jan 2016 19:45:10 +0900 extensions: extract function that copies function attributes to wrapper
Yuya Nishihara <yuya@tcha.org> [Sat, 09 Jan 2016 19:45:10 +0900] rev 28310
extensions: extract function that copies function attributes to wrapper wrapfunction() will be changed to copy these attributes. See the next patch for details.
Mon, 29 Feb 2016 23:28:32 +0000 tests: fix section description
timeless <timeless@mozdev.org> [Mon, 29 Feb 2016 23:28:32 +0000] rev 28309
tests: fix section description Copy and paste error
Tue, 01 Mar 2016 13:48:25 -0500 zeroconf: import ui as uimod per test-check-module-imports
Augie Fackler <augie@google.com> [Tue, 01 Mar 2016 13:48:25 -0500] rev 28308
zeroconf: import ui as uimod per test-check-module-imports
Sat, 27 Feb 2016 22:34:18 -0800 changelog: lazy decode user (API)
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 27 Feb 2016 22:34:18 -0800] rev 28307
changelog: lazy decode user (API) This appears to show a similar speedup as the previous patch.
Sat, 27 Feb 2016 22:25:14 -0800 changelog: lazy decode description (API)
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 27 Feb 2016 22:25:14 -0800] rev 28306
changelog: lazy decode description (API) Currently, changelog reading decodes read values. This is wasteful because a lot of times consumers aren't interested in some of these values. This patch changes description decoding to occur in changectx as needed. revsets reading changelog entries appear to speed up slightly: revset #7: author(lmoscovicz) plain 0) 0.906329 1) 0.872653 revset #8: author(mpm) plain 0) 0.903478 1) 0.878037 revset #9: author(lmoscovicz) or author(mpm) plain 0) 1.817855 1) 1.778680 revset #10: author(mpm) or author(lmoscovicz) plain 0) 1.837052 1) 1.764568
Thu, 11 Feb 2016 19:38:26 +0000 blackbox: optionally log event source
timeless <timeless@mozdev.org> [Thu, 11 Feb 2016 19:38:26 +0000] rev 28305
blackbox: optionally log event source
Tue, 01 Mar 2016 10:45:47 +0000 blackbox: remove hexfn
timeless <timeless@mozdev.org> [Tue, 01 Mar 2016 10:45:47 +0000] rev 28304
blackbox: remove hexfn It was introduced as copy+paste code, but was never necessary.
Tue, 01 Mar 2016 10:43:52 +0000 blackbox: rewrite dirty documentation noting it is expensive
timeless <timeless@mozdev.org> [Tue, 01 Mar 2016 10:43:52 +0000] rev 28303
blackbox: rewrite dirty documentation noting it is expensive
Tue, 01 Mar 2016 09:49:38 +0000 zeroconf: remove whitespace around = for named parameters
timeless <timeless@mozdev.org> [Tue, 01 Mar 2016 09:49:38 +0000] rev 28302
zeroconf: remove whitespace around = for named parameters
Tue, 01 Mar 2016 09:44:32 +0000 zeroconf: del is not a function
timeless <timeless@mozdev.org> [Tue, 01 Mar 2016 09:44:32 +0000] rev 28301
zeroconf: del is not a function
Tue, 01 Mar 2016 09:48:11 +0000 zeroconf: add whitespace around operator
timeless <timeless@mozdev.org> [Tue, 01 Mar 2016 09:48:11 +0000] rev 28300
zeroconf: add whitespace around operator
Tue, 01 Mar 2016 09:33:39 +0000 zeroconf: wrap long lines
timeless <timeless@mozdev.org> [Tue, 01 Mar 2016 09:33:39 +0000] rev 28299
zeroconf: wrap long lines
Tue, 01 Mar 2016 08:53:40 +0000 zeroconf: drop tabs
timeless <timeless@mozdev.org> [Tue, 01 Mar 2016 08:53:40 +0000] rev 28298
zeroconf: drop tabs
Tue, 01 Mar 2016 08:48:10 +0000 zeroconf: omit semicolons
timeless <timeless@mozdev.org> [Tue, 01 Mar 2016 08:48:10 +0000] rev 28297
zeroconf: omit semicolons
Tue, 01 Mar 2016 08:42:46 +0000 zeroconf: use absolute_import
timeless <timeless@mozdev.org> [Tue, 01 Mar 2016 08:42:46 +0000] rev 28296
zeroconf: use absolute_import
Tue, 01 Mar 2016 07:17:32 +0000 zeroconf: use print function
timeless <timeless@mozdev.org> [Tue, 01 Mar 2016 07:17:32 +0000] rev 28295
zeroconf: use print function
Mon, 29 Feb 2016 15:12:26 +0100 histedit: improve error when run on nodes with children (issue5056)
liscju <piotr.listkiewicz@gmail.com> [Mon, 29 Feb 2016 15:12:26 +0100] rev 28294
histedit: improve error when run on nodes with children (issue5056)
Tue, 01 Mar 2016 11:51:46 +0000 tests: minor grammar change for check-commit
timeless <timeless@mozdev.org> [Tue, 01 Mar 2016 11:51:46 +0000] rev 28293
tests: minor grammar change for check-commit
Sat, 27 Feb 2016 21:43:17 -0800 worker: document poor partitioning scheme impact
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 27 Feb 2016 21:43:17 -0800] rev 28292
worker: document poor partitioning scheme impact mpm isn't a fan of the existing or previous partitioning scheme. He provided a fantastic justification for why on the mailing list. This patch adds his words to the code so they aren't forgotten.
Tue, 01 Mar 2016 18:03:49 -0600 Added signature for changeset d493d64757eb stable
Matt Mackall <mpm@selenic.com> [Tue, 01 Mar 2016 18:03:49 -0600] rev 28291
Added signature for changeset d493d64757eb
Tue, 01 Mar 2016 18:03:44 -0600 Added tag 3.7.2 for changeset d493d64757eb stable
Matt Mackall <mpm@selenic.com> [Tue, 01 Mar 2016 18:03:44 -0600] rev 28290
Added tag 3.7.2 for changeset d493d64757eb
Sat, 27 Feb 2016 18:22:49 -0800 hg: obtain lock when creating share from pooled repo (issue5104) stable 3.7.2
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 27 Feb 2016 18:22:49 -0800] rev 28289
hg: obtain lock when creating share from pooled repo (issue5104) There are race conditions between clients performing a shared clone to pooled storage: 1) Clients race to create the new shared repo in the pool directory 2) 1 client is seeding the repo in the pool directory and another goes to share it before it is fully cloned We prevent these race conditions by obtaining a lock in the pool directory that is derived from the name of the repo we will be accessing. To test this, a simple generic "lockdelay" extension has been added. The extension inserts an optional, configurable delay before or after lock acquisition. In the test, we delay 2 seconds after lock acquisition in the first process and 1 second before lock acquisition in the 2nd process. This means the first process has 1s to obtain the lock. There is a race condition here. If we encounter it in the wild, we could change the dummy extension to wait on the lock file to appear instead of relying on timing. But that's more complicated. Let's see what happens first.
Tue, 01 Mar 2016 03:28:46 +0900 doc: remove deprecated option from synopsis of command help stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 01 Mar 2016 03:28:46 +0900] rev 28288
doc: remove deprecated option from synopsis of command help Before this patch, deprecated options below are used in synopsis of command help, even though they aren't listed up as available options by default. These might confuse readers. - -n (no-op, now) of strip - -a/--active of branches - -f/--force of merge
Mon, 29 Feb 2016 22:20:53 -0300 i18n-pt_BR: synchronized with 535f2900d078 stable
Wagner Bruna <wbruna@yahoo.com> [Mon, 29 Feb 2016 22:20:53 -0300] rev 28287
i18n-pt_BR: synchronized with 535f2900d078
Mon, 29 Feb 2016 17:52:17 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 29 Feb 2016 17:52:17 -0600] rev 28286
merge with stable
Mon, 29 Feb 2016 17:44:00 -0600 merge with i18n stable
Matt Mackall <mpm@selenic.com> [Mon, 29 Feb 2016 17:44:00 -0600] rev 28285
merge with i18n
Sat, 27 Feb 2016 21:29:42 -0800 run-tests: fix Python 3 incompatibilities
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 27 Feb 2016 21:29:42 -0800] rev 28284
run-tests: fix Python 3 incompatibilities At one point run-tests.py and test-run-tests.t worked and passed under Python 3.5. Various changes to run-tests.py over the past several months appear to have broken Python 3.5 compatibility. This patch implements various fixes (all related to str/bytes type coercion) to make run-tests.py and test-run-tests.t mostly work again. There are still a few failures in test-run-tests.t due to issues importing mercurial.* modules. But at least run-tests.py seems to work under 3.5 again.
Sat, 27 Feb 2016 21:19:53 -0800 hghave: use print function
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 27 Feb 2016 21:19:53 -0800] rev 28283
hghave: use print function For Python 3 compatibility.
Sat, 27 Feb 2016 22:25:47 -0800 changelog: remove redundant parentheses
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 27 Feb 2016 22:25:47 -0800] rev 28282
changelog: remove redundant parentheses You don't need to surround returned tuples with parens.
Sat, 27 Feb 2016 23:06:05 -0800 changegroup: use changelog.readfiles
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 27 Feb 2016 23:06:05 -0800] rev 28281
changegroup: use changelog.readfiles We have a dedicated function to get just the list of files in a changelog entry. Use it. This will presumably speed up changegroup application since we're no longer decoding the entire changelog entry. But I didn't measure the impact.
Sat, 27 Feb 2016 18:02:12 +0100 rebase: remove experimental option from 'rebase' config section
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 27 Feb 2016 18:02:12 +0100] rev 28280
rebase: remove experimental option from 'rebase' config section Changeset f0e9f38d250f introduced a guard against case where obsolete changesets are included in the rebase in a way this will result in divergence (because rebase create new successors for changeset which already have successors). In the same go a 'rebase.allowdivergence' option was introduced to control that behavior. We rename this config option to 'experimental.allowdivergence' for multiple reasons: * First this behavior is attached to changeset evolution, a feature still experimental. * Second, there was no 'rebase' section in config before we introduced this option. I would like to avoid proliferation of micro config section and therefore would like to avoid the creation of this new section just for an experimental feature. * Third, this guard (warning the user about a history rewriting operation that will create divergence) will very likely be generalised to all history rewriting operations, making this not rebase specific. * Finally, because this will likely be a general guard present a bit everywhere in the UI we'll likely end up with something better than a config option to control this behavior, so having the current config option living in experimental will allow us make it disappear in the future. So we banish this config option back to the experimental section where it belongs, killing the newly born 'rebase' config section in the process.
Fri, 26 Feb 2016 17:15:49 +0000 testing: allow Hypothesis tests to disable extensions
David R. MacIver <david@drmaciver.com> [Fri, 26 Feb 2016 17:15:49 +0000] rev 28279
testing: allow Hypothesis tests to disable extensions Doing this required the introduction of a mechanism for keeping track of more general config in the test. At present this is only used for extensions but it could be used more widely (e.g. to control specific extension behaviour) This greatly simplifies the extension management logic by introducing a general notion of config, which we maintain ourselves and pass to HG on every invocation. This results in significantly less error prone test generation, and also allows us to turn extensions off as well as on. The logic that used an environment variable to rerun the tests with an extension disabled now just edits the test file (in a fresh copy) to remove these --config command line flags.
Sun, 28 Feb 2016 00:00:13 -0800 keepalive: remove useless parentheses around exception type
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 28 Feb 2016 00:00:13 -0800] rev 28278
keepalive: remove useless parentheses around exception type
Wed, 24 Feb 2016 20:45:47 +0000 chgserver: add a structure for confighash and mtimehash
Jun Wu <quark@fb.com> [Wed, 24 Feb 2016 20:45:47 +0000] rev 28277
chgserver: add a structure for confighash and mtimehash confighash and mtimehash are often used together. This patch adds a simple structure called hashstate to store them. hashstate also has a handly method called fromui to calculate the hashes from a ui object.
Fri, 26 Feb 2016 14:59:39 +0000 chgserver: add utilities to calculate mtimehash
Jun Wu <quark@fb.com> [Fri, 26 Feb 2016 14:59:39 +0000] rev 28276
chgserver: add utilities to calculate mtimehash mtimehash is designed to detect file changes. These files include: - single file extensions (__init__.py for complex extensions) - mercurial/__version__.py - python (sys.executable) mtimehash only uses stat to check files so it's fast but not 100% accurate. However it should be good enough for our use case. For chgserver, once mtimehash changes, the server is considered outdated immediately and should no longer provide service.
Sat, 27 Feb 2016 17:31:23 +0100 tests: rename 'test-module-import.t' into 'test-check-module-import.t'
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 27 Feb 2016 17:31:23 +0100] rev 28275
tests: rename 'test-module-import.t' into 'test-check-module-import.t' This test is checking our source code to ensure style and correct behavior (eg: no cycle). Current convention is that such tests starts with 'test-check-' so we flock this on back with the others.
Fri, 26 Feb 2016 20:22:05 +0900 pull: deactivate a bookmark not matching with the destination of the update
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 26 Feb 2016 20:22:05 +0900] rev 28274
pull: deactivate a bookmark not matching with the destination of the update Before this patch, "hg pull -u" with a target doesn't deactivate a current active bookmark, which doesn't match with the explicit destination of the update, even though bare "hg update" does so. A "target" can be provided through: - option --rev ANOTHER - option --branch ANOTHER - source URL#ANOTHER
Fri, 26 Feb 2016 20:22:05 +0900 pull: activate a bookmark matching with the destination of the update (BC)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 26 Feb 2016 20:22:05 +0900] rev 28273
pull: activate a bookmark matching with the destination of the update (BC) Before this patch, "hg pull -u" with a target doesn't activate a bookmark, which matches with the explicit destination of the update, even though bare "hg update" does so. A "target" can be provided through: - option --rev BOOKMARK - source URL#BOOKMARK
Sat, 13 Feb 2016 20:13:45 +0900 revset: define "pat" variable unconditionally in subrepo()
Yuya Nishihara <yuya@tcha.org> [Sat, 13 Feb 2016 20:13:45 +0900] rev 28272
revset: define "pat" variable unconditionally in subrepo() It's a source of UnboundLocalError to define and use local variables conditionally. As getstring() always returns a str, "pat" can be initialized to None.
Tue, 05 May 2015 10:47:35 +0900 revset: drop translation markers from error messages of internal _matchfiles
Yuya Nishihara <yuya@tcha.org> [Tue, 05 May 2015 10:47:35 +0900] rev 28271
revset: drop translation markers from error messages of internal _matchfiles They are a sort of debug messages, which should never be visible to end users.
Fri, 12 Feb 2016 19:16:09 +0900 templatekw: switch ctx of list expression to rev of {parents} (BC)
Yuya Nishihara <yuya@tcha.org> [Fri, 12 Feb 2016 19:16:09 +0900] rev 28270
templatekw: switch ctx of list expression to rev of {parents} (BC) This is the same semantics as revset() introduced at e4609ec959f8. Before this patch, {parents} provided nothing useful in new-style template. For example, '{parents % "{parent}"}' generated cryptic string like "rev12345node0123abcdef...". This patch drops {parent} variable since it was useless. We can get a revision number by '{parents % "{rev}"}'.
Fri, 26 Feb 2016 20:22:05 +0900 commands: add postincoming explicit brev argument (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 26 Feb 2016 20:22:05 +0900] rev 28269
commands: add postincoming explicit brev argument (API) Before this patch, postincoming() initializes 'brev' with 'checkout', but this isn't useful to activate/deactivate bookmark after updating, because 'checkout' is not a string actually specified at command line, but an already node-nized byte sequence. This patch adds postincoming() explicit 'brev' argument, and makes 'pull()' pass appropriate value. This patch adds 'brev' argument instead of 'brev=None', because 'brev=None' isn't reasonable value if checkout is not None.
Sat, 27 Feb 2016 19:53:18 +0800 hgweb: add index template to json/map
Anton Shestakov <av6@dwimlabs.net> [Sat, 27 Feb 2016 19:53:18 +0800] rev 28268
hgweb: add index template to json/map This template allows showing the list of all repos in an hgweb instance (in hgwebdir mode) as json. The test has "lastchange" globbed because hgweb uses here file modification time and not the last commit time.
Fri, 26 Feb 2016 19:13:10 +0000 merge: fix error message
Simon Farnsworth <simonfar@fb.com> [Fri, 26 Feb 2016 19:13:10 +0000] rev 28267
merge: fix error message Obvious copy-and-paste error
Wed, 24 Feb 2016 23:00:33 +0900 destutil: show message about other branch heads, even if on a closed head
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 24 Feb 2016 23:00:33 +0900] rev 28266
destutil: show message about other branch heads, even if on a closed head Before this patch, bare "hg update" displays message below, if there is at least one non-closed branch head other than current parent: 1. 'XX other heads for branch "BRANCH"' message, if current parent is on a non-closed branch head This suggests user to invoke "hg heads" or so for merging them. 2. no message, if current parent is on a closed branch head At this patch, bare "hg update" might choose closed branch head as update destination, and it causes this situation easily. 3. no message, otherwise (= current parent isn't on any branch head) 'XX other heads for branch "BRANCH"' should be displayed also in #2 case above, because user might overlook other non-closed branch heads. This patch gets a list of all branch heads regardless of closed-ness of it, and uses it (= 'allheads') to distinguish #1/#2 from #3 above.
Wed, 24 Feb 2016 06:10:46 +0900 repoview: discard filtered changelog if index isn't shared with unfiltered
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 24 Feb 2016 06:10:46 +0900] rev 28265
repoview: discard filtered changelog if index isn't shared with unfiltered Before this patch, revisions rollbacked at failure of previous transaction might be visible at subsequent operations unintentionally, if repoview object is reused even after failure of transaction: e.g. command server and HTTP server are typical cases. 'repoview' uses the tuple of values below of unfiltered changelog as "the key" to examine validity of filtered changelog cache. - length - tip node - filtered revisions (as hashed value) - '_delayed' field 'repoview' compares between "the key" of unfiltered changelog at previous caching and now, and reuses filtered changelog cache if no change is detected. But this comparison indicates only that there is no change between unfiltered 'repo.changelog' at last caching and now, but not that filtered changelog cache is valid for current unfiltered one. 'repoview' uses "shallow copy" of unfiltered changelog to create filtered changelog cache. In this case, 'index' buffer of unfiltered changelog is also referred by filtered changelog. At failure of transaction, unfiltered changelog itself is invalidated (= un-referred) on the 'repo' side (see 0a7610758c42 also). But 'index' of it still contains revisions to be rollbacked at this failure, and is referred by filtered changelog. Therefore, even if there is no change between unfiltered 'repo.changelog' at last caching and now, steps below makes rollbacked revisions visible via filtered changelog unintentionally. 1. instantiate unfiltered changelog as 'repo.changelog' (call it CL1) 2. make filtered (= shallow copy of) CL1 (call it FCL1) 3. cache FCL1 with "the key" of CL1 4. revisions are appended to 'index', which is shared by CL1 and FCL1 5. invalidate 'repo.changelog' (= CL1) at failure of transaction 6. instantiate 'repo.changelog' again at next operation (call it CL2) CL2 doesn't have revisions added at (4), because it is instantiated from '00changelog.i', which isn't changed while failed transaction. 7. compare between "the key" of CL1 and CL2 8. FCL1 cached at (3) is reused, because comparison at (7) doesn't detect change between CL1 at (1) and CL2 9. revisions rollbacked at (5) are visible via FCL1 unintentionally, because FCL1 still refers 'index' changed at (4) The root cause of this issue is that there is no examination about validity of filtered changelog cache against current unfiltered one. This patch discards filtered changelog cache, if its 'index' object isn't shared with unfiltered one. BTW, at the time of this patch, redundant truncation of '00changelog.i' at failure of transaction (see 0a7610758c42 for detail) often prevents "hg serve" from making already rollbacked revisions visible, because updating timestamps of '00changelog.i' by truncation makes "hg serve" discard old repoview object with invalid filtered changelog cache. This is reason why this issue is overlooked before this patch, even though test-bundle2-exchange.t has tests in similar situation: failure of "hg push" via HTTP by pretxnclose hook on server side doesn't prevent subsequent commands from looking up outgoing revisions correctly. But timestamp on the filesystem doesn't have enough resolution for recent computation power, and it can't be assumed that this avoidance always works as expected. Therefore, without this patch, this issue might appear occasionally.
Fri, 26 Feb 2016 15:22:46 +0000 chgserver: make _renewui load repo and command line configs
Jun Wu <quark@fb.com> [Fri, 26 Feb 2016 15:22:46 +0000] rev 28264
chgserver: make _renewui load repo and command line configs Before this patch, there is no way to load repo config in chgserver. This patch revised _renewui to let it load repo config and take command line flags passed into consideration. The _renewui logic is not ideal at present because it's very tricky to know what should copy and what should not from the old ui object to the new one. This is partially because the current ui and config object design is not ideal. In the future, we may want to avoid all ui or config copies.
Fri, 26 Feb 2016 15:07:58 +0000 dispatch: add wd parameter to _getlocal
Jun Wu <quark@fb.com> [Fri, 26 Feb 2016 15:07:58 +0000] rev 28263
dispatch: add wd parameter to _getlocal Before this patch, _getlocal uses os.getcwd() to locate repo in current dir. chgserver needs it to load repo config and has to do chdir twice: the first is to set current directory and the second is to redo the side effect (in case hg --cwd some/relative/path, chdir will be called again in dispatch later), which is not pretty. This patch adds an optional wd parameter to make it possible to specify wd without chdir (and its side effect).
Fri, 26 Feb 2016 14:50:04 +0000 chgserver: add utilities to calculate confighash
Jun Wu <quark@fb.com> [Fri, 26 Feb 2016 14:50:04 +0000] rev 28262
chgserver: add utilities to calculate confighash confighash is the hash of sensitive config items like [extensions], and sensitive environment variables like HG*, LD_*, etc. The config items can come from global, user, repo config, and command line flags. For chgserver, it is designed that once confighash changes, the server is not qualified to serve its client and should redirect the client to a new server. The server does not need to exit in this case, since it can still be valid (have a matched confighash) to serve other chg clients.
Fri, 26 Feb 2016 14:13:12 +0000 chg: detect chg started by chg
Jun Wu <quark@fb.com> [Fri, 26 Feb 2016 14:13:12 +0000] rev 28261
chg: detect chg started by chg Sometimes people may create a symbol link from hg to chg, or write a wrapper script named hg calling chg. Without $HG and $CHGHG set, this will lead to chg executes itself causing deadlock. The user will notice chg hangs for some time and aborts with a timed out message, without knowing the root cause and how to solve it. This patch sets a dummy environment variable before executing hg to detect this situation, and print a fatal message with some possible solutions. CHGINTERNALMARK is set by chg client to detect the situation that chg is started by chg. It is temporary and should be dropped to avoid possible side effects.
Fri, 26 Feb 2016 14:17:59 +0000 chg: fallback to original hg for some unsupported commands or flags
Jun Wu <quark@fb.com> [Fri, 26 Feb 2016 14:17:59 +0000] rev 28260
chg: fallback to original hg for some unsupported commands or flags There are some known unsupported commands or flags for chg, such as hg serve -d and hg foo --time. This patch detects these situations and transparently fall back to the original hg. So the users won't bother remembering what chg can and cannot do by themselves. The current detection is not 100% accurate since we do not have an equivalent command line parser in C. But it tries not to cause false positives that prevents people from using chg for legit cases. In the future we may want to implement a more accurate "unsupported" check server-side.
Wed, 24 Feb 2016 13:20:06 +0000 testing: add a 'continuous' profile
David R. MacIver <david@drmaciver.com> [Wed, 24 Feb 2016 13:20:06 +0000] rev 28259
testing: add a 'continuous' profile This gives a good way of letting Hypothesis run until it finds an error, save that error, and be restarted without it picking up on the old bug. This lets you run long-running Hypothesis processes and then perform a manual deduplication task on the bugs found at the end. It's not an entirely satisfying way of using this, but anything much better would require extensive changes to Hypothesis itself.
Wed, 24 Feb 2016 13:11:30 +0000 testing: allow Hypothesis to enable extensions
David R. MacIver <david@drmaciver.com> [Wed, 24 Feb 2016 13:11:30 +0000] rev 28258
testing: allow Hypothesis to enable extensions This adds support for testing extensions, including both tests that extensions don't change behaviour and test for specific commands. We use the precondition system to determine what commands are available to us. If we never use any commands enabled by an extension then that extension is *skippable* and should not have changed the behaviour of the test. We thus rerun the test with an environment variable which is designed to turn off the extension.
Fri, 26 Feb 2016 17:24:14 +0000 testing: test multiple repositories with Hypothesis
David R. MacIver <david@drmaciver.com> [Fri, 26 Feb 2016 17:24:14 +0000] rev 28257
testing: test multiple repositories with Hypothesis This expands the Hypothesis based stateful testing so that rather than having a single repository under test, Hypothesis manages a family of repositories. Some of these are freshly created, some are clones of others.
Wed, 24 Feb 2016 13:06:43 +0000 testing: expand Hypothesis tests with branch commands
David R. MacIver <david@drmaciver.com> [Wed, 24 Feb 2016 13:06:43 +0000] rev 28256
testing: expand Hypothesis tests with branch commands This builds on the previous work to add Hypothesis based stateful testing to add branching commands to the model.
Wed, 24 Feb 2016 13:05:45 +0000 testing: generate tests operations using Hypothesis
David R. MacIver <david@drmaciver.com> [Wed, 24 Feb 2016 13:05:45 +0000] rev 28255
testing: generate tests operations using Hypothesis The idea of this patch is to expand the use of Hypothesis within Mercurial to use its concept of "stateful testing". The result is a test which runs a sequence of operations against a Mercurial repository. Each operation is given a set of allowed ways it can fail. Any other non-zero exit code is a test failure. At the end, the whole sequence is then reverified by generating a .t test and testing it again in pure mode (this is also useful for catching non-determinism bugs). This has proven reasonably effective at finding bugs, and has identified two problems in the shelve extension already (issue5113 and issue5112).
Mon, 29 Feb 2016 22:52:29 +0900 i18n-ja: synchronized with cb6a952efbf4 stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 29 Feb 2016 22:52:29 +0900] rev 28254
i18n-ja: synchronized with cb6a952efbf4
Mon, 15 Feb 2016 22:46:07 +0900 log: fix order of revisions filtered by multiple OR options (issue5100) stable
Yuya Nishihara <yuya@tcha.org> [Mon, 15 Feb 2016 22:46:07 +0900] rev 28253
log: fix order of revisions filtered by multiple OR options (issue5100) This is the simplest workaround for the issue of the ordering of revset, which is that the expression "x or y" takes over the ordering specified by the input set (or the left-hand-side expression.) For example, the following expression A & (x | y) will be evaluated as if (A & x) | (A & y) That's wrong because revset has ordering. I'm going to fix this problem in the revset module, but that wouldn't fit to stable. So, this patch just works around the common log cases. Since this change might have some impact on performance, it is enabled only if the expression built from log options has ' or ' operation.
Thu, 25 Feb 2016 22:35:11 -0800 demandimport: add _imp to ignore list stable
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 25 Feb 2016 22:35:11 -0800] rev 28252
demandimport: add _imp to ignore list Mozilla is seeing an issue with demand importing of _imp failing in pkg_resources/__init__.py:fixup_namespace_packages. It strangely only reproduces when using a modern version of setuptools/pip in certain scenarios. Adding _imp to the demand import ignore list seems to make the problem go away.
Thu, 25 Feb 2016 16:54:14 +0000 tests: rename regression tests
timeless <timeless@mozdev.org> [Thu, 25 Feb 2016 16:54:14 +0000] rev 28251
tests: rename regression tests
Thu, 25 Feb 2016 10:01:59 -0800 zeroconf: fix crash in "hg paths" when zeroconf server is up
Danek Duvall <danek.duvall@oracle.com> [Thu, 25 Feb 2016 10:01:59 -0800] rev 28250
zeroconf: fix crash in "hg paths" when zeroconf server is up Running "hg paths" with zeroconf enabled and when a zeroconf server is up and running gives a traceback with "ValueError: rawloc must be defined". This is because zeroconf needs to wrap ui.configsuboptions(), introduced in dccbebcff075.
Wed, 24 Feb 2016 22:22:18 -0800 zeroconf: fix setsockopt() call on Solaris to send payload of correct length
Danek Duvall <danek.duvall@oracle.com> [Wed, 24 Feb 2016 22:22:18 -0800] rev 28249
zeroconf: fix setsockopt() call on Solaris to send payload of correct length The zeroconf extension has been broken on Solaris since the beginning, but no one noticed until the testsuite started poking it after changeset 72f2a19c5f88, when it started running "hg paths" with the extension enabled. Solaris requires that, for IP_MULTICAST_{TTL,LOOP}, the argument passed in be of length 1. With the original code here, it gets passed in as an int -- length 4 -- and so the system call fails with EINVAL. Thankfully, Python's socket.setsockopt() allows you to pass in a string instead of an integer, and it passes that string to libc's setsockopt() with the correct value and length.
Wed, 03 Feb 2016 04:54:40 +0000 blackbox: properly replace ui class
timeless <timeless@mozdev.org> [Wed, 03 Feb 2016 04:54:40 +0000] rev 28248
blackbox: properly replace ui class Without this, anyone creating a ui object using: uimod.ui() skips the blackbox. Also, anyone doing ui.copy() skipped the blackbox. Unfortunately, the ui object lifestyle is a bit messy, the first one that's created is never actually initialized with subclasses, instead pieces of the subclass are adopted into the primal ui object. In order to handle this, a _partialinit method will be called to ensure that the blackboxui is properly initialized.
Wed, 03 Feb 2016 17:05:04 +0000 blackbox: store the blackbox ui object instead of the log file
timeless <timeless@mozdev.org> [Wed, 03 Feb 2016 17:05:04 +0000] rev 28247
blackbox: store the blackbox ui object instead of the log file Without this, the last logged entry didn't have access to the repository, and thus couldn't report its version (and especially that an add or similar dirtied it). A side-effect is that one repo leaks until process exit...
Tue, 09 Feb 2016 15:44:13 +0000 blackbox: log dirty state
timeless <timeless@mozdev.org> [Tue, 09 Feb 2016 15:44:13 +0000] rev 28246
blackbox: log dirty state If blackbox.dirty = True, use `+` to indicate dirty repositories.
Tue, 09 Feb 2016 19:16:06 +0000 blackbox: log working directory version
timeless <timeless@mozdev.org> [Tue, 09 Feb 2016 19:16:06 +0000] rev 28245
blackbox: log working directory version Without this, while you could see the list of commands run, it wasn't possible to identify what they were doing, because commads could rely on revsets (including remote input which varies over time).
Mon, 08 Feb 2016 03:37:26 +0000 blackbox: rename fp variable
timeless <timeless@mozdev.org> [Mon, 08 Feb 2016 03:37:26 +0000] rev 28244
blackbox: rename fp variable
Wed, 03 Feb 2016 15:41:31 +0000 blackbox: avoid creating multiple file handles for a single log
timeless <timeless@mozdev.org> [Wed, 03 Feb 2016 15:41:31 +0000] rev 28243
blackbox: avoid creating multiple file handles for a single log There are multiple ui objects in Mercurial that can relate to a repository, before this change, each one would have its own file pointer, which results in unfortunate logging behavior. Also, any log rotation results would be bad because only the active blackboxui object's file pointer would be refreshed. Note that this does not prevent two long running hg commands for the same repository from causing problems.
Wed, 24 Feb 2016 20:04:32 +0000 tests: mock getpid to reduce glob usage
timeless <timeless@mozdev.org> [Wed, 24 Feb 2016 20:04:32 +0000] rev 28242
tests: mock getpid to reduce glob usage Updating tests based on ac49ecb2a897.
Mon, 22 Feb 2016 14:43:14 -0800 changegroup: drop special-casing of flat manifests
Martin von Zweigbergk <martinvonz@google.com> [Mon, 22 Feb 2016 14:43:14 -0800] rev 28241
changegroup: drop special-casing of flat manifests Since c08814b48ae5 (changegroup: avoid iterating the whole manifest, 2015-12-04), the manifest linkrev callback iterates over only the files that were touched according the the changeset. Before that change, we iterated over all files returned in manifest.readfast(). That method returns the files in the delta, if the delta parent is a parent, otherwise it returns the full manifest. Most manifest revisions end up using one of the parents as its delta parent, so most of the time, the method returns a short manifest. It seems that that happens often enough that it doesn't really matter; I could not reproduce the timings reported in that change. Since the treemanifest code now works quite differently, and since that code also works correctly for flat manifests, let's drop the special-casing of flat manifests.
Fri, 12 Feb 2016 23:09:09 -0800 changegroup: fix treemanifests on merges
Martin von Zweigbergk <martinvonz@google.com> [Fri, 12 Feb 2016 23:09:09 -0800] rev 28240
changegroup: fix treemanifests on merges The current code for generating treemanifest revisions takes the list of files in the changeset and finds the directories from them. This does not work for merges, since a merge may pick file A from one side and file B from another and neither of them would appear in the changeset's "files" list, but the manifest would still change. Fix this by instead walking the root manifest log for all needed revisions, storing all needed file and subdirectory revisions, then recursively visiting the subdirectories. This also turns out to be faster: cloning a version of hg core converted to treemanifests went from ~28s to ~19s (timing somewhat unfair: before this patch, timed until crash; after this patch, timed until manifests complete). The new algorithm is used only on treemanifest repos. Although it works equally well on flat manifests, we leave the iteration over files in the changeset for flat manifests for now.
Sun, 27 Dec 2015 20:21:37 +0900 templatekw: workaround for utf-8 round-trip of {desc}
Yuya Nishihara <yuya@tcha.org> [Sun, 27 Dec 2015 20:21:37 +0900] rev 28239
templatekw: workaround for utf-8 round-trip of {desc} Though our encoding strategy is best effort, {desc} is a primitive keyword that should be worth enough to try hard to preserve UTF-8 bytes.
Thu, 25 Feb 2016 10:34:31 +0100 test: update test-bundle2-format.t comment
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 25 Feb 2016 10:34:31 +0100] rev 28238
test: update test-bundle2-format.t comment Now that bundle2 is used by default for all exchanges, this comment is obviously out of date. Having deep testing of the API and expected behavior of the format and its processing is still valuable, so the comment is updated.
Wed, 24 Feb 2016 14:24:00 +0000 chg: extract gethgcmd logic to a function
Jun Wu <quark@fb.com> [Wed, 24 Feb 2016 14:24:00 +0000] rev 28237
chg: extract gethgcmd logic to a function gethgcmd is to get original hg (not chg) binary name. This patch extracts the logic from execcmdserver to make it available for the following patch.
Wed, 24 Feb 2016 23:00:33 +0900 destutil: use cached branch information instead of query for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 24 Feb 2016 23:00:33 +0900] rev 28236
destutil: use cached branch information instead of query for efficiency Before this patch, calculation of "the tipmost branch head on current branch" uses revset query "max(.::(head() and branch(BRANCH)))", but this isn't efficiency, because: - head() predicate lists up heads on all branches, but - branch() predicate eliminates heads on other branches In addition to it, without "literal:" prefix for branch name, branch(BRANCH) tries to (1) look up BRANCH in "repo.branchmap()" and (2) look up BRANCH as symbol name again, if there is no branch matching against BRANCH. The latter looking up is obviously redundant. This patch uses repo.branchheads(closed=True) to get all branch heads on specified branch instead of "head() and branch(BRANCH)" revset query part. This patch also makes catching RepoLookupError meaningless, because it is only raised by revset predicate "branch()". But "currentbranch in repo.branchmap()" can detect whether currentbranch actually exists or not. Therefore, this patch replaces try/except for RepoLookupError by if/else for "currentbranch in repo.branchmap()".
Wed, 24 Feb 2016 23:00:33 +0900 destutil: replace wc.branch() invocations by cached value for efficiency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 24 Feb 2016 23:00:33 +0900] rev 28235
destutil: replace wc.branch() invocations by cached value for efficiency
Wed, 24 Feb 2016 23:00:32 +0900 destutil: remove redundant examination
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 24 Feb 2016 23:00:32 +0900] rev 28234
destutil: remove redundant examination Before this patch, "len(heads) != len(otherheads)" is examined to detect whether message should be displayed or not. But if "repo.revs('%ln and parents()', heads)", heads should contain "parents()" and otherheads is always less than heads.
Wed, 24 Feb 2016 23:00:32 +0900 destutil: add new local variable to increase readability
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 24 Feb 2016 23:00:32 +0900] rev 28233
destutil: add new local variable to increase readability Before this patch, local variable 'heads' is used not only for "all branch heads" but also for "branch heads other than current parent". This patch newly adds local variable 'otherheads' for the latter purpose, to increase readability.
Fri, 12 Feb 2016 23:30:18 -0800 changegroup: write root manifests and subdir manifests in a single loop
Martin von Zweigbergk <martinvonz@google.com> [Fri, 12 Feb 2016 23:30:18 -0800] rev 28232
changegroup: write root manifests and subdir manifests in a single loop This is another step towards making the manifest generation recurse along the directory trees. The loop over 'tmfnodes' now takes the form of a queue. At this point, we only add to the queue twice: we add the root manifests, and, while visiting the root manifest revisions, we add all subdirectory revisions (for treemanifest repos). Thus, any iterations over 'tmfnodes' after the first will not add any items and the "queue" will just keep shrinking.
Fri, 12 Feb 2016 23:26:15 -0800 changegroup: introduce makelookupmflinknode(dir)
Martin von Zweigbergk <martinvonz@google.com> [Fri, 12 Feb 2016 23:26:15 -0800] rev 28231
changegroup: introduce makelookupmflinknode(dir) This is another step towards making the manifest generation recurse along the directory trees. It makes the two calls to _packmanifests() more similar.
Fri, 12 Feb 2016 21:21:28 -0800 changegroup: prune subdirectory dirlogs too
Martin von Zweigbergk <martinvonz@google.com> [Fri, 12 Feb 2016 21:21:28 -0800] rev 28230
changegroup: prune subdirectory dirlogs too We already prune changesets, root manifests and files whose linkrev is in the set of common revisions. We should do the same for dirlogs.
Fri, 12 Feb 2016 15:42:16 -0800 changegroup: include subdirectory manifests in verbose size
Martin von Zweigbergk <martinvonz@google.com> [Fri, 12 Feb 2016 15:42:16 -0800] rev 28229
changegroup: include subdirectory manifests in verbose size When verbose logging is one, we report the size in bytes of the manifest data in the changegroup. For files, we report the size per file, but I'm not sure we need that level of detail (i.e. size per directory manifest). Instead, report a single figure for the size of root manifest plus submanifests.
Fri, 12 Feb 2016 15:18:56 -0800 changegroup: make _packmanifests() dumber
Martin von Zweigbergk <martinvonz@google.com> [Fri, 12 Feb 2016 15:18:56 -0800] rev 28228
changegroup: make _packmanifests() dumber The next few patches will rewrite the manifest generation code to work with merges. We will then walk dirlogs recursively. This prepares for that by moving much of the treemanifest code out of _packmanifests() and into generatemanifests(). For this to work, it also adds _manifestsdone() method that returns the "end of manifests" close chunk for cg3 and an empty string for cg1 and cg2.
Thu, 11 Feb 2016 20:19:48 -0800 changegroup: extract generatemanifests()
Martin von Zweigbergk <martinvonz@google.com> [Thu, 11 Feb 2016 20:19:48 -0800] rev 28227
changegroup: extract generatemanifests() The changegroup.generate() function is pretty long, so let's extract the manifest generation part of it.
(0) -10000 -3000 -1000 -120 +120 +1000 +3000 +10000 tip