Pulkit Goyal <pulkit@yandex-team.ru> [Sun, 23 Sep 2018 23:34:22 +0300] rev 39787
py3: add b'' prefixes in tests/test-bdiff.py
This makes the test close to passing
# skip-blame because just b'' prefixes
Differential Revision: https://phab.mercurial-scm.org/D4695
Pulkit Goyal <pulkit@yandex-team.ru> [Sun, 23 Sep 2018 22:57:17 +0300] rev 39786
py3: fix kwargs handling in hgext/absorb.py
This fixes couple of tests on Python 3. There is only one absorb test left
failing on Python 3.
Differential Revision: https://phab.mercurial-scm.org/D4694
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 18 Sep 2018 19:26:44 -0700] rev 39785
filelog: stop proxying headrevs() (API)
The previous commit removed the last user of this method. It is
redundant with heads() and adds little to no value other than
convenience. Let's nuke it.
Differential Revision: https://phab.mercurial-scm.org/D4663
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 18 Sep 2018 19:00:17 -0700] rev 39784
hgweb: use heads() instead of headrevs()
These appear to be the only callers of headrevs() on file storage
objects. Let's port to heads() so we can remove headrevs().
Differential Revision: https://phab.mercurial-scm.org/D4662
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 18 Sep 2018 18:56:02 -0700] rev 39783
filelog: record what's using attributes
filelog and the file storage interface have some attributes that
ideally shouldn't be there. This commit annotates some of those
attributes with their users so we know where to look when it comes
time to removing them.
This exercise exposed a theme: many attributes are used by LFS,
repo upgrade, verify, and special repo types (like bundlerepo). That
points to missing abstractions on file storage to facilitate these
special needs.
Differential Revision: https://phab.mercurial-scm.org/D4661
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 18 Sep 2018 18:21:47 -0700] rev 39782
filelog: stop proxying datafile (API)
It appears the censor code was the last user of this proxy. With
there being a dedicated censor API, we can drop the proxy.
Differential Revision: https://phab.mercurial-scm.org/D4660
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 18 Sep 2018 18:03:41 -0700] rev 39781
filelog: stop proxying _addrevision() (API)
There are no callers of this API in core. And I'm not sure why this
proxy was added in the first place, as the commit that added it
(
1541e1a8e87d) didn't appear to have any callers in the repo either.
Who knows.
Differential Revision: https://phab.mercurial-scm.org/D4659
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 18 Sep 2018 17:57:36 -0700] rev 39780
filelog: stop proxying compress() (API)
The censoring code was previously relying on this. With a dedicated
censoring API on the interface, no consumers are left and we can
stop proxying this method.
Differential Revision: https://phab.mercurial-scm.org/D4658
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 18 Sep 2018 17:56:15 -0700] rev 39779
filelog: stop proxying start(), end(), and length() (API)
These were needed by the censoring code, which formerly lived in the
censor extension. Now that there is a censoring API on the file storage
interface, nothing uses these methods and we can stop proxying them.
Differential Revision: https://phab.mercurial-scm.org/D4657
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 18 Sep 2018 17:51:43 -0700] rev 39778
revlog: move censor logic out of censor extension
The censor extension is doing very low-level things with revlogs.
It is fundamentally impossible for this logic to remain in the censor
extension while support multiple storage backends: we need each
storage backend to implement censor in its own storage-specific
way.
This commit effectively moves the revlog-specific censoring code to
be a method of revlogs themselves.
We've defined a new API on the file storage interface for censoring
an individual node. Even though the current censoring code doesn't
use it, the API requires a transaction instance because it logically
makes sense for storage backends to require an active transaction
(which implies a held write lock) in order to rewrite storage.
After this commit, the censor extension has been reduced to
boilerplate precondition checking before invoking the generic
storage API.
I tried to keep the code as similar as possible. But some minor
changes were made:
* We use self._io instead of instantiating a new revlogio instance.
* We compare self.version against REVLOGV0 instead of != REVLOGV1
because presumably all future revlog versions will support censoring.
* We use self.opener instead of going through repo.svfs (we don't have
a handle on the repo instance from a revlog).
* "revlog" dropped
* Replace "flog" with "self".
Differential Revision: https://phab.mercurial-scm.org/D4656