Pulkit Goyal <7895pulkit@gmail.com> [Mon, 01 Feb 2021 00:02:00 +0530] rev 46472
upgrade: implement partial upgrade for upgrading persistent-nodemap
Upgrading repositories to use persistent nodemap should be fast and easy as it
requires only two things:
1) Updating the requirements
2) Writing a persistent-nodemap on disk
For both of the steps above, we don't need to edit existing revlogs.
This patch makes upgrade only do the above mentioned two steps if we are
only upgarding to use persistent-nodemap feature.
Since `nodemap.persist_nodemap()` assumes that there exists a nodemap file for
the given revlog if we are trying to call it, this patch adds `force` argument
to create a file if does not exist which is true in our upgrade case.
The test changes demonstrate that we no longer write nodemap files for manifest
after upgrade which I think is desirable.
Differential Revision: https://phab.mercurial-scm.org/D9936
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 01 Feb 2021 00:10:27 +0530] rev 46471
tests: unquiet a test to show changes in next patch
Differential Revision: https://phab.mercurial-scm.org/D9935
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 31 Jan 2021 23:40:57 +0530] rev 46470
nodemap: fix a typo in error message
Differential Revision: https://phab.mercurial-scm.org/D9934
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 31 Jan 2021 23:38:31 +0530] rev 46469
revlog: refactor logic to compute nodemap file in separate function
I will like to use it one more place.
Differential Revision: https://phab.mercurial-scm.org/D9933
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 31 Jan 2021 23:34:59 +0530] rev 46468
nodemap: make `_persist_nodemap` a public function
I will like to have a utility function using which we can directly write out
nodemap for a repository without going through the recloning process. This
function seems like the one containing important pieces for that. Let's make it
public.
Differential Revision: https://phab.mercurial-scm.org/D9932
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 31 Jan 2021 23:13:08 +0530] rev 46467
engine: 'if not, else' -> 'if, else'
I personally feel that
```
if x:
pass
else:
pass
```
is easier to read and edit than
```
if not x:
pass
else:
pass
```
Next patches will add one more if-else clause.
Differential Revision: https://phab.mercurial-scm.org/D9931
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 25 Jan 2021 14:23:47 +0530] rev 46466
debugcommands: s/stdin/stdout in debugnodemap help
Differential Revision: https://phab.mercurial-scm.org/D9930
Martin von Zweigbergk <martinvonz@google.com> [Fri, 29 Jan 2021 15:51:00 -0800] rev 46465
errors: use InputError in uncommit extension
Differential Revision: https://phab.mercurial-scm.org/D9911
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 04 Feb 2021 16:59:46 -0500] rev 46464
largefiles: properly pass kwargs into url.open
The url.open function has acquired a lot of kwargs over the years.
When running `hg import http://example.com/hg/diff/1`, since at least
a708e1e4d7a8 in March, 2018, the calling sites for url.open try to
pass a `sendaccept` parameter that largefiles' override doesn't accept.
Currently that stack traces something like this:
Traceback (most recent call last):
File "/tmp/hgtests.sv744r5t/install/bin/hg", line 59, in <module>
dispatch.run()
File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 143, in run
status = dispatch(req)
File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 245, in dispatch
status = _rundispatch(req)
File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 289, in _rundispatch
ret = _runcatch(req) or 0
File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 465, in _runcatch
return _callcatch(ui, _runcatchfunc)
File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 475, in _callcatch
return scmutil.callcatch(ui, func)
File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/scmutil.py", line 155, in callcatch
return func()
File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 455, in _runcatchfunc
return _dispatch(req)
File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 1259, in _dispatch
lui, repo, cmd, fullargs, ui, options, d, cmdpats, cmdoptions
File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 913, in runcommand
ret = _runcommand(ui, options, cmd, d)
File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 1270, in _runcommand
return cmdfunc()
File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/dispatch.py", line 1256, in <lambda>
d = lambda: util.checksignature(func)(ui, *args, **strcmdopt)
File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/util.py", line 1867, in check
return func(*args, **kwargs)
File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/commands.py", line 4184, in import_
patchfile = hg.openpath(ui, patchurl, sendaccept=False)
File "/tmp/hgtests.sv744r5t/install/lib/python/mercurial/hg.py", line 181, in openpath
return url.open(ui, path, sendaccept=sendaccept)
TypeError: openlargefile() got an unexpected keyword argument 'sendaccept'
So, just accept and pass along any kwargs of the overridden function.
Simon Sapin <simon.sapin@octobus.net> [Mon, 01 Feb 2021 11:41:10 +0100] rev 46463
rhg: add support for share-safe
Differential Revision: https://phab.mercurial-scm.org/D9942