##// END OF EJS Templates
setdiscovery: make progress on most connected groups each roundtrip...
setdiscovery: make progress on most connected groups each roundtrip Consider history like this: o | o | | | o | | | o |/ o | o | | | o | | | o |/ o | o | | | o | | | o |/ o ~ Assume the left mainline is available in the remote repo and the other commits are only in the local repo. Also imagine that instead of 3 local branches with 3 commits on each, there are 1000 branches (the number of commits on each doesn't matter much here). In such a scenario, the current setdiscovery code will pick a sample size of 200 among these branches and ask the remote which of them it has. However, the discovery for each such branch is completely independent of the discovery for the others -- knowing whether the remote has a commit in one branch doesn't give us any information about the other branches. The discovery will therefore take at least 5 roundtrips (maybe more depending on which commit in each linear chain was sampled). Since the discovery for each branch is independent, there is no reason to let one branch wait for another, so this patch makes it so we sample at least as many commits as there are branches. It may still happen (it's very likely, even) that we get multiple samples from one branch and none from another, but that will even out over a few rounds and I think this is still a big improvement. Because of http header size limits, we still use the old behavior unless experimental.httppostargs=true. I've timed this by running `hg debugdiscovery mozilla-unified --debug` in the mozilla-try repo. Both repos were local. Before this patch, last part of the output was: 2249 total queries in 5276.4859s elapsed time: 5276.652634 seconds heads summary: total common heads: 13 also local heads: 4 also remote heads: 8 both: 4 local heads: 28317 common: 4 missing: 28313 remote heads: 12 common: 8 unknown: 4 local changesets: 2014901 common: 530373 missing: 1484528 common heads: 1dad417c28ad 4a108e94d3e2 4d7ef530fffb 5350524bb654 777e60ca8853 7d97fafba271 9cd2ab4d0029 a55ce37217da d38398e5144e dcc6d7a0dc00 e09297892ada e24ec6070d7b fd559328eaf3 After this patch, the output was (including all the samples, since there were so few now): taking initial sample query 2; still undecided: 1599476, sample size is: 108195 sampling from both directions query 3; still undecided: 810922, sample size is: 194158 sampling from both directions query 4; still undecided: 325882, sample size is: 137302 sampling from both directions query 5; still undecided: 111459, sample size is: 74586 sampling from both directions query 6; still undecided: 26805, sample size is: 23960 sampling from both directions query 7; still undecided: 2549, sample size is: 2528 sampling from both directions query 8; still undecided: 21, sample size is: 21 8 total queries in 24.5064s elapsed time: 24.670051 seconds heads summary: total common heads: 13 also local heads: 4 also remote heads: 8 both: 4 local heads: 28317 common: 4 missing: 28313 remote heads: 12 common: 8 unknown: 4 local changesets: 2014901 common: 530373 missing: 1484528 common heads: 1dad417c28ad 4a108e94d3e2 4d7ef530fffb 5350524bb654 777e60ca8853 7d97fafba271 9cd2ab4d0029 a55ce37217da d38398e5144e dcc6d7a0dc00 e09297892ada e24ec6070d7b fd559328eaf3 Differential Revision: https://phab.mercurial-scm.org/D2647

File last commit:

r35187:aef2b98d merge default
r42594:5b34972a default
Show More
environment.txt
121 lines | 4.2 KiB | text/plain | TextLexer
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 HG
Path to the 'hg' executable, automatically passed when running
hooks, extensions or external tools. If unset or empty, this is
the hg executable's name if it's frozen, or an executable named
'hg' (with %PATHEXT% [defaulting to COM/EXE/BAT/CMD] extensions on
Windows) is searched.
HGEDITOR
This is the name of the editor to run when committing. See EDITOR.
Matt Harbison
help: call out specific replacement configuration settings...
r32140 (deprecated, see :hg:`help config.ui.editor`)
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999
HGENCODING
This overrides the default locale setting detected by Mercurial.
This setting is used to convert data including usernames,
changeset descriptions, tag names, and branches. This setting can
be overridden with the --encoding command-line option.
HGENCODINGMODE
This sets Mercurial's behavior for handling unknown characters
while transcoding user input. The default is "strict", which
causes Mercurial to abort if it can't map a character. Other
settings include "replace", which replaces unknown characters, and
"ignore", which drops them. This setting can be overridden with
the --encodingmode command-line option.
Matt Mackall
encoding: default ambiguous character to narrow...
r12866 HGENCODINGAMBIGUOUS
This sets Mercurial's behavior for handling characters with
"ambiguous" widths like accented Latin characters with East Asian
fonts. By default, Mercurial assumes ambiguous characters are
narrow, set this variable to "wide" if such characters cause
formatting problems.
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 HGMERGE
An executable to use for resolving merge conflicts. The program
will be executed with three arguments: local file, remote file,
ancestor file.
Matt Harbison
help: call out specific replacement configuration settings...
r32140 (deprecated, see :hg:`help config.ui.merge`)
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999
HGRCPATH
Brodie Rao
help: refer to user configuration file more consistently...
r12083 A list of files or directories to search for configuration
files. Item separator is ":" on Unix, ";" on Windows. If HGRCPATH
is not set, platform default search path is used. If empty, only
the .hg/hgrc from the current repository is read.
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999
For each element in HGRCPATH:
- if it's a directory, all files ending with .rc are added
- otherwise, the file itself will be added
Brodie Rao
ui: add HGPLAIN environment variable for easier scripting...
r10455 HGPLAIN
Brodie Rao
help: refer to user configuration file more consistently...
r12083 When set, this disables any configuration settings that might
change Mercurial's default output. This includes encoding,
defaults, verbose mode, debug mode, quiet mode, tracebacks, and
Brodie Rao
ui: add HGPLAIN environment variable for easier scripting...
r10455 localization. This can be useful when scripting against Mercurial
in the face of existing user configuration.
Yuya Nishihara
dispatch: add HGPLAIN=+strictflags to restrict early parsing of global options...
r35180 In addition to the features disabled by ``HGPLAIN=``, the following
values can be specified to adjust behavior:
``+strictflags``
Restrict parsing of command line flags.
Brodie Rao
ui: add HGPLAIN environment variable for easier scripting...
r10455 Equivalent options set via command line flags or environment
variables are not overridden.
Yuya Nishihara
dispatch: add HGPLAIN=+strictflags to restrict early parsing of global options...
r35180 See :hg:`help scripting` for details.
Brodie Rao
HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT...
r13849 HGPLAINEXCEPT
This is a comma-separated list of features to preserve when
Yuya Nishihara
help: mention alias and revsetalias in description of HGPLAINEXCEPT
r26827 HGPLAIN is enabled. Currently the following values are supported:
``alias``
Don't remove aliases.
Augie Fackler
color: respect HGPLAINEXCEPT=color to allow colors while scripting (issue5749)...
r35176 ``color``
Don't disable colored output.
Yuya Nishihara
help: mention alias and revsetalias in description of HGPLAINEXCEPT
r26827 ``i18n``
Preserve internationalization.
``revsetalias``
Don't remove revset aliases.
Yuya Nishihara
ui: drop template aliases by HGPLAIN...
r28958 ``templatealias``
Don't remove template aliases.
Matt Anderson
progress: display progress bar when HGPLAINEXCEPT contains "progress"...
r28171 ``progress``
Don't hide progress output.
Brodie Rao
HGPLAIN: allow exceptions to plain mode, like i18n, via HGPLAINEXCEPT...
r13849
Setting HGPLAINEXCEPT to anything (even an empty string) will
enable plain mode.
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 HGUSER
This is the string used as the author of a commit. If not set,
available values will be considered in this order:
- HGUSER (deprecated)
Brodie Rao
help: refer to user configuration file more consistently...
r12083 - configuration files from the HGRCPATH
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 - EMAIL
- interactive prompt
- LOGNAME (with ``@hostname`` appended)
Matt Harbison
help: call out specific replacement configuration settings...
r32140 (deprecated, see :hg:`help config.ui.username`)
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999
EMAIL
May be used as the author of a commit; see HGUSER.
LOGNAME
May be used as the author of a commit; see HGUSER.
VISUAL
This is the name of the editor to use when committing. See EDITOR.
EDITOR
Sometimes Mercurial needs to open a text file in an editor for a
user to modify, for example when writing commit messages. The
editor it uses is determined by looking at the environment
variables HGEDITOR, VISUAL and EDITOR, in that order. The first
non-empty one is chosen. If all of them are empty, the editor
defaults to 'vi'.
PYTHONPATH
This is used by Python to find imported modules and may need to be
set appropriately if this Mercurial is not installed system-wide.