Fri, 18 Aug 2017 20:20:38 -0700 tests: add interface checks for bundle, statichttp, and union peers
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 18 Aug 2017 20:20:38 -0700] rev 34307
tests: add interface checks for bundle, statichttp, and union peers I forgot to add these when I initially wrote the test. They inherit from localrepo.localpeer, so they should be explicitly tested. Differential Revision: https://phab.mercurial-scm.org/D810
Sat, 23 Sep 2017 13:46:12 -0700 alias: make alias command lazily resolved
Jun Wu <quark@fb.com> [Sat, 23 Sep 2017 13:46:12 -0700] rev 34306
alias: make alias command lazily resolved With many aliases, resolving them could have some visible overhead. Below is part of traceprof [1] output of `hg bookmark --hidden`: (time unit: ms) 37 \ addaliases dispatch.py:526 37 | __init__ (60 times) dispatch.py:402 33 | findcmd (108 times) cmdutil.py:721 16 | findpossible (49 times) cmdutil.py:683 It may get better by optimizing `findcmd` to do a bisect, but we don't really need to resolve an alias if it's not used, so let's make those command entries lazy. After this patch, `addalias` takes less than 1ms. .. perf:: improved performance when many aliases are defined [1]: https://bitbucket.org/facebook/hg-experimental/src/9aca0dbdbdfc48457e5d2581ca2d6e662fced2e6/hgext3rd/traceprof.pyx Differential Revision: https://phab.mercurial-scm.org/D805
Sat, 23 Sep 2017 13:31:09 -0700 alias: test duplicated definition earlier
Jun Wu <quark@fb.com> [Sat, 23 Sep 2017 13:31:09 -0700] rev 34305
alias: test duplicated definition earlier This patch moves the old definition checking logic introduced by f4b7be3f8430 earlier. So that the test itself does not depend on `aliasdef`. The check is to avoid wrapping a same alias multiple times. It can be done by checking the config name and value (`definition` in code), without constructing a `cmdalias` instance. This makes the next patch easier to review. Differential Revision: https://phab.mercurial-scm.org/D804
Sun, 24 Sep 2017 19:37:55 +0530 uncommit: add a test for uncommit with uncommitondirtywdir config in merge
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 24 Sep 2017 19:37:55 +0530] rev 34304
uncommit: add a test for uncommit with uncommitondirtywdir config in merge Differential Revision: https://phab.mercurial-scm.org/D809
Thu, 14 Sep 2017 13:14:32 -0700 largefiles: force an on-disk merge
Phil Cohen <phillco@fb.com> [Thu, 14 Sep 2017 13:14:32 -0700] rev 34303
largefiles: force an on-disk merge Largefiles isn't a good candidate for in-memory merge (it uses a custom dirstate, matcher, and the files might not fit in memory) so have it always run an old-style merge. Differential Revision: https://phab.mercurial-scm.org/D683
Thu, 14 Sep 2017 13:14:32 -0700 merge: allow a custom working context to be passed to update
Phil Cohen <phillco@fb.com> [Thu, 14 Sep 2017 13:14:32 -0700] rev 34302
merge: allow a custom working context to be passed to update This will allow anyone to enable the first in-menmory merge milestone by wrapping merge.update in an extension and creating an overlayworkingctx. Differential Revision: https://phab.mercurial-scm.org/D682
Wed, 14 Jun 2017 11:13:57 -0400 patchbomb: add test that shows --to and --cc override matching config item
Augie Fackler <augie@google.com> [Wed, 14 Jun 2017 11:13:57 -0400] rev 34301
patchbomb: add test that shows --to and --cc override matching config item As far as I know this has always been true and is intentional (it's in line with many other behaviors), but it wasn't tested.
Thu, 21 Sep 2017 11:10:20 -0700 blackbox: move _openlogfile to a separate method
Jun Wu <quark@fb.com> [Thu, 21 Sep 2017 11:10:20 -0700] rev 34300
blackbox: move _openlogfile to a separate method This removes several `stat` syscalls for accessing `_bbvfs` and makes `ui` object cleaner. Differential Revision: https://phab.mercurial-scm.org/D769
Thu, 21 Sep 2017 11:03:37 -0700 blackbox: do not prevent 'chg init' from working
Jun Wu <quark@fb.com> [Thu, 21 Sep 2017 11:03:37 -0700] rev 34299
blackbox: do not prevent 'chg init' from working Previously, blackbox always appends to blackbox.log and creates the directory for that file on demand. That could be an issue if: 1. chg starts from `$REPO` directory, so `ui._bbrepo` is set. 2. `rm -rf $REPO`. 3. `chg init $REPO`, blackbox writes something and `init` will fail because `$REPO` directory is non-empty. This patch fixes that by verifying whether vfs exists before re-using it. Differential Revision: https://phab.mercurial-scm.org/D768
Mon, 11 Sep 2017 20:07:41 -0400 tests: add a test for blackbox with nested alias configurations
Augie Fackler <augie@google.com> [Mon, 11 Sep 2017 20:07:41 -0400] rev 34298
tests: add a test for blackbox with nested alias configurations I've observed some weirdness around this, and needed to rule some things out. There aren't any bugs in core around this, but it was nice to have confirmation.
Mon, 11 Sep 2017 20:06:52 -0400 tests: clean up blackbox test around aliases a little bit
Augie Fackler <augie@google.com> [Mon, 11 Sep 2017 20:06:52 -0400] rev 34297
tests: clean up blackbox test around aliases a little bit
Wed, 13 Sep 2017 17:26:26 +0000 revlog: add option to mmap revlog index
Mark Thomas <mbthomas@fb.com> [Wed, 13 Sep 2017 17:26:26 +0000] rev 34296
revlog: add option to mmap revlog index Following on from Jun Wu's patch last October[1], we have found that using mmap for the revlog index in repos with large revlogs gives a noticable performance improvment (~110ms on each hg invocation), particularly for commands that don't touch the index very much. This changeset adds this as an option, activated by a new experimental config option so that it can be enabled on a per-repo basis. The configuration option specifies an index size threshold at which Mercurial will switch to using mmap to access the index. If the configuration option is not specified, the default remains to load the full file, which seems to be the best option for smaller repos. Some initial performance numbers for average of 5 invocations of `hg log -l 5` for different cache states: | Repo: | HG | FB | |---|---|---| | Index size: | 2.3MB | much bigger | | read (warm): | 237ms | 432ms | | mmap (warm): | 227ms | 321ms | | | (-3%) | (-26%) | | read (cold): | 397ms | 696ms | | mmap (cold): | 410ms | 888ms | | | (+3%) | (+28%) | [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2016-October/088737.html Test Plan: `hg log --config experimental.mmapindex=true` Differential Revision: https://phab.mercurial-scm.org/D477
Thu, 21 Sep 2017 05:54:34 -0700 util: add an mmapread method
Mark Thomas <mbthomas@fb.com> [Thu, 21 Sep 2017 05:54:34 -0700] rev 34295
util: add an mmapread method This is useful for large files that are only partly touched. Test Plan: Will be used and tested in a later patch. Differential Revision: https://phab.mercurial-scm.org/D476
Wed, 20 Sep 2017 09:35:45 -0700 changegroup: remove dictionary creation from deltachunk
Durham Goode <durham@fb.com> [Wed, 20 Sep 2017 09:35:45 -0700] rev 34294
changegroup: remove dictionary creation from deltachunk Previously delta chunk returned a dictionary. Now that we consume deltachunk within changegroup (instead of outside in revlog) we can just return a tuple and have it be returned directly by deltaiter. Differential Revision: https://phab.mercurial-scm.org/D746
Wed, 20 Sep 2017 09:39:03 -0700 bundlerepo: update to use new deltaiter api
Durham Goode <durham@fb.com> [Wed, 20 Sep 2017 09:39:03 -0700] rev 34293
bundlerepo: update to use new deltaiter api Differential Revision: https://phab.mercurial-scm.org/D745
Wed, 20 Sep 2017 09:28:30 -0700 debug: update debugbundle to use new deltaiter api
Durham Goode <durham@fb.com> [Wed, 20 Sep 2017 09:28:30 -0700] rev 34292
debug: update debugbundle to use new deltaiter api Changegroup now has a deltaiter api for easy iteration over a series of deltas. Let's use that in the debugbundle command. Differential Revision: https://phab.mercurial-scm.org/D744
Wed, 20 Sep 2017 09:22:22 -0700 revlog: add revmap back to revlog.addgroup
Durham Goode <durham@fb.com> [Wed, 20 Sep 2017 09:22:22 -0700] rev 34291
revlog: add revmap back to revlog.addgroup The recent c8b6ed51386b patch removed the linkmapper argument from addgroup, as part of trying to make addgroup more agnostic from the changegroup format. It turns out that the changegroup can't resolve linkrevs while iterating over the deltas, because applying the deltas might affect the linkrev resolution. For example, when applying a series of changelog entries, the linkmapper just returns len(cl). If we're iterating over the deltas without applying them to the changelog, this results in incorrect linkrevs. This was caught by the hgsql extension, which reads the revisions before applying them. The fix is to return linknodes as part of the delta iterator, and let the consumer choose what to do. Differential Revision: https://phab.mercurial-scm.org/D730
Tue, 19 Sep 2017 22:06:26 -0700 rebase: also include other namespaces in changeset description
Martin von Zweigbergk <martinvonz@google.com> [Tue, 19 Sep 2017 22:06:26 -0700] rev 34290
rebase: also include other namespaces in changeset description This makes use of the generic method of listing bookmarks and tags, so other extensions that add other namespaces will get their names added too. This does mean that bookmarks will come before tags, just like we apparently decided to order them in the "hg log" output. It doesn't seem like people would be parsing the rebase output anyway. We also did 79ab5369d55a (rebase: use _ctxdesc in one more place, 2017-08-29) recently, so now seems like a good time. Differential Revision: https://phab.mercurial-scm.org/D741
Wed, 20 Sep 2017 07:46:55 +0530 tersestatus: sort the dictionary before iterating on it
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 20 Sep 2017 07:46:55 +0530] rev 34289
tersestatus: sort the dictionary before iterating on it There has report of flakiness in test-status-terse.t. In the terse code, we are iterating on a dictionary without sorting and since python dicts are unordered, that can be a reason behind the flakiness. Before we have a better implementation for the terse thing, let's make sure current implementation possess minimum bugs. Differential Revision: https://phab.mercurial-scm.org/D740
Sun, 03 Sep 2017 20:06:45 +0530 copytrace: use the full copytracing method if only drafts are involved
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 03 Sep 2017 20:06:45 +0530] rev 34288
copytrace: use the full copytracing method if only drafts are involved This patch adds the functionality to use the full copytracing even if `experimental.copytrace = heuristics` in cases when drafts are involved. This is also a part of copytrace extension in fbext. This also adds tests which are also taken from fbext. .. feature:: The `heuristics` option for `experimental.copytrace` performs full copytracing if both source and destination branches contains non-public changsets only. Differential Revision: https://phab.mercurial-scm.org/D625
Fri, 15 Sep 2017 10:43:22 -0700 templates: introduce a obsfateoperation() function
Martin von Zweigbergk <martinvonz@google.com> [Fri, 15 Sep 2017 10:43:22 -0700] rev 34287
templates: introduce a obsfateoperation() function Differential Revision: https://phab.mercurial-scm.org/D723
Fri, 15 Sep 2017 10:42:49 -0700 obsmarker: track operation by default
Martin von Zweigbergk <martinvonz@google.com> [Fri, 15 Sep 2017 10:42:49 -0700] rev 34286
obsmarker: track operation by default We added support for including the operation responsible for creating the obsmarker in 3546a771e376 (obsolete: add operation metadata to rebase/amend/histedit obsmarkers, 2017-05-09). However, soon thereafter, in f432897a9f49 (obsmarker: add an experimental flag controlling "operation" recording, 2017-05-20), it was hidden behind a config that was off by default. It seems unlikely that people will manually turn it on, and obsmarkers/evolution as a whole is still experimental anyway, so let's turn on the tracking by default. Differential Revision: https://phab.mercurial-scm.org/D722
Wed, 20 Sep 2017 02:40:25 +0530 uncommit: add an experimental.uncommitondirtywdir config
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 20 Sep 2017 02:40:25 +0530] rev 34285
uncommit: add an experimental.uncommitondirtywdir config There are people who wants to do `hg uncommit` on dirty working directory, so this patch adds a config which can be used to the achieve that. Adds tests for the same. Differential Revision: https://phab.mercurial-scm.org/D735
Wed, 20 Sep 2017 02:18:01 +0530 uncommit: don't allow bare uncommit on dirty working directory
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 20 Sep 2017 02:18:01 +0530] rev 34284
uncommit: don't allow bare uncommit on dirty working directory As per IRC discussion and suggestion by Augie, we should not allow bare `hg uncommit` on dirty working directory. Differential Revision: https://phab.mercurial-scm.org/D734
Sat, 16 Sep 2017 02:34:13 +0530 uncommit: rename the flag 'empty' to 'keep' which retains empty changeset
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 16 Sep 2017 02:34:13 +0530] rev 34283
uncommit: rename the flag 'empty' to 'keep' which retains empty changeset This patch renames the flag 'empty' which retains the empty changeset if all the files are uncommitted to 'keep'. Differential Revision: https://phab.mercurial-scm.org/D726
Mon, 18 Sep 2017 14:19:47 -0400 tests: avoid repr in test-bundle2-format.t
Augie Fackler <augie@google.com> [Mon, 18 Sep 2017 14:19:47 -0400] rev 34282
tests: avoid repr in test-bundle2-format.t We don't *really* need it here, and it was making Python 3 harder.
Mon, 18 Sep 2017 14:04:05 -0400 tests: port test-bundle2-format inline helper script to Python 3
Augie Fackler <augie@google.com> [Mon, 18 Sep 2017 14:04:05 -0400] rev 34281
tests: port test-bundle2-format inline helper script to Python 3 We're now very close to this test passing.
Tue, 19 Sep 2017 00:27:55 -0400 bundle2: portably grab first byte of part name for letter check
Augie Fackler <augie@google.com> [Tue, 19 Sep 2017 00:27:55 -0400] rev 34280
bundle2: portably grab first byte of part name for letter check
Mon, 18 Sep 2017 14:03:21 -0400 bundle2: make ValueError messages native strings
Augie Fackler <augie@google.com> [Mon, 18 Sep 2017 14:03:21 -0400] rev 34279
bundle2: make ValueError messages native strings
Mon, 18 Sep 2017 13:36:05 -0400 bundle2: update check for a generator to work on Python 3
Augie Fackler <augie@google.com> [Mon, 18 Sep 2017 13:36:05 -0400] rev 34278
bundle2: update check for a generator to work on Python 3
Mon, 18 Sep 2017 13:35:43 -0400 bundle2: stop using %r to quote part names
Augie Fackler <augie@google.com> [Mon, 18 Sep 2017 13:35:43 -0400] rev 34277
bundle2: stop using %r to quote part names Valid part names are restricted to [a-zA-Z0-9_:-]+, so I'm not worried about having quoting present in places where we should have predominantly valid part names. This will significantly ease the Python 3 transition, and simultaneously isn't a BC because this is only in error messages that should never be shown.
Mon, 18 Sep 2017 16:01:03 -0700 blackbox: set lastui even if ui.log is not called (issue5518)
Jun Wu <quark@fb.com> [Mon, 18 Sep 2017 16:01:03 -0700] rev 34276
blackbox: set lastui even if ui.log is not called (issue5518) `lastui` decides where (where is the `.hg`) to use if the current `ui` object does not have a `_bbrepo` associated. Previously it only gets set in `ui.log`, which means unless a `ui` with repo associated calls `log` with tracked event, blackbox does not know where to write its log. This patch makes `reposetup` set `lastui` so it so we could log some more events (see test changes). Differential Revision: https://phab.mercurial-scm.org/D655
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -32 +32 +50 +100 +300 +1000 +3000 +10000 tip