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
Mon, 27 Aug 2018 13:30:08 +0300 tests: add test to show widening is broken without ellipsis
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 27 Aug 2018 13:30:08 +0300] rev 39355
tests: add test to show widening is broken without ellipsis This patch adds a test to show that widening a narrow clone is broken if ellipsis is disabled. I don't think I can add cases to existing test-narrow-widen.t and check-in a failing version of that. So I created a copy. Once the test is fixed, we can merge this new test file back into the original one using testcases. Also, this is just testing treemanifest case because having two cases and both or are failing with different outputs is a bit hard to manage. This is important because upcoming patches will try to fix the broken part. Differential Revision: https://phab.mercurial-scm.org/D4382
Mon, 27 Aug 2018 09:05:56 -0700 stringutil: emit multiple chunks when pretty printing
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 27 Aug 2018 09:05:56 -0700] rev 39354
stringutil: emit multiple chunks when pretty printing This avoids concatenating output inside pprintgen() itself. But the real reason for this is it will make it easier to add indentation, as we'll need to account for indentation when emitting each individual object in a collection. The verbosity of this code compared to the original is a bit unfortunate. But I suppose this is the price to pay for having nice things (streaming and indenting). We could probably abstract the "print a collection" bits into a generic function to avoid some duplication. But I'm not overly inclined to do this. Differential Revision: https://phab.mercurial-scm.org/D4398
Mon, 27 Aug 2018 09:02:39 -0700 stringutil: refactor core of pprint so it emits chunks
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 27 Aug 2018 09:02:39 -0700] rev 39353
stringutil: refactor core of pprint so it emits chunks This commit splits the core of pprint() to a new function that is a generator of chunks instead of a function returning a single value. This will make it possible to stream output without waiting for all data to be formatted first. And it will make it easier to implement support for indenting. Differential Revision: https://phab.mercurial-scm.org/D4397
Wed, 25 Jul 2018 13:28:36 -0400 contrib: import the relnotes script from the release-tools repo
Augie Fackler <augie@google.com> [Wed, 25 Jul 2018 13:28:36 -0400] rev 39352
contrib: import the relnotes script from the release-tools repo I figure this makes more sense to keep in the main repo, as it's a guide of sorts on how to use the releasenotes extension in the presence of commits that don't get relnotes annotations. Ported to Python 3, cleaned up some logic in a few places, but for the most part it's what we've been using for years. Differential Revision: https://phab.mercurial-scm.org/D4291
Wed, 25 Jul 2018 13:45:28 -0400 hghave: move from requiring the PYTHON3 env var to looking for `python3`
Augie Fackler <augie@google.com> [Wed, 25 Jul 2018 13:45:28 -0400] rev 39351
hghave: move from requiring the PYTHON3 env var to looking for `python3` We're starting to write new utility scripts in Python 3, and I think it's reasonable to expect `python3` to be something we should use if it's present. I wrote the regex to specifically ban Python 3 prior to Python 3.5 because we won't ever support that. I moved the only test that was using $PYTHON3 to just using `python3` directly. Differential Revision: https://phab.mercurial-scm.org/D4290
Wed, 29 Aug 2018 09:59:08 -0700 rename: return error status if any rename/copy failed
Martin von Zweigbergk <martinvonz@google.com> [Wed, 29 Aug 2018 09:59:08 -0700] rev 39350
rename: return error status if any rename/copy failed Ever since 447ea621e50e (copy: propagate errors properly, 2007-12-06), we have returned an error status if the source file did not exist. That commit did not return error status for any other errors, and it's unclear if that was on purpose or not. It seems to me like we should return an error in the other cases to, so that's what this patch does. Differential Revision: https://phab.mercurial-scm.org/D4419
Wed, 29 Aug 2018 09:54:50 -0700 rename: emit hint about using --after consistently
Martin von Zweigbergk <martinvonz@google.com> [Wed, 29 Aug 2018 09:54:50 -0700] rev 39349
rename: emit hint about using --after consistently Both the code and the message for the case where the source file was missing was inconsistent with the other similar messages. Differential Revision: https://phab.mercurial-scm.org/D4418
Wed, 29 Aug 2018 09:50:39 -0700 rename: quote hg commands in warnings
Martin von Zweigbergk <martinvonz@google.com> [Wed, 29 Aug 2018 09:50:39 -0700] rev 39348
rename: quote hg commands in warnings I think we usally use single quotes around hg commands in messages. Differential Revision: https://phab.mercurial-scm.org/D4417
Tue, 21 Aug 2018 21:05:01 +0800 zsh_completion: complete hg files
Anton Shestakov <av6@dwimlabs.net> [Tue, 21 Aug 2018 21:05:01 +0800] rev 39347
zsh_completion: complete hg files Differential Revision: https://phab.mercurial-scm.org/D4361
Tue, 21 Aug 2018 14:49:02 +0800 zsh_completion: adjust usage of common options
Anton Shestakov <av6@dwimlabs.net> [Tue, 21 Aug 2018 14:49:02 +0800] rev 39346
zsh_completion: adjust usage of common options addremove, remove and serve accept -S/--subrepos, and purge actually doesn't. qnew accepts -I/--include and -X/--exclude. qrefresh accepts -D/--currentdate, -U/--currentuser, -d/--date and -u/--user. rebase accepts -n/--dry-run. Differential Revision: https://phab.mercurial-scm.org/D4360
Sun, 26 Aug 2018 15:23:03 -0400 resolve: make condition clearer, and able to handle a new flag
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Sun, 26 Aug 2018 15:23:03 -0400] rev 39345
resolve: make condition clearer, and able to handle a new flag Differential Revision: https://phab.mercurial-scm.org/D4377
Wed, 06 Jun 2018 00:48:24 +0200 shelve: drop mention of obsshelve file
Boris Feld <boris.feld@octobus.net> [Wed, 06 Jun 2018 00:48:24 +0200] rev 39344
shelve: drop mention of obsshelve file Core shelve extension does not use obsolescence, we clean up this unused file before adding a new info file.
Tue, 29 May 2018 11:40:40 +0200 shelve: rename method for data write/read
Boris Feld <boris.feld@octobus.net> [Tue, 29 May 2018 11:40:40 +0200] rev 39343
shelve: rename method for data write/read There are no user of this code nor any code related to obsshelve in the extensions right now, so we rename the function before using them. Note: The shelvedfile looks a bit strange. We should probably refactor it, however, this is an adventure for another series.
Thu, 23 Aug 2018 00:51:38 +0200 shelve: move createcmd next to _docreatecmd
Boris Feld <boris.feld@octobus.net> [Thu, 23 Aug 2018 00:51:38 +0200] rev 39342
shelve: move createcmd next to _docreatecmd It is simpler not to have to jump around the file all the time.
Sun, 05 Aug 2018 13:34:04 +0900 minirst: filter blocks by full path to section
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Aug 2018 13:34:04 +0900] rev 39341
minirst: filter blocks by full path to section
Sun, 05 Aug 2018 13:34:58 +0900 minirst: mark getsections() as an internal helper
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Aug 2018 13:34:58 +0900] rev 39340
minirst: mark getsections() as an internal helper
Sun, 05 Aug 2018 12:42:10 +0900 help: rewrite parsing of help topic to not drop section name with dots
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Aug 2018 12:42:10 +0900] rev 39339
help: rewrite parsing of help topic to not drop section name with dots A subtopic is no longer lowercased since it should be considered a part of a topic path, not a section filter.
Sun, 05 Aug 2018 12:48:02 +0900 test-help: add tests showing that sections can't be filtered by dotted name
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Aug 2018 12:48:02 +0900] rev 39338
test-help: add tests showing that sections can't be filtered by dotted name
Sat, 18 Aug 2018 08:41:36 +0200 revlogdeltas: move finddeltainfo filtering inside _candidategroups
Boris Feld <boris.feld@octobus.net> [Sat, 18 Aug 2018 08:41:36 +0200] rev 39337
revlogdeltas: move finddeltainfo filtering inside _candidategroups Now all "simple" filtering logic is gathered in one place. The `finddeltainfo` method is more straightforward and the `_candidate_groups` function knows more about filtering revisions before we compute a delta against them.
Wed, 29 Aug 2018 09:55:11 -0700 revlogdeltas: split candidate groups selection from the filtering logic
Boris Feld <boris.feld@octobus.net> [Wed, 29 Aug 2018 09:55:11 -0700] rev 39336
revlogdeltas: split candidate groups selection from the filtering logic The group iteration has two main components: * walking candidates, the logic that we are about to extend to build intermediate snapshots, * Making sure we test diffs against interesting bases. No duplicated tests, skipping empty revisions, etc. We split `_candidategroups` to separate the two components. This achieves two goals: * It will be simpler to update the walking logic for intermediate snapshots, * We can gather the filtering logic from `finddeltainfo` into `_candidategroups` to centralize it.
Sat, 18 Aug 2018 07:32:05 +0200 revlogdeltas: pass revision number to _candidatesgroups
Boris Feld <boris.feld@octobus.net> [Sat, 18 Aug 2018 07:32:05 +0200] rev 39335
revlogdeltas: pass revision number to _candidatesgroups The `_candidates_groups` logic works on revisions, so the nodes are currently just converted to revs at the top of the function. It seems cleaner to instead pass revision numbers to the function. Having this conversion out of the way will help for further cleanups.
Sat, 18 Aug 2018 07:27:34 +0200 revlogdeltas: extract _getcandidaterevs in a function
Boris Feld <boris.feld@octobus.net> [Sat, 18 Aug 2018 07:27:34 +0200] rev 39334
revlogdeltas: extract _getcandidaterevs in a function The logic barely uses the object it is attached to. This is an important function that we will clean up in the coming changesets. Moving it at the top level helps us with that cleanup.
Thu, 16 Aug 2018 04:38:57 +0200 revlogdeltas: always return a delta info object in finddeltainfo
Boris Feld <boris.feld@octobus.net> [Thu, 16 Aug 2018 04:38:57 +0200] rev 39333
revlogdeltas: always return a delta info object in finddeltainfo Previously, the method returned `None` when a full snapshot was needed. The caller had to determine how to produce one itself. In practice, building a `_deltainfo` object for a full snapshot is simple. So we build it at the `finddeltainfo` level and always return a `_deltainfo` object. The caller can now simply process the `_deltainfo` return in all cases.
Thu, 16 Aug 2018 04:20:34 +0200 revlogdeltas: move special cases around raw revisions in finddeltainfo
Boris Feld <boris.feld@octobus.net> [Thu, 16 Aug 2018 04:20:34 +0200] rev 39332
revlogdeltas: move special cases around raw revisions in finddeltainfo The method already contains logic for no-diff cases. Having everything in the same place is more consistent and unlocks other code improvements.
Wed, 29 Aug 2018 09:41:04 -0700 revlogdeltas: extra fulltext building in its own function
Boris Feld <boris.feld@octobus.net> [Wed, 29 Aug 2018 09:41:04 -0700] rev 39331
revlogdeltas: extra fulltext building in its own function The process of building a full text from a delta is complex enough to deserve isolation. The previous function mixed cache management and computation, we now have clearer boundaries and simpler functions/methods.
Thu, 16 Aug 2018 02:53:42 +0200 revlog: split functionality related to deltas computation in a new module
Boris Feld <boris.feld@octobus.net> [Thu, 16 Aug 2018 02:53:42 +0200] rev 39330
revlog: split functionality related to deltas computation in a new module The revlog module is getting big and this logic is getting more and more advanced. Moving it to `mercurial.revlogutils.deltas` split a lot off revlog.py and will help this logic to become less interleaved with revlog. The code is simply moved without modification (but for namespace changes). Refactoring and improvement will be made in later changesets.
Thu, 16 Aug 2018 02:08:13 +0200 revlog: split constants into a new `revlogutils.constants` module
Boris Feld <boris.feld@octobus.net> [Thu, 16 Aug 2018 02:08:13 +0200] rev 39329
revlog: split constants into a new `revlogutils.constants` module We want to split some logic out of the main revlog file (the delta computing logic). However, this logic needs access to multiple constants related to the revlog. So we move all revlog related constants into a new module that could be imported from multiple places. We don't copy the file (preserving blame history) because there are only a few moving lines. Also, copying the file would result in annoying merge conflicts with ongoing work from others contributors.
Thu, 12 Jul 2018 12:11:20 -0700 rebase: skip extinct revisions even if it has no successor in rebase set
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Jul 2018 12:11:20 -0700] rev 39328
rebase: skip extinct revisions even if it has no successor in rebase set Differential Revision: https://phab.mercurial-scm.org/D4408
Wed, 11 Jul 2018 12:26:44 -0700 tests: add test showing that rebase of extinct commit with successor fails
Martin von Zweigbergk <martinvonz@google.com> [Wed, 11 Jul 2018 12:26:44 -0700] rev 39327
tests: add test showing that rebase of extinct commit with successor fails As the test case shows, attempting to rebase a commit that has a successor that is not in the rebase set and not in the destination currently fails because it "will cause divergences". However, it doesn't seem like there's any harm in skipping the extinct commit. I suspect this case missed simply because extinct revisions are usually hidden. Differential Revision: https://phab.mercurial-scm.org/D4407
Mon, 27 Aug 2018 10:44:43 -0700 tests: add log output after stripping for context for next test
Martin von Zweigbergk <martinvonz@google.com> [Mon, 27 Aug 2018 10:44:43 -0700] rev 39326
tests: add log output after stripping for context for next test It's not obvious what the repo state will be after stripping some nodes and obsmarkers, so let's include the log output to make it easier to follow the test case that comes after. Differential Revision: https://phab.mercurial-scm.org/D4406
Tue, 28 Aug 2018 15:09:18 -0700 obsutil: make sure "addedmarkers" is not None in getobsoleted()
Martin von Zweigbergk <martinvonz@google.com> [Tue, 28 Aug 2018 15:09:18 -0700] rev 39325
obsutil: make sure "addedmarkers" is not None in getobsoleted() Similar reasoning as in 52e6171ec822 (obsutil: make sure "addedrevs" is not None in getobsoleted(), 2018-08-25). Differential Revision: https://phab.mercurial-scm.org/D4411
Tue, 28 Aug 2018 13:29:47 -0700 revsetlang: fix position of '-' in spaceless 'a-b' expressions
Martin von Zweigbergk <martinvonz@google.com> [Tue, 28 Aug 2018 13:29:47 -0700] rev 39324
revsetlang: fix position of '-' in spaceless 'a-b' expressions I don't know if there is an observable difference, but it seems like an obvious fix. Differential Revision: https://phab.mercurial-scm.org/D4410
Wed, 15 Aug 2018 23:05:23 +0000 tests: mark manifestfulltextcache as conditional on revlog store
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 15 Aug 2018 23:05:23 +0000] rev 39323
tests: mark manifestfulltextcache as conditional on revlog store This file is currently specific to the revlog store. Other stores may not implement it. Mark it as such in test output. Differential Revision: https://phab.mercurial-scm.org/D4395
Wed, 15 Aug 2018 20:23:45 +0000 manifest: use fulltextcache instead of _fulltextcache
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 15 Aug 2018 20:23:45 +0000] rev 39322
manifest: use fulltextcache instead of _fulltextcache fulltextcache is part of the documented interface and is aliased to _fulltextcache. Differential Revision: https://phab.mercurial-scm.org/D4394
Wed, 15 Aug 2018 19:58:06 +0000 manifest: rename manifestlog._revlog to _rootstore
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 15 Aug 2018 19:58:06 +0000] rev 39321
manifest: rename manifestlog._revlog to _rootstore Because it may not be a revlog. Differential Revision: https://phab.mercurial-scm.org/D4393
Wed, 15 Aug 2018 19:53:02 +0000 manifest: use public API for obtaining storage object
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 15 Aug 2018 19:53:02 +0000] rev 39320
manifest: use public API for obtaining storage object We should not be accessing private attributes on the manifestlog, since its behavior is governed by an interface. Differential Revision: https://phab.mercurial-scm.org/D4392
Mon, 27 Aug 2018 08:58:25 -0700 perf: add function for obtaining manifest revision
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 27 Aug 2018 08:58:25 -0700] rev 39319
perf: add function for obtaining manifest revision This will use the modern API if available or fall back to the legacy direct revlog access case. Without this, the perf command won't work on all code bases. Differential Revision: https://phab.mercurial-scm.org/D4391
Wed, 15 Aug 2018 19:45:39 +0000 perf: use storage API for resolving manifest node
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 15 Aug 2018 19:45:39 +0000] rev 39318
perf: use storage API for resolving manifest node lookup() isn't part of the storage API. And this code shouldn't be accessing manifestlog._revlog directly for the modern code base. So let's port it to the modern API. Note that the previous code was busted for cases where we needed to call lookup() because lookup() isn't exposed by manifestrevlog any more. This change is strictly BC breaking because we no longer support resolving partial nodes. But it is a perf* command and I don't think we should flag the change as such. Differential Revision: https://phab.mercurial-scm.org/D4390
Mon, 27 Aug 2018 08:52:33 -0700 manifest: change terminology for storage in context classes
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 27 Aug 2018 08:52:33 -0700] rev 39317
manifest: change terminology for storage in context classes Storage may not be backed by revlogs. So it is wrong to refer to storage as "revlog" or use abbreviations like "rl." This commit replaces revlog terminology in manifest context classes and starts referring to things as "store" or "storage." Differential Revision: https://phab.mercurial-scm.org/D4389
Mon, 27 Aug 2018 08:55:24 -0700 manifest: don't go through revlog to access node symbols
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 27 Aug 2018 08:55:24 -0700] rev 39316
manifest: don't go through revlog to access node symbols The revlog module re-exports some node.* symbols courtesy of importing them. Let's access the node.* symbols via our local import. Differential Revision: https://phab.mercurial-scm.org/D4388
Wed, 15 Aug 2018 16:50:44 +0000 manifest: make tree a public attribute
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 15 Aug 2018 16:50:44 +0000] rev 39315
manifest: make tree a public attribute changegroup generation accesses this attribute. We should make it public and expose it on the interface. Differential Revision: https://phab.mercurial-scm.org/D4387
Mon, 27 Aug 2018 10:15:15 -0700 manifest: proxy to revlog instance instead of inheriting
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 27 Aug 2018 10:15:15 -0700] rev 39314
manifest: proxy to revlog instance instead of inheriting Previously, manifestrevlog inherited revlog.revlog and therefore exposed all its APIs. This inevitably resulted in consumers calling low-level revlog APIs. As part of abstracting storage, we want to formalize the interface for manifest storage. The revlog API is much too large to define as the interface. Like we did for filelog, this commit divorces the manifest class from revlog so that we can standardize on a smaller API surface. The way I went about this commit was I broke the inheritance, ran tests, and added proxies until all tests passed. Like filelog, there are a handful of attributes that don't belong on the interface. And like filelog, we'll tease these out in the future. As part of this, we formalize an interface for manifest storage and add checks that manifestrevlog conforms to the interface. Adding proxies will introduce some overhead due to extra attribute lookups and function calls. On the mozilla-unified repository: $ hg verify before: real 627.220 secs (user 525.870+0.000 sys 18.800+0.000) after: real 628.930 secs (user 532.050+0.000 sys 18.320+0.000) $ hg serve (for a clone) before: user 223.580+0.000 sys 14.270+0.000 after: user 227.720+0.000 sys 13.920+0.000 $ hg clone before: user 506.390+0.000 sys 29.720+0.000 after: user 513.080+0.000 sys 28.280+0.000 There appears to be some overhead here. But it appears to be 1-2%. I think that is an appropriate price to pay for storage abstraction, which will eventually let us have much nicer things. If the overhead is noticed in other operations (whose CPU time isn't likely dwarfed by fulltext resolution) or if we want to cut down on the overhead, we could dynamically build up a type whose methods are effectively aliased to a revlog instance's. I'm inclined to punt on that problem for now. We may have to do it for the changelog. At which point it could be implemented in a generic way and ported to filelog and manifestrevlog easily enough I would think. .. api:: manifest.manifestrevlog no longer inherits from revlog The manifestrevlog class now wraps a revlog instance instead of inheriting from revlog. Various attributes and methods on instances are no longer available. Differential Revision: https://phab.mercurial-scm.org/D4386
Sun, 26 Aug 2018 13:09:35 -0400 pager: do not enable when TERM=dumb
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Sun, 26 Aug 2018 13:09:35 -0400] rev 39313
pager: do not enable when TERM=dumb Before this, running hg in emacs' M-x shell started `less`, which would complain about the terminal not being fully functional. Differential Revision: https://phab.mercurial-scm.org/D4376
Wed, 22 Aug 2018 20:52:36 +0900 localrepo: do not cache auditor/nofsauditor which would make reference cycle
Yuya Nishihara <yuya@tcha.org> [Wed, 22 Aug 2018 20:52:36 +0900] rev 39312
localrepo: do not cache auditor/nofsauditor which would make reference cycle Before, self.auditor and self.nofsauditor held self through self._checknested, and the following code couldn't free a repo by ref-counting. def main(): repo = localrepo.localrepository(uimod.ui(), '../testrepos/hello') main() With this change, the cache of the nofsauditor is limited to a single match session. I think that's okay as the nofsauditor doesn't do any filesystem access. Alternatively, maybe we can remove the callback from nofsauditor since it isn't used unless realfs=True, but I have no idea whether it is a bug or not.
Sun, 05 Aug 2018 13:13:06 +0900 minirst: remove unused function decorateblocks()
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Aug 2018 13:13:06 +0900] rev 39311
minirst: remove unused function decorateblocks() It was added at ee6988aea74e "minirst: add decorateblocks search helper", but it's been unused since then.
Sun, 05 Aug 2018 12:11:19 +0900 minirst: make format() simply return a formatted text
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Aug 2018 12:11:19 +0900] rev 39310
minirst: make format() simply return a formatted text It's a source of bugs to change the type of the return value conditionally.
Sun, 05 Aug 2018 12:20:43 +0900 help: reorder section filtering flow to not format help text twice
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Aug 2018 12:20:43 +0900] rev 39309
help: reorder section filtering flow to not format help text twice
Sun, 05 Aug 2018 12:06:07 +0900 help: inline minirst.format()
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Aug 2018 12:06:07 +0900] rev 39308
help: inline minirst.format() I'm going to make minirst.format() always returns a formatted text, not text | (text, pruned).
Sun, 05 Aug 2018 11:43:05 +0900 minirst: extract function that formats parsed blocks as plain text
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Aug 2018 11:43:05 +0900] rev 39307
minirst: extract function that formats parsed blocks as plain text
Sun, 05 Aug 2018 11:39:52 +0900 minirst: unindent "if True" block in filtersections()
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Aug 2018 11:39:52 +0900] rev 39306
minirst: unindent "if True" block in filtersections()
Sun, 05 Aug 2018 11:38:56 +0900 minirst: extract function that filters parsed blocks by section name
Yuya Nishihara <yuya@tcha.org> [Sun, 05 Aug 2018 11:38:56 +0900] rev 39305
minirst: extract function that filters parsed blocks by section name I'll move some bits from minirst.format() to caller to make the function interface simpler.
Sat, 25 Aug 2018 20:19:27 +0900 bookmarks: adjust exception type so present(bookmark(.)) works as expected
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Aug 2018 20:19:27 +0900] rev 39304
bookmarks: adjust exception type so present(bookmark(.)) works as expected
Sat, 25 Aug 2018 20:16:28 +0900 revset: expand bookmark(.) to the active bookmark
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Aug 2018 20:16:28 +0900] rev 39303
revset: expand bookmark(.) to the active bookmark We do that in several places. I'm not pretty sure if "literal:." should be expanded or not, so it's disabled for now.
Sat, 25 Aug 2018 15:33:15 +0900 pycompat: remove membershiprange which is no longer used
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Aug 2018 15:33:15 +0900] rev 39302
pycompat: remove membershiprange which is no longer used Backed out changeset 45e05d39d9ce
Sat, 25 Aug 2018 15:28:48 +0900 transaction: remember original len(repo) instead of tracking added revs (API)
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Aug 2018 15:28:48 +0900] rev 39301
transaction: remember original len(repo) instead of tracking added revs (API) It's silly to keep updating xrange(len(changelog), len(changelog) + 1) for each added revision. Instead, let's simply remember the first revision to be added. The test output slightly changed as the branch cache is also warmed up by stream clone, which seems more consistent. .. api:: ``tr.changes['revs']`` is replaced by ``tr.changes['origrepolen']`` which is the first revision number to be added.
Sat, 25 Aug 2018 15:19:43 +0900 obsutil: make sure "addedrevs" is not None in getobsoleted()
Yuya Nishihara <yuya@tcha.org> [Sat, 25 Aug 2018 15:19:43 +0900] rev 39300
obsutil: make sure "addedrevs" is not None in getobsoleted() If it were None, "rev in addedrevs" would crash. So tr.changes["revs"] should be a mandatory parameter here.
Tue, 29 May 2018 18:13:19 +0200 phases: enforce internal phase support
Boris Feld <boris.feld@octobus.net> [Tue, 29 May 2018 18:13:19 +0200] rev 39299
phases: enforce internal phase support We should not use the internal phase for repository without the requirement. Otherwise, older clients could have a look at the repository and see the internal changesets. For now, we introduce a low-level Programming error, more UI friendly error will be introduced later.
Thu, 24 May 2018 09:59:10 +0200 phases: add a repository requirement about internal phase
Boris Feld <boris.feld@octobus.net> [Thu, 24 May 2018 09:59:10 +0200] rev 39298
phases: add a repository requirement about internal phase For internal changeset to be properly hidden, the client version needs to support it. So we introduce a new repository requirement that will make sure clients touching a repository that uses internal phase supports the feature.
Sat, 25 Aug 2018 01:19:48 +0200 phases: add an internal phases
Boris Feld <boris.feld@octobus.net> [Sat, 25 Aug 2018 01:19:48 +0200] rev 39297
phases: add an internal phases The phase is meant to be used for internal commit that are a byproduct of command operation (eg:shelve). This changeset focus on getting the most important feature in, more advanced API is to be introduced in later changesets. The phase approach to handle internal has multiple advantages: * simple to implement, reuse optimized code, * fits well with existing phases. We don't want internal changeset to be exchanged or served. * easy to extend to for lifecycle handling. More thinking about internal changeset at https://www.mercurial-scm.org/wiki/InternalsPlan We add this new phases with a high number to leave some room to possible other phases. We also try out playing with the idea of "flag" for phases, each flag would convey a distinct meaning. We can drop the flag idea in the future (keeping the existing numbers). The flag property should still move in a monotonic direction (enabled -> disabled) or be immutable like the "internal" flag. To simplify the addition of this new phase, we introduce many placeholder phases. They are not meant to be used for now. Keeping `allphases` as a list ensure existing algorithm works fine. The full performance impact of adding that many hollow phases is unclear so far. The impact on phase computation is visible but not worrisome. Runnin `hg perfphase` in my mercurial development repository. Before: ! wall 0.001807 comb 0.000000 user 0.000000 sys 0.000000 (median of 1597) after: ! wall 0.001906 comb 0.000000 user 0.000000 sys 0.000000 (median of 1521)
Wed, 22 Aug 2018 11:58:36 -0700 stringutil: teach pprint() to recognize generators
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 22 Aug 2018 11:58:36 -0700] rev 39296
stringutil: teach pprint() to recognize generators Otherwise they get serialized as e.g. <generator object X at 0x7f543d3d68c0> Differential Revision: https://phab.mercurial-scm.org/D4396
Mon, 27 Aug 2018 16:03:00 -0400 commitextras: no need to special case extras=[]
Valentin Gatien-Baron <vgatien-baron@janestreet.com> [Mon, 27 Aug 2018 16:03:00 -0400] rev 39295
commitextras: no need to special case extras=[] Differential Revision: https://phab.mercurial-scm.org/D4405
Mon, 27 Aug 2018 16:01:55 -0400 commitextras: work nicely with other extensions
Valentin Gatien-Baron <vgatien-baron@janestreet.com> [Mon, 27 Aug 2018 16:01:55 -0400] rev 39294
commitextras: work nicely with other extensions Before this change, it doesn't add these extra fields when loaded alongside another extension that does a bunch of things, including wrapping commit. I did not investigate exactly why, but - the documentation of extensions.wrapfunction says to use subclassing to play nicely with other extensions - using subclassing does make commitextras work when loaded alongside my other extension Differential Revision: https://phab.mercurial-scm.org/D4404
Sat, 25 Aug 2018 11:20:13 +0200 phases: simplify revset in updatephases
Boris Feld <boris.feld@octobus.net> [Sat, 25 Aug 2018 11:20:13 +0200] rev 39293
phases: simplify revset in updatephases (Pointed by Yuya Nishihara)
Tue, 28 Aug 2018 00:32:10 +0800 context: use new names for unstable changesets in docstrings
Anton Shestakov <av6@dwimlabs.net> [Tue, 28 Aug 2018 00:32:10 +0800] rev 39292
context: use new names for unstable changesets in docstrings Plus slight corrections.
Fri, 24 Aug 2018 08:45:18 -0700 index: embed nodetree in index object to avoid reference cycle
Martin von Zweigbergk <martinvonz@google.com> [Fri, 24 Aug 2018 08:45:18 -0700] rev 39291
index: embed nodetree in index object to avoid reference cycle Since the index has a reference to a nodetree and the nodetree has a reference back to the index, there is a reference cycle, so the index (and its nodetree) can never be freed. This patch fixes that by making "nodetree" a plan C struct that the index can embed, and also introduces a new "nodetreeObject" that is a Python type wrapping the nodetree struct. Thanks to Yuya for noticing this and for suggesting the solution. All tests passed on the first attempt once it compiled (I guess C is like Haskell in this regard?). Differential Revision: https://phab.mercurial-scm.org/D4372
Mon, 27 Aug 2018 20:45:52 +0300 catapipe: make the file executable
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 27 Aug 2018 20:45:52 +0300] rev 39290
catapipe: make the file executable This silences test-check-execute.t. Differential Revision: https://phab.mercurial-scm.org/D4403
Mon, 27 Aug 2018 20:41:31 +0300 run-tests: fix the remaining failure of test-run-tests.py
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 27 Aug 2018 20:41:31 +0300] rev 39289
run-tests: fix the remaining failure of test-run-tests.py Looks like durin42 misindented this. This makes test-run-tests.py passes but I cannot reason why. Differential Revision: https://phab.mercurial-scm.org/D4402
Mon, 27 Aug 2018 20:39:32 +0300 run-tests: don't append rtendtracing logs if pipe is /dev/null
Pulkit Goyal <pulkit@yandex-team.ru> [Mon, 27 Aug 2018 20:39:32 +0300] rev 39288
run-tests: don't append rtendtracing logs if pipe is /dev/null If HGCATAPULTSERVERPIPE is not set, we set it to /dev/null, so we need to make sure the value is not /dev/null before appending logs. This fixes some of test-run-tests.t failures. Differential Revision: https://phab.mercurial-scm.org/D4401
Mon, 27 Aug 2018 04:31:09 +0530 cmdutil: fix typo in revert()
Sushil khanchi <sushilkhanchi97@gmail.com> [Mon, 27 Aug 2018 04:31:09 +0530] rev 39287
cmdutil: fix typo in revert() Differential Revision: https://phab.mercurial-scm.org/D4381
(0) -30000 -10000 -3000 -1000 -120 +120 +1000 +3000 +10000 tip