Tue, 18 Sep 2018 19:00:17 -0700 hgweb: use heads() instead of headrevs()
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
Tue, 18 Sep 2018 18:56:02 -0700 filelog: record what's using attributes
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
Tue, 18 Sep 2018 18:21:47 -0700 filelog: stop proxying datafile (API)
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
Tue, 18 Sep 2018 18:03:41 -0700 filelog: stop proxying _addrevision() (API)
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
Tue, 18 Sep 2018 17:57:36 -0700 filelog: stop proxying compress() (API)
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
Tue, 18 Sep 2018 17:56:15 -0700 filelog: stop proxying start(), end(), and length() (API)
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
Tue, 18 Sep 2018 17:51:43 -0700 revlog: move censor logic out of censor extension
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
Tue, 18 Sep 2018 16:47:09 -0700 global: replace most uses of RevlogError with StorageError (API)
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 18 Sep 2018 16:47:09 -0700] rev 39777
global: replace most uses of RevlogError with StorageError (API) When catching errors in storage, we should be catching StorageError instead of RevlogError. When throwing errors related to storage, we shouldn't be using RevlogError unless we know the error stemmed from revlogs. And we only reliably know that if we're in revlog.py or are inheriting from a type defined in revlog.py. Differential Revision: https://phab.mercurial-scm.org/D4655
(0) -30000 -10000 -3000 -1000 -300 -100 -30 -10 -8 +8 +10 +30 +100 +300 +1000 +3000 +10000 tip