Tue, 04 Sep 2018 13:29:21 +0900 revlog: fix size of Python nodetree object
Yuya Nishihara <yuya@tcha.org> [Tue, 04 Sep 2018 13:29:21 +0900] rev 39415
revlog: fix size of Python nodetree object Follows up 9f097214fbf3.
Mon, 03 Sep 2018 23:03:19 +0900 revert: stabilize status message of chunks selected interactively
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Sep 2018 23:03:19 +0900] rev 39414
revert: stabilize status message of chunks selected interactively Unfortunately, patch.filterpatch() doesn't preserve the order of the input files. We have to sort them manually.
Wed, 29 Aug 2018 14:29:01 -0700 cborutil: add a buffering decoder
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 29 Aug 2018 14:29:01 -0700] rev 39413
cborutil: add a buffering decoder The sansiodecoder leaves it up to the callers to feed in data that wasn't fully consumed last time. This commit implements a decoder that performs buffering of leftover chunks from the previous invocation. It otherwise behaves identically to sansiodecoder. Differential Revision: https://phab.mercurial-scm.org/D4434
Fri, 31 Aug 2018 15:54:17 -0700 cborutil: remove readindefinitebytestringtoiter()
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 31 Aug 2018 15:54:17 -0700] rev 39412
cborutil: remove readindefinitebytestringtoiter() This was implemented as part of implementing streaming encoding. It was never used outside of tests. Now that we have a full CBOR decoder, it can be used for incremental decoding of indefinite-length byte strings. This also removes the last use of the vendored cbor2 package from this module. Differential Revision: https://phab.mercurial-scm.org/D4433
Tue, 28 Aug 2018 15:02:48 -0700 cborutil: implement sans I/O decoder
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 28 Aug 2018 15:02:48 -0700] rev 39411
cborutil: implement sans I/O decoder The vendored CBOR package decodes by calling read(n) on an object. There are a number of disadvantages to this: * Uses blocking I/O. If sufficient data is not available, the decoder will hang until it is. * No support for partial reads. If the read(n) returns less data than requested, the decoder raises an error. * Requires the use of a file like object. If the original data is in say a buffer, we need to "cast" it to e.g. a BytesIO to appease the decoder. In addition, the vendored CBOR decoder doesn't provide flexibility that we desire. Specifically: * It buffers indefinite length bytestrings instead of streaming them. * It doesn't allow limiting the set of types that can be decoded. This property is useful when implementing a "hardened" decoder that is less susceptible to abusive input. * It doesn't provide sufficient "hook points" and introspection to institute checks around behavior. These are useful for implementing a "hardened" decoder. This all adds up to a reasonable set of justifications for writing our own decoder. So, this commit implements our own CBOR decoder. At the heart of the decoder is a function that decodes a single "item" from a buffer. This item can be a complete simple value or a special value, such as "start of array." Using this function, we can build a decoder that effectively iterates over the stream of decoded items and builds up higher-level values, such as arrays, maps, sets, and indefinite length bytestrings. And we can do this without performing I/O in the decoder itself. The core of the sans I/O decoder will probably not be used directly. Instead, it is expected that we'll build utility functions for invoking the decoder given specific input types. This will allow extreme flexibility in how data is delivered to the decoder. I'm pretty happy with the state of the decoder modulo the TODO items to track wanted features to help with a "hardened" decoder. The one thing I could be convinced to change is the handling of semantic tags. Since we only support a single semantic tag (sets), I thought it would be easier to handle them inline in decodeitem(). This is simpler now. But if we add support for other semantic tags, it will likely be easier to move semantic tag handling outside of decodeitem(). But, properly supporting semantic tags opens up a whole can of worms, as many semantic tags imply new types. I'm optimistic we won't need these in Mercurial. But who knows. I'm also pretty happy with the test coverage. Writing comprehensive tests for partial decoding did flush out a handful of bugs. One general improvement to testing would be fuzz testing for partial decoding. I may implement that later. I also anticipate switching the wire protocol code to this new decoder will flush out any lingering bugs. Differential Revision: https://phab.mercurial-scm.org/D4414
Tue, 28 Aug 2018 15:22:06 -0700 tests: remove use of string in CBOR test
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 28 Aug 2018 15:22:06 -0700] rev 39410
tests: remove use of string in CBOR test We don't use the CBOR string major type in the wire protocol. Let's not test for it. Differential Revision: https://phab.mercurial-scm.org/D4413
Tue, 28 Aug 2018 20:27:36 -0700 internals: document CBOR utilization
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 28 Aug 2018 20:27:36 -0700] rev 39409
internals: document CBOR utilization I spoke with some people at Mozilla about CBOR and they advised me that we should be careful about the subset of CBOR we use in order to mitigate security, performance, and compatibility concerns. This commit establishes a document that attempts to formalize our use of CBOR. Its main limitations are on what types are allowed. It explicitly enumerates which types are supported. Notable missing features include: * Indefinite-length arrays and maps * Text strings (bytes all the way) * Floats * Date/time types * Big integers * Use of indefinite-length byte strings for map keys, values in containers. If we have a need for any of these, we can have a discussion about them when the time comes. Differential Revision: https://phab.mercurial-scm.org/D4412
Mon, 03 Sep 2018 13:56:53 +0300 py3: add new passing test to whitelist found by buildbot
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 03 Sep 2018 13:56:53 +0300] rev 39408
py3: add new passing test to whitelist found by buildbot Differential Revision: https://phab.mercurial-scm.org/D4451
Mon, 03 Sep 2018 13:53:30 +0300 py3: alias xrange to range in tests/test-fastannotate-revmap.py
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 03 Sep 2018 13:53:30 +0300] rev 39407
py3: alias xrange to range in tests/test-fastannotate-revmap.py xrange is not available on Python 3. Differential Revision: https://phab.mercurial-scm.org/D4450
Mon, 03 Sep 2018 13:52:49 +0300 py3: add r'' prefix to prevent b'' being prepended
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 03 Sep 2018 13:52:49 +0300] rev 39406
py3: add r'' prefix to prevent b'' being prepended The keys of keyword arguments should be str. # skip-blame because we are adding just r'' prefixes. Differential Revision: https://phab.mercurial-scm.org/D4449
Fri, 31 Aug 2018 23:28:09 +0530 revert: fix the inconsistency of status msgs in --interactive mode
Sushil khanchi <sushilkhanchi97@gmail.com> [Fri, 31 Aug 2018 23:28:09 +0530] rev 39405
revert: fix the inconsistency of status msgs in --interactive mode Before this patch we were priting every action msg before actually performing that action and that was resulting in inconsistencies; like in --interactive session if user decided to not revert any changes in a file foo, still there will be a msg on console saying "reverting foo". To fix this, I have made some changes to print status msg just before the action it is going to perform, no matter if --interactive or not. Changes made in test-revert-interactive.t reflect the changed behavior. There are also some changes in test-revert.t because of change in the order of messages. Differential Revision: https://phab.mercurial-scm.org/D4380
Mon, 03 Sep 2018 10:44:52 +0530 revert: remove unnecessary check as `msg` should never be a callable now
Sushil khanchi <sushilkhanchi97@gmail.com> [Mon, 03 Sep 2018 10:44:52 +0530] rev 39404
revert: remove unnecessary check as `msg` should never be a callable now Differential Revision: https://phab.mercurial-scm.org/D4448
Sun, 02 Sep 2018 16:32:11 +0900 run-tests: drop support for --with-python3 and $PYTHON3
Yuya Nishihara <yuya@tcha.org> [Sun, 02 Sep 2018 16:32:11 +0900] rev 39403
run-tests: drop support for --with-python3 and $PYTHON3 This backs out cdbc25306696. We can run many tests on python3 without this hack.
Sun, 02 Sep 2018 16:26:33 +0900 test-check-py3-compat: don't run py3 part if not build against python3
Yuya Nishihara <yuya@tcha.org> [Sun, 02 Sep 2018 16:26:33 +0900] rev 39402
test-check-py3-compat: don't run py3 part if not build against python3 This test depends on C extensions built for python3, which aren't available if run-tests.py runs on python2 and no -l/--local is specified.
Sun, 02 Sep 2018 16:23:34 +0900 test-check-py3-compat: don't run py2 part if $PYTHON is python3
Yuya Nishihara <yuya@tcha.org> [Sun, 02 Sep 2018 16:23:34 +0900] rev 39401
test-check-py3-compat: don't run py2 part if $PYTHON is python3
Sat, 01 Sep 2018 18:00:38 -0400 resolve: test that we suggest a valid hg command
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Sat, 01 Sep 2018 18:00:38 -0400] rev 39400
resolve: test that we suggest a valid hg command Differential Revision: https://phab.mercurial-scm.org/D4447
Sun, 02 Sep 2018 08:40:57 +0800 bash_completion: complete arguments for --color and --pager
Anton Shestakov <av6@dwimlabs.net> [Sun, 02 Sep 2018 08:40:57 +0800] rev 39399
bash_completion: complete arguments for --color and --pager
Sun, 02 Sep 2018 08:39:17 +0800 bash_completion: add more global options that receive an argument
Anton Shestakov <av6@dwimlabs.net> [Sun, 02 Sep 2018 08:39:17 +0800] rev 39398
bash_completion: add more global options that receive an argument
Sat, 01 Sep 2018 11:33:17 -0400 tracing: ignore any IOErrors when writing to pipe
Augie Fackler <augie@google.com> [Sat, 01 Sep 2018 11:33:17 -0400] rev 39397
tracing: ignore any IOErrors when writing to pipe When the pager forks off the main process, we can end up with the pipe closed prematurely. Rather than break hg entirely when that happens and tracing is active, just let lingering events disappear as needed. Differential Revision: https://phab.mercurial-scm.org/D4445
Sat, 01 Sep 2018 11:06:47 -0400 tests: avoid shellquoting bytes on Python 3
Augie Fackler <augie@google.com> [Sat, 01 Sep 2018 11:06:47 -0400] rev 39396
tests: avoid shellquoting bytes on Python 3 Should fix Python 3 builder. Differential Revision: https://phab.mercurial-scm.org/D4444
Sat, 01 Sep 2018 17:37:52 -0400 resolve: ui.config -> ui.configbool, for better validation
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Sat, 01 Sep 2018 17:37:52 -0400] rev 39395
resolve: ui.config -> ui.configbool, for better validation Differential Revision: https://phab.mercurial-scm.org/D4446
Wed, 22 Aug 2018 09:12:22 +0800 zsh_completion: handle --rev as well as -r for diff and revert
Anton Shestakov <av6@dwimlabs.net> [Wed, 22 Aug 2018 09:12:22 +0800] rev 39394
zsh_completion: handle --rev as well as -r for diff and revert Completion for hg diff and revert should suggest all files in context of a non-current revision. The script used to look only for `-r foo`, and now it also understands `--rev foo`. Differential Revision: https://phab.mercurial-scm.org/D4427
Sun, 26 Aug 2018 16:42:28 -0400 resolve: add config to make hg resolve not re-merge by default
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Sun, 26 Aug 2018 16:42:28 -0400] rev 39393
resolve: add config to make hg resolve not re-merge by default Before this, calling 'hg resolve' with neither -m, -u or -l will re-merge. This is highly error prone (it's easy to forget to forget a -m), and pretty bad when it happens (many people have no idea 'hg resolve' can re-merge, and end up redoing the work of resolving all the conflicts, because they have no idea there was a backup of their work). Differential Revision: https://phab.mercurial-scm.org/D4379
Sun, 26 Aug 2018 15:52:34 -0400 resolve: add a flag for the default behavior of re-merging
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Sun, 26 Aug 2018 15:52:34 -0400] rev 39392
resolve: add a flag for the default behavior of re-merging On its own, it's not useful, but the next commit will add an hgrc config option to make it mandatory. There is no short option, as -r almost always means --rev and this option doesn't seem like it would be so common as to mandate a short option. Differential Revision: https://phab.mercurial-scm.org/D4378
Sat, 01 Sep 2018 02:01:55 -0400 tests: conditionalize narrow-widen error output for Windows
Matt Harbison <matt_harbison@yahoo.com> [Sat, 01 Sep 2018 02:01:55 -0400] rev 39391
tests: conditionalize narrow-widen error output for Windows
Sat, 25 Aug 2018 13:09:24 -0400 largefiles: use a context manager to control the progress bar lifetime
Matt Harbison <matt_harbison@yahoo.com> [Sat, 25 Aug 2018 13:09:24 -0400] rev 39390
largefiles: use a context manager to control the progress bar lifetime
Sat, 25 Aug 2018 12:41:58 -0400 lfs: use a context manager to control the progress bar lifetime
Matt Harbison <matt_harbison@yahoo.com> [Sat, 25 Aug 2018 12:41:58 -0400] rev 39389
lfs: use a context manager to control the progress bar lifetime
Sat, 25 Aug 2018 12:26:44 -0400 hg: ensure the progress bar is completed when copying the store
Matt Harbison <matt_harbison@yahoo.com> [Sat, 25 Aug 2018 12:26:44 -0400] rev 39388
hg: ensure the progress bar is completed when copying the store This is just a block indent under the context manager.
Fri, 31 Aug 2018 21:10:28 +0900 shelve: fix crash on unshelve without .shelve metadata file
Yuya Nishihara <yuya@tcha.org> [Fri, 31 Aug 2018 21:10:28 +0900] rev 39387
shelve: fix crash on unshelve without .shelve metadata file Follow up for c67c94c0e7ae and 38373da1af02. The inline comment says "we should keep track of the unshelve node in case we need to reuse it." Perhaps such case isn't tested, and this patch does NOT add a test for the reuse of the unbundled revision. Also, I have no idea what should be done if new revision is unbundled because of "node not in repo".
Sat, 01 Sep 2018 10:40:48 +0900 fastannotate: use stringutil.pprint() to dump diffopts to be hashed
Yuya Nishihara <yuya@tcha.org> [Sat, 01 Sep 2018 10:40:48 +0900] rev 39386
fastannotate: use stringutil.pprint() to dump diffopts to be hashed
Sat, 01 Sep 2018 10:23:13 +0900 test-check-py3-compat: update "python3 check-py3-compat.py" output
Yuya Nishihara <yuya@tcha.org> [Sat, 01 Sep 2018 10:23:13 +0900] rev 39385
test-check-py3-compat: update "python3 check-py3-compat.py" output
Sat, 01 Sep 2018 10:13:48 +0900 test-check-py3-compat: exclude thirdparty and cffi which are known to fail
Yuya Nishihara <yuya@tcha.org> [Sat, 01 Sep 2018 10:13:48 +0900] rev 39384
test-check-py3-compat: exclude thirdparty and cffi which are known to fail Otherwise the following errors would be spilled out: mercurial/cffi/bdiff.py: error importing: <ImportError> cannot import name '_bdiff' (error at bdiff.py:*) mercurial/cffi/bdiffbuild.py: error importing: <ModuleNotFoundError> No module named 'cffi' (error at bdiffbuild.py:*) mercurial/cffi/mpatch.py: error importing: <ImportError> cannot import name '_mpatch' (error at mpatch.py:*) mercurial/cffi/mpatchbuild.py: error importing: <ModuleNotFoundError> No module named 'cffi' (error at mpatchbuild.py:*) mercurial/cffi/osutilbuild.py: error importing: <ModuleNotFoundError> No module named 'cffi' (error at osutilbuild.py:*) mercurial/thirdparty/concurrent/futures/_base.py: invalid syntax: invalid syntax (<unknown>, line *) mercurial/thirdparty/concurrent/futures/process.py: error importing: <SyntaxError> invalid syntax (_base.py, line 416) (error at __init__.py:*) mercurial/thirdparty/concurrent/futures/thread.py: error importing: <SyntaxError> invalid syntax (_base.py, line 416) (error at __init__.py:*) mercurial/thirdparty/zope/interface/_flatten.py: error importing: <ImportError> cannot import name 'Declaration' (error at _flatten.py:*) Some of them can be suppressed by building cffi modules for example, but I don't think it's worth keeping these modules covered by the compatibility checker.
Sat, 01 Sep 2018 10:18:38 +0900 test-check-py3-compat: remove false output from "python3 check-py3-compat.py"
Yuya Nishihara <yuya@tcha.org> [Sat, 01 Sep 2018 10:18:38 +0900] rev 39383
test-check-py3-compat: remove false output from "python3 check-py3-compat.py" If python3 were python2, these errors would be reported, but we're running check-py3-compat.py on Python 3 here.
Wed, 01 Aug 2018 08:52:55 +0200 test: add a test file that displays ssh behavior in front of various errors
Boris Feld <boris.feld@octobus.net> [Wed, 01 Aug 2018 08:52:55 +0200] rev 39382
test: add a test file that displays ssh behavior in front of various errors Prior to changeset ac0a87160012, these errors were suboptimal since they claim the repository is missing while the actual issue was about permission. This extra test file provides additional documented coverage for the various corner cases.
Sat, 01 Sep 2018 00:40:26 +0530 tests: update test-casefolding.t with recent changes
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 01 Sep 2018 00:40:26 +0530] rev 39381
tests: update test-casefolding.t with recent changes This is caught by the mac-buildbot. This was not found initially because this test requires a case insensitive filesystem. I have edited the test file by hand and I suggest to test this on such a system before pushing. Differential Revision: https://phab.mercurial-scm.org/D4430
Sat, 01 Sep 2018 02:16:22 +0530 py3: don't use dict.iterkeys() in hgext/fastannotate/context.py
Pulkit Goyal <pulkit@yandex-team.ru> [Sat, 01 Sep 2018 02:16:22 +0530] rev 39380
py3: don't use dict.iterkeys() in hgext/fastannotate/context.py dict.iterkeys() is not present on Python 3. Differential Revision: https://phab.mercurial-scm.org/D4431
Wed, 29 Aug 2018 23:39:58 -0400 run-tests: replace '/dev/null' with os.devnull for Windows
Matt Harbison <matt_harbison@yahoo.com> [Wed, 29 Aug 2018 23:39:58 -0400] rev 39379
run-tests: replace '/dev/null' with os.devnull for Windows Many of the *.py tests were dying on: File "c:\Users\Matt\projects\hg\hgdemandimport\tracing.py", line 27, in log _pipe = open(os.environ['HGCATAPULTSERVERPIPE'], 'w', 1) IOError: [Errno 2] $ENOENT$: '/dev/null'
Mon, 27 Aug 2018 09:13:58 -0700 stringutil: teach pprint() to indent
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 27 Aug 2018 09:13:58 -0700] rev 39378
stringutil: teach pprint() to indent This will make data structure dumping in various places a bit easier to read and diff. Since I wanted this for `hg debugwireproto` output, I added indentation to it. A more advanced pretty printer implementation would conditionally add newlines if output is too long. But it is vastly simpler to be consistent and always add newlines when indenting. Again, I'm not crazy about the verbosity of the code and there is room to consolidate logic for "print a collection." But this isn't the most complicated code in the world and I'm not convinced it is worth doing. Differential Revision: https://phab.mercurial-scm.org/D4399
Wed, 22 Aug 2018 08:20:51 +0800 zsh_completion: complete merge tools for -t/--tool
Anton Shestakov <av6@dwimlabs.net> [Wed, 22 Aug 2018 08:20:51 +0800] rev 39377
zsh_completion: complete merge tools for -t/--tool Differential Revision: https://phab.mercurial-scm.org/D4362
Wed, 06 Jun 2018 01:46:37 +0200 shelve: add an "internal" extra
Boris Feld <boris.feld@octobus.net> [Wed, 06 Jun 2018 01:46:37 +0200] rev 39376
shelve: add an "internal" extra Keeping shelve changeset around increase the risk of collision with normal changesets. To prevent such collision and help with overall clarity, we add an 'internal' key in extra that mark the changeset as created by "shelve". Node changes in tests are expected.
Wed, 06 Jun 2018 01:10:01 +0200 shelve: write metadata file on the fly if they are missing
Boris Feld <boris.feld@octobus.net> [Wed, 06 Jun 2018 01:10:01 +0200] rev 39375
shelve: write metadata file on the fly if they are missing Keeping an explicit reference to the shelve node in order to reuse it directly if the unshelved is repeated (eg: unshelve --keep).
Wed, 06 Jun 2018 00:57:22 +0200 shelve: look for shelved node in the repository before unbundling
Boris Feld <boris.feld@octobus.net> [Wed, 06 Jun 2018 00:57:22 +0200] rev 39374
shelve: look for shelved node in the repository before unbundling This prepares the version of shelve that would not strip the shelved node from the repository. If we have the node information, search for it in the repository and only fallback on unbundling if it is missing. To be able to find such nodes, we operate on an unfiltered repository.
Wed, 06 Jun 2018 01:03:10 +0200 shelve: handle shelved node on unfiltered repository
Boris Feld <boris.feld@octobus.net> [Wed, 06 Jun 2018 01:03:10 +0200] rev 39373
shelve: handle shelved node on unfiltered repository To build a version of shelve that use hiding instead of stripping, we need shelve to be able to find these revisions. This it does not hurt the bundle version, so we introduce the necessary code in the relevant place.
Tue, 29 May 2018 11:47:32 +0200 shelve: store shelved node in a new data file
Boris Feld <boris.feld@octobus.net> [Tue, 29 May 2018 11:47:32 +0200] rev 39372
shelve: store shelved node in a new data file It is useful for a version of shelve not based on bundle and strip. Having more data does not hurt the bundle based case so we introduce it in all cases before doing more rework. We also keep storing the patch using another method. note: We could have this metadata file list all the file involved in the shelve and use that for cleanup. This would be more future proof than having a hard-coded list of file to purge. However, this is an adventure for another series.
Sun, 05 Aug 2018 16:33:30 +0900 templatekw: add {path} keyword to host documentation
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Aug 2018 16:33:30 +0900] rev 39371
templatekw: add {path} keyword to host documentation It's hidden since I'm not sure if filectx templates can be a thing. The plan is to add {status}, {size}, etc., which are usable within {files % ...} context.
Sun, 05 Aug 2018 16:51:25 +0900 status: rename {copy} to {source} for compatibility with {file_copies} (BC)
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Aug 2018 16:51:25 +0900] rev 39370
status: rename {copy} to {source} for compatibility with {file_copies} (BC) .. bc:: ``{copy}`` in status command template is renamed to ``{source}``.
Sun, 05 Aug 2018 16:44:16 +0900 formatter: rename {abspath}/{file} to {path}, and drop relative {path} (BC)
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Aug 2018 16:44:16 +0900] rev 39369
formatter: rename {abspath}/{file} to {path}, and drop relative {path} (BC) Note that {path} in status is either relative-to-cwd or repository-absolute depending on the command argument and config knob, which can't be reproduced by using the {path|relpath} filter. The default template is updated to always use a relative path. .. bc:: ``{abspath}`` and ``{file}`` in generic templates are renamed to ``{path}``. Any ``{path}`` is a repository-absolute path. Use ``{path|relpath}`` to convert it to a filesystem path.
Sun, 05 Aug 2018 16:27:09 +0900 templatekw: alias {name} of file copies dict to {path}
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Aug 2018 16:27:09 +0900] rev 39368
templatekw: alias {name} of file copies dict to {path} For the same reason as the previous patch. We might want some hack to support {source.path}, {source.rev}, etc., but that's a different issue.
Sun, 05 Aug 2018 16:14:18 +0900 templatekw: alias {file} of files list to {path}
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Aug 2018 16:14:18 +0900] rev 39367
templatekw: alias {file} of files list to {path} This is a part of the name unification. All {path}s will be changed to repository-absolute (i.e. canonical) paths. https://www.mercurial-scm.org/wiki/GenericTemplatingPlan#Dictionary
Wed, 29 Aug 2018 18:52:09 +0300 copies: improve logic of deciding copytracing on based of config options
Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 29 Aug 2018 18:52:09 +0300] rev 39366
copies: improve logic of deciding copytracing on based of config options Few months ago or maybe a year ago, I imported Fb's heuristics based copytracing algorithms. While importing that, I renamed `experimental.disablecopytrace` with `experimental.copytrace` and the behavior of the new config option was like this: * "heuristics" : Fb's heuristic copytracing algorithm * "off" : copytracing is turned off * something else: copytracing is on This is the behavior right now also and this is bad because it hardcodes the string 'off' to turn off the copytracing. On big repositories, copytracing is very slow and people wants to turn copytracing off. However if the user sets it to 'False', 'Off', '0', none of them is going to disbale copytracing while they should. I lacked the understanding of why this can be bad when I coded it. After this patch, the new behavior of the config option will be: * "heuristics": Fb's heuristic copytracing algorithm * '0', 'false', 'off', 'never', 'no', 'NO', all the values which repo.ui.configbool() evaluates to False: copytracing in turned off * something else: copytracing is on Since 'off' still evaluates to copytracing being turned off, this is not BC. Also the config option is experimental. Differential Revision: https://phab.mercurial-scm.org/D4416
Thu, 30 Aug 2018 13:29:03 +0300 relnotes: enable extension when running releasenotes command
Pulkit Goyal <pulkit@yandex-team.ru> [Thu, 30 Aug 2018 13:29:03 +0300] rev 39365
relnotes: enable extension when running releasenotes command Last night, when I was working on different machine, the test worked, now on a different machine it does not. Looks like we should make sure releasenotes extension is loaded. Differential Revision: https://phab.mercurial-scm.org/D4425
Thu, 30 Aug 2018 13:11:15 +0300 narrow: rename getbundlechangegrouppart_nonellipsis function
Pulkit Goyal <pulkit@yandex-team.ru> [Thu, 30 Aug 2018 13:11:15 +0300] rev 39364
narrow: rename getbundlechangegrouppart_nonellipsis function The function is renamed to getbundlechangegrouppart_widen as per suggestion in D4383. The motivation is such that we can evolve the function into a handler for new wire-protocol command. Differential Revision: https://phab.mercurial-scm.org/D4424
Thu, 30 Aug 2018 13:05:59 +0300 tests: rename test-narrow-widen-non-ellipsis to match current names
Pulkit Goyal <pulkit@yandex-team.ru> [Thu, 30 Aug 2018 13:05:59 +0300] rev 39363
tests: rename test-narrow-widen-non-ellipsis to match current names The test is renamed to test-narrow-widen-no-ellipsis (note non -> no), to match with test-narrow-clone-no-ellipsis.t. Follows up on D4382. Differential Revision: https://phab.mercurial-scm.org/D4423
Wed, 29 Aug 2018 20:38:38 +0300 contrib: byteify perf.py file
Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 29 Aug 2018 20:38:38 +0300] rev 39362
contrib: byteify perf.py file This is done using contrib/byteify-strings.py. There is just one extra change done to make sure lines don't get longer than 80 chars. # skip-blame because just b'' prefixes. Differential Revision: https://phab.mercurial-scm.org/D4422
Wed, 29 Aug 2018 16:57:18 -0700 tests: use {rev} instead of {node|short} and (glob) in narrow tests
Martin von Zweigbergk <martinvonz@google.com> [Wed, 29 Aug 2018 16:57:18 -0700] rev 39361
tests: use {rev} instead of {node|short} and (glob) in narrow tests I think we used {node|short} because they were first written for only flat manifests and we didn't think to change the format when we started testing tree manifests. Differential Revision: https://phab.mercurial-scm.org/D4421
Wed, 29 Aug 2018 15:49:11 -0700 shortest: fix an off-by-1 when disambiguating against revnums
Martin von Zweigbergk <martinvonz@google.com> [Wed, 29 Aug 2018 15:49:11 -0700] rev 39360
shortest: fix an off-by-1 when disambiguating against revnums Revision "5" is an unambiguous hex prefix in a repo with 5 revisions; it's only "4" and lower that are ambiguous. Differential Revision: https://phab.mercurial-scm.org/D4420
Wed, 29 Aug 2018 22:53:44 -0400 filemerge: fix an i18n comment typo
Matt Harbison <matt_harbison@yahoo.com> [Wed, 29 Aug 2018 22:53:44 -0400] rev 39359
filemerge: fix an i18n comment typo
Mon, 27 Aug 2018 14:08:18 +0300 tests: add flat manifest case in test-narrow-widen-non-ellipsis.t
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 27 Aug 2018 14:08:18 +0300] rev 39358
tests: add flat manifest case in test-narrow-widen-non-ellipsis.t We had this test with tree manifest only because the tests were broken and we were fixing them and maintaing two different cases of broken tests was bit hard. Now that things work fine, let's add the flat manifest case. The test shows that things work fine in both cases. Differential Revision: https://phab.mercurial-scm.org/D4385
Mon, 27 Aug 2018 14:02:48 +0300 narrow: update the narrowspecs to new ones after pulling when widening
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 27 Aug 2018 14:02:48 +0300] rev 39357
narrow: update the narrowspecs to new ones after pulling when widening The ellipsis case updates the new narrowspecs at bundle2 handling code, and non-ellipsis widening didn't use to work and never set the new narrowpats. Previous pacth added server side logic for widening without ellipsis. This patch adds the missing repo.setnarrowpats() so that we set the new narrowpats after widening in non-ellipsis cases also. This makes widening with non-ellipsis case work but there are certain things which we can improve. Differential Revision: https://phab.mercurial-scm.org/D4384
Sun, 26 Aug 2018 20:20:34 +0300 narrow: add server logic to send cg while widening without ellipsis
Pulkit Goyal <pulkit@yandex-team.ru> [Sun, 26 Aug 2018 20:20:34 +0300] rev 39356
narrow: add server logic to send cg while widening without ellipsis Before this patch, if you try to widen a narrow clone without ellipsis enabled, it will be broken and the exchange.pull() done by tracked command to widen the clone will be no-op because no custom logic exists for this and server sees that we have all csets and it says `no changes found`. The widening with ellipsis send KILL for existing changegroups and send new changegroups because of the change in ellipsis hash, but we can prevent that in non-ellipsis cases. This patch adds server side logic to send the changegroups for the changesets which are on the client again with filelogs and manifests for the new includes. This is a very starting implementation and we send changegroups and manifests too while we can prevent them. Following things can definitely be improved in the logic this patch adds: 1) Send just the filelogs and treemanifests 2) Send the filelogs only for the additions in the include I tried 1) here but the code is coupled tightly and the way I was able to do that was hacking into the changegroup generation code in a very dirty way, like adding conditionals and preventing the yield. This patch also adds a 'widen' kwarg to prevent other commands except widening to go through that codepath. The test changes demonstrate that the new implementation is correct and fixes things. Differential Revision: https://phab.mercurial-scm.org/D4383
(0) -30000 -10000 -3000 -1000 -300 -100 -60 +60 +100 +300 +1000 +3000 +10000 tip