Mon, 03 Jul 2017 21:12:04 -0700 show: avoid extra list operations
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 03 Jul 2017 21:12:04 -0700] rev 33209
show: avoid extra list operations
Mon, 03 Jul 2017 21:10:48 -0700 show: tweak warning message
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 03 Jul 2017 21:10:48 -0700] rev 33208
show: tweak warning message '.' is "working directory parent" not "working directory."
Fri, 23 Jun 2017 13:49:34 +0200 revlog: add an experimental option to mitigated delta issues (issue5480)
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 23 Jun 2017 13:49:34 +0200] rev 33207
revlog: add an experimental option to mitigated delta issues (issue5480) The general delta heuristic to select a delta do not scale with the number of branch. The delta base is frequently too far away to be able to reuse a chain according to the "distance" criteria. This leads to insertion of larger delta (or even full text) that themselves push the bases for the next delta further away leading to more large deltas and full texts. This full text and frequent recomputation throw Mercurial performance in disarray. For example of a slightly large repository 280 000 files (2 150 000 versions) 430 000 changesets (10 000 topological heads) Number below compares repository with and without the distance criteria: manifest size: with: 21.4 GB without: 0.3 GB store size: with: 28.7 GB without 7.4 GB bundle last 15 00 revisions: with: 800 seconds 971 MB without: 50 seconds 73 MB unbundle time (of the last 15K revisions): with: 1150 seconds (~19 minutes) without: 35 seconds Similar issues has been observed in other repositories. Adding a new option or "feature" on stable is uncommon. However, given that this issues is making Mercurial practically unusable, I'm exceptionally targeting this patch for stable. What is actually needed is a full rework of the delta building and reading logic. However, that will be a longer process and churn not suitable for stable. In the meantime, we introduces a quick and dirty mitigation of this in the 'experimental' config space. The new option introduces a way to set the maximum amount of memory usable to store a diff in memory. This extend the ability for Mercurial to create chains without removing all safe guard regarding memory access. The option should be phased out when core has a more proper solution available. Setting the limit to '0' remove all limits, setting it to '-1' use the default limit (textsize x 4).
Sun, 02 Jul 2017 13:24:23 +0900 tests: use system hg only if changelog or dirstate can't be read
Yuya Nishihara <yuya@tcha.org> [Sun, 02 Jul 2017 13:24:23 +0900] rev 33206
tests: use system hg only if changelog or dirstate can't be read The bundled hg should work flawlessly in most cases. Make it depend on the external installation only if necessary since we can't control the whole environment. This patch doesn't implement the "exit 80" idea proposed by Jun. I don't want to keep the capability checking sync with the actual tests.
Sun, 02 Jul 2017 13:20:28 +0900 tests: restore workaround of obsolete warning from 3c9066ed557c
Yuya Nishihara <yuya@tcha.org> [Sun, 02 Jul 2017 13:20:28 +0900] rev 33205
tests: restore workaround of obsolete warning from 3c9066ed557c It's simple and works well unless you are using third-party extensions that changes the store format.
Sun, 02 Jul 2017 13:14:20 +0900 tests: alias syshg and syshgenv so they can be switched conditionally
Yuya Nishihara <yuya@tcha.org> [Sun, 02 Jul 2017 13:14:20 +0900] rev 33204
tests: alias syshg and syshgenv so they can be switched conditionally
Fri, 30 Jun 2017 21:49:29 +0900 tests: actually restore the original environment before running syshg
Yuya Nishihara <yuya@tcha.org> [Fri, 30 Jun 2017 21:49:29 +0900] rev 33203
tests: actually restore the original environment before running syshg Since os.environ may be overridden in run-tests.py, several important variables such as PATH weren't restored. I don't like the idea of using the system hg *by default* because the executable and the configs are out of our control. But I don't mind as long as the tests pass.
Sun, 02 Jul 2017 20:08:09 -0700 phabricator: add phabread command to read patches
Jun Wu <quark@fb.com> [Sun, 02 Jul 2017 20:08:09 -0700] rev 33202
phabricator: add phabread command to read patches This patch adds a `phabread` command generating plain-text patches from Phabricator, suitable for `hg import`. It respects `hg:meta` so user and date information might be preserved. And it removes `Summary:` field name which makes the commit message a bit tidier. To support stacked diffs, a `--stack` flag was added to read dependent patches recursively.
Sun, 02 Jul 2017 20:08:09 -0700 phabricator: add phabsend command to send a stack
Jun Wu <quark@fb.com> [Sun, 02 Jul 2017 20:08:09 -0700] rev 33201
phabricator: add phabsend command to send a stack The `phabsend` command is intended to provide `hg email`-like experience - sending a stack, setup dependency information and do not amend existing changesets. It uses differential.createrawdiff and differential.revision.edit Conduit API to create or update a Differential Revision. Local tags like `D123` are written indicating certain changesets were sent to Phabricator. The `phabsend` command will use obsstore and tags information to decide whether to update or create Differential Revisions.
Sun, 02 Jul 2017 20:08:09 -0700 phabricator: add a contrib script
Jun Wu <quark@fb.com> [Sun, 02 Jul 2017 20:08:09 -0700] rev 33200
phabricator: add a contrib script The default Phabricator client arcanist is not friendly to send a stack of changesets. It works better when a feature branch is reviewed as a single review unit. However, we want multiple revisions per feature branch. To be able to have an `hg email`-like UX to send and receive a stack of commits easily, it seems we have to re-invent things. This patch adds `phabricator.py` speaking Conduit API [1] in `contrib` as the first step. This may also be an option for people who don't want to run PHP. Config could be done in `hgrc` (instead of `arcrc` or `arcconfig`): [phabricator] # API token. Get it from https://phab.mercurial-scm.org/conduit/login/ token = cli-xxxxxxxxxxxxxxxxxxxxxxxxxxxx url = https://phab.mercurial-scm.org/ # callsign is used by the next patch callsign = HG This patch only adds a single command: `debugcallconduit` to keep the patch size small. To test it, having the above config, and run: $ hg debugcallconduit diffusion.repository.search <<EOF > {"constraints": {"callsigns": ["HG"]}} > EOF The result will be printed in prettified JSON format. [1]: Conduit APIs are listed at https://phab.mercurial-scm.org/conduit/
(0) -30000 -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 +3000 +10000 tip