[PATCH 00 of 27 clfilter V2] (README) newer and cleaner version of changelog level filtering (repo side)

Pierre-Yves David pierre-yves.david at ens-lyon.org
Mon Oct 8 16:37:51 CDT 2012


This is a newer and much cleaner version of the repo side of the changelog filtering.

Matt and I will discuss this series  tomorrow (Tuesday) at 19:00 GMT. If you
want to take part in the phone call, let me know in advance.

Summary
============

The goal of this series is to define and deploy an API that make use of "changelog
level filtering of revision" at localrepository. The goal is to have a
changelog (and it's repo) pretend that filtered revision does not exist in the
repo at all.

Changelog part of this feature is already in core. This series introduce a repo
proxy class that will behave exactly like a proxy but with a filtered
changelog.

This requires both:

(1) update of existing code to run some section with or without filtering
(2) handling of the possible proxy object between repo user and the repo itself.

I know this series is very HUGE but it can hardly be smaller:

- Each changeser try to be as small as possible therefor there is many of them

- The first changeset does not have much sense without the final filtering but
  the final filtering need them.


Changesets of particular interested are:
========================================

20: clfilter: add actual repo filtering mechanism
21: clfilter: add a cache on repo for set of revision to filter for a given set.

    They are the core of this series.

22: clfilter: use filtering in `visibleheads` and `visiblebranchmap`
23: clfilter: set "unserved" filter on all repo used as server
25: clfilter: enforce hidden changeset globally

    They are practical usage of the previous series.

05: clfilter: introduce an "unfiltered" method on localrepo
06: clfilter: decorate several repository methods as unfiltered
07: clfilter: unfilter computation of obsolescence related computation

    Give a good view of preliminary changes needed.


Detailled series
========================================

part 0
--------

Small fix not directly related to the new API. Either changes related to
changelog iteration or test details that would broke later.

01: clfilter: remove usage of `range` and `xrange` in `scmutil.revrange`
02: test: use proper subclassing in `test-issue2137.t`.
03: largefile: use `self` in repo method instead of `repo`
04: clfilter: remove use of xrange in revset

part 1
--------

Introduction of the concept of "unfiltered repo" and disabling of filtering in
all part of the code who will require it.

05: clfilter: introduce an "unfiltered" method on localrepo
06: clfilter: decorate several repository methods as unfiltered
07: clfilter: unfilter computation of obsolescence related computation
08: clfilter: phases logic should be unfiltered
09: clfilter: verify logic should be unfiltered
10: clfilter: strip logic should be unfiltered
11: clfilter: prevent unwanted warning about filtered parents as unknown
12: clfilter: unfilter some part of the push logic
13: clfilter: `bookmark.validdest` should run on unfiltered repo
14: clfilter: use unfiltered repo for push bookmarks logic
15: clfilter: ensure mq do commit on unfiltered repo.
16: clfilter: mq should not warn about filtered mq patch
17: largefile: status is buggy on repoproxy. Run it unfiltered

part 2
--------

Prepare cache used by repo for the existence of repo proxy object.

18: clfilter: ensure filecache on localrepo are computed and store unfiltered
19: clfilter: distinct propertycache that must be unfiltered from the other

part 3
--------

introduce repo proxy object

20: clfilter: add actual repo filtering mechanism
21: clfilter: add a cache on repo for set of revision to filter for a given set.

part 4
--------

Use filtering during exchange with other repo

22: clfilter: use filtering in `visibleheads` and `visiblebranchmap`
23: clfilter: set "unserved" filter on all repo used as server
24: clfilter: remove the last usage of `visibleheads`

part 5
--------

Filter hidden changeset all the time

25: clfilter: enforce hidden changeset globally

part 5'
--------

Get some cheap benefit from hidden changeset filtering.

26: clfilter: highlight that hidden filtering is properly working on any commands
27: clfilter: drop unnecessary explicite filtering on rebase.


More information about the Mercurial-devel mailing list