- Oct 19, 2017
-
-
Boris Feld authored
Like the previous patch, replace obsfate by obsolete in default mapfile. Differential Revision: https://phab.mercurial-scm.org/D1190
-
Boris Feld authored
Yuja's comment on the original obsfate about how we would translate obsfate and the recent discussions about exposing users to new concepts and names lead have led me to think that 'obsfate' should be treated as internal jargon. End- users should not be aware of obsfate, so we replace 'obsfate' by 'obsolete' in changeset_printer. It will be easier to understand for end-users, easier to translate and closer to the original Evolve obsfate output. I'm aware it's extremely late in the cycle but I think it's an UX improvement for the end-users. Differential Revision: https://phab.mercurial-scm.org/D1189
-
Augie Fackler authored
Differential Revision: https://phab.mercurial-scm.org/D1196
-
- Oct 18, 2017
-
-
Paul Morelle authored
An empty entry in the revlog may happen for two reasons: - when the file is empty, and the revlog stores a snapshot; - when there is a merge and both parents were identical. `hg debugindex -m | awk '$3=="0"{print}' | wc -l` gives 1917 of such entries in my clone of pypy, and 113 on my clone of mercurial. These empty revision may be located at the end of a sparse chain, and in some special cases may lead to read relatively large amounts of data for nothing.
-
Jun Wu authored
`dirstate._nonnormalset` has been moved to `dirstate._map.nonnormalset` by 60927b19ed65 (dirstate: move nonnormal and otherparent sets to dirstatemap) and is guaranteed to be existed. Let's update fsmonitor code to use the new `nonnormalset`. Thix fixed a perf regression that slows down `hg status` by 0.5 seconds in one of our production repos. Differential Revision: https://phab.mercurial-scm.org/D1184
-
- Oct 19, 2017
-
-
Martin von Zweigbergk authored
Differential Revision: https://phab.mercurial-scm.org/D1188
-
Martin von Zweigbergk authored
While at it, switch to set literal syntax. Differential Revision: https://phab.mercurial-scm.org/D1187
-
- Oct 18, 2017
-
-
Martin von Zweigbergk authored
Once in a while, test-nothing.t finished before test-failure.t or test-failure-copy.t (I haven't checked which one actually gets run first). Since there already are two tests that will fail in the same way, just run those two instead so the diff will be reproducible and not timing-dependent. The test case was added in 9a20f53e436f (run-tests: handle --jobs and --first gracefully, 2014-10-09), and I have checked that backing that out results in two failures being printed. Note that the summary may still include multiple tests even if --first is given, it's just that the diff is only printed for the first failure. Differential Revision: https://phab.mercurial-scm.org/D1186
-
Augie Fackler authored
Differential Revision: https://phab.mercurial-scm.org/D1183
-
Augie Fackler authored
Fixes hghave on Python 3. Differential Revision: https://phab.mercurial-scm.org/D1182
-
Augie Fackler authored
Fixes many tests on Python 3. Differential Revision: https://phab.mercurial-scm.org/D1181
-
Augie Fackler authored
Should fix the build failures on the Solaris builders. Differential Revision: https://phab.mercurial-scm.org/D1180
-
Pulkit Goyal authored
In obsmarker we can't store keys and values of more than 255 bytes in metadata. If we try to do so, ProgrammingError is raised. The note flag to amend stores the note in obsmetadata. If a user will try to store a larger note, he will encounter ProgrammingError which is wrong. We must error out early. Thanks to Yuya for warning about this. Differential Revision: https://phab.mercurial-scm.org/D1179
-
Jun Wu authored
chgserver.py is also checking the config and will get: devel-warn: accessing unregistered config item: 'commands.show.aliasprefix' at: mercurial/chgserver.py:109 if the config is not registered. Differential Revision: https://phab.mercurial-scm.org/D1178
-
Jun Wu authored
When `$CHGHG` is set, `$HG` is ignored by the chg client. Removing it from chg's sensitive environment list would avoid starting up servers unnecessarily when `$CHGHG` is the same while `$HG` is different. Differential Revision: https://phab.mercurial-scm.org/D1177
-
Gregory Szorc authored
These were added in 4aa57627692a. Attempting to run the test harness with fsmonitor enabled spews a whole bunch of devel warnings due to these options not be declared. Differential Revision: https://phab.mercurial-scm.org/D1176
-
Gregory Szorc authored
fsmonitor can significantly speed up operations on large working directories. But fsmonitor isn't enabled by default, so naive users may not realize there is a potential to make Mercurial faster. This commit introduces a warning to working directory updates when fsmonitor could be used. The following conditions must be met: * Working directory is previously empty * New working directory adds >= N files (currently 50,000) * Running on Linux or MacOS * fsmonitor not enabled * Warning not disabled via config override Because of the empty working directory restriction, most users will only see this warning during `hg clone` (assuming very few users actually do an `hg up null`). The addition of a warning may be considered a BC change. However, clone has printed warnings before. Until recently, Mercurial printed a warning with the server's certificate fingerprint when it wasn't explicitly trusted for example. The warning goes to stderr. So it shouldn't interfere with scripts parsing meaningful output. The OS restriction was on the advice of Facebook engineers, who only feel confident with watchman's stability on the supported platforms. .. feature:: Print warning when fsmonitor isn't being used on a large repository Differential Revision: https://phab.mercurial-scm.org/D894
-
- Oct 06, 2017
-
-
Ryan McElroy authored
In the previous patches, we allowed the user to specify that a merge process should be halted when a filemerge fails. This patch adds tests that show additional places this logic can be utilized -- via the options to do additional post-filemerge checks to determine if a file merge was successful. Differential Revision: https://phab.mercurial-scm.org/D952
-
- Oct 17, 2017
-
-
Pulkit Goyal authored
This patch adds support to rebase to show the changes in node once the rebase is complete. This will be extremely helpful for automation purposes and editors such as Nuclide. The output is a dictionary of predecessor hash as key and a list of successors' hashes. The successors one is a list as there can be many successors for a single predecessor in case of split and it will good to have a generic output format. This patch adds tests for the same. A new file is created for the patch as existing files related to rebase has their own purpose and there will be more formatter support coming for rebase in next cycle. Thanks to Jun for suggesting to use fm.data(). Differential Revision: https://phab.mercurial-scm.org/D1173
-
Saurabh Singh authored
Since the ui objects can be created with the 'load' class method, it is possible to lose the exit handlers information from the old ui instance. For example, running 'test-bad-extension.t' leads to this situation where chg creates a new ui instance which does not copy the exit handlers from the earlier ui instance. For exit handlers, which are special cases anyways, it probably makes sense to have a global state of the handlers. This would ensure that the exit handlers registered once are definitely executed at the end of the request. Test Plan: Ran all the tests without '--chg' option. This also fixes the 'test-bad-extension.t' with the '--chg' option. Differential Revision: https://phab.mercurial-scm.org/D1166
-
- Oct 18, 2017
-
-
Paul Morelle authored
Splitting at too small gaps might not be worthwhile. With this changeset, we stop considering splitting on too small gaps. The threshold is configurable. We arbitrarily pick 256K as a default value because it seems "okay". Further testing on various repositories and setups will be needed to tune it. The option name is 'experimental.sparse-read.min-gap-size`, and replaces `experimental.sparse-read.min-block-size` which is not used any more.
-
Boris Feld authored
The previous recursive approach was trying to optimise each read slice to have a good density. It had the tendency to over-optimize smaller slices while leaving larger hole in others. The new approach focuses on improving the combined density of all the reads, instead of the individual slices. It slices at the largest gaps first, as they reduce the total amount of read data the most efficiently. Another benefit of this approach is that we iterate over the delta chain only once, reducing the overhead of slicing long delta chains. On the repository we use for tests, the new approach shows similar or faster performance than the current default linear full read. The repository contains about 450,000 revisions with many concurrent topological branches. Tests have been run on two versions of the repository: one built with the current delta constraint, and the other with an unlimited delta span (using 'experimental.maxdeltachainspan=0') Below are timings for building 1% of all the revision in the manifest log using 'hg perfrevlogrevisions -m'. Times are given in seconds. They include the new couple of follow-up changeset in this series. delta-span standard unlimited linear-read 922s 632s sparse-read 814s 566s
-
Matt Harbison authored
I think there's a slight hole here in that a subrepo could be shared, removed from .hgsub, and then it's not part of context.substate (so not iterated over). But the push command has the same hole IIRC, and I think removing a subrepo is an edge case. The import hack is a copy/paste of subrepo.subrepo().
-
Matt Harbison authored
This will be used to setup unsharing subrepos. Usually cmdutil is used for this purpose. But the implementation needs hg.copystore(), and the hg module already imports cmdutil.
-
- Oct 17, 2017
-
-
Denis Laxalde authored
By reusing labelcset() template alias from map-cmdline.default we can now display obsolescence information in `hg show work/stack`.
-
- Oct 18, 2017
-
-
Kevin Bullock authored
-
Boris Feld authored
-
Boris Feld authored
Before this changesets, a literal '.*:foo$' config would match a registered '.*:foo$' generic. This is wrong since generic should be matched through regular exception only. This changeset fixes this problem. Thanks for to Yuya Nishihara for spotting the issue.
-
Boris Feld authored
When the list of dates is empty, `min` and `max` would raises a ValueError. Protect against this case by checking that the date list is not empty. I didn't add a test because I couldn't find a reproducing test case.
-
- Oct 17, 2017
-
-
Boris Feld authored
Grouping all evolution related-config under the experimental.evolution namespace would helps the future migration outside [experimental]. Differential Revision: https://phab.mercurial-scm.org/D1155
-
Boris Feld authored
Stabilization config items were never part of a release, remove them now that we cleaned up the evolution related configuration. Differential Revision: https://phab.mercurial-scm.org/D1154
-
Boris Feld authored
We want to get rid of stabilization.* configuration, back out to the old configuration 'evolution.track-operation'. Differential Revision: https://phab.mercurial-scm.org/D1153
-
Boris Feld authored
We want to get rid of stabilization.* configuration, back out to the old configuration 'evolution.bundle-obsmarker'. Differential Revision: https://phab.mercurial-scm.org/D1152
-
- Sep 28, 2017
-
-
Boris Feld authored
Extract 'experimental.evolution' = exchange as 'experimental.evolution.exchange'. We keep the new option in the 'experimental.evolution' namespace in order to stay coherent with other options ('experimental.evolution.bundle-obsmarker' and 'experimental.evolution.track-operation') ease the renaming as possibly 'evolution.exchange'. Differential Revision: https://phab.mercurial-scm.org/D1151
-
Boris Feld authored
Extract 'experimental.evolution' = allowunstable as 'experimental.evolution.allowunstable'. We keep the new option in the 'experimental.evolution' namespace in order to stay coherent with other options ('experimental.evolution.bundle-obsmarker' and 'experimental.evolution.track-operation') ease the renaming as possibly 'evolution.allowunstable'. Differential Revision: https://phab.mercurial-scm.org/D1150
-
Boris Feld authored
Extract 'experimental.evolution' = createmarkers as 'experimental.evolution.createmarkers'. We keep the new option in the 'experimental.evolution' namespace in order to stay coherent with other options ('experimental.evolution.bundle-obsmarker' and 'experimental.evolution.track-operation') ease the renaming as possibly 'evolution.createmarkers'. Differential Revision: https://phab.mercurial-scm.org/D1149
-
- Oct 17, 2017
-
-
Boris Feld authored
We replace 'experimental.stabilization=all' by 'experimental.evolution=true' as we will extract individual config in their own config in later patches. Differential Revision: https://phab.mercurial-scm.org/D1148
-
- Oct 16, 2017
-
-
Boris Feld authored
Update the evolution helpers function to support both old-style configuration and new-style configuration: experimental.evolution=all is renamed into experimental.evolution=true experimental.evolution=createmarkers is renamed into experimental.evolution.createmarkers=true experimental.evolution=allowunstable is renamed into experimental.evolution.allowunstable=true experimental.evolution=exchange is renamed into experimental.evolution.exchange=true We choose to not rename individual config options; keeping the same names would easy the transition for users but it's something that could be easily done in the future. Differential Revision: https://phab.mercurial-scm.org/D1147
-
Boris Feld authored
We want to split the evolution-related configuration and back-out the renaming from evolution.* to stabilization.*. First invert the configuration and aliases, so next changesets will be cleaner. Differential Revision: https://phab.mercurial-scm.org/D1146
-
Augie Fackler authored
# skip-blame because parsers.c is mechanically rewritten by clang-format with no semantic change. Differential Revision: https://phab.mercurial-scm.org/D1170
-