On 12/12/2017 4:30 AM, Christian Couder wrote:
On Thu, Dec 7, 2017 at 7:04 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote:
* jh/object-filtering (2017-12-05) 9 commits
(merged to 'next' on 2017-12-05 at 3a56b51085)
+ rev-list: support --no-filter argument
+ list-objects-filter-options: support --no-filter
+ list-objects-filter-options: fix 'keword' typo in comment
(merged to 'next' on 2017-11-27 at e5008c3b28)
+ pack-objects: add list-objects filtering
+ rev-list: add list-objects filtering support
+ list-objects: filter objects in traverse_commit_list
+ oidset: add iterator methods to oidset
+ oidmap: add oidmap iterator methods
+ dir: allow exclusions from blob in addition to file
(this branch is used by jh/fsck-promisors and jh/partial-clone.)
In preparation for implementing narrow/partial clone, the object
walking machinery has been taught a way to tell it to "filter" some
objects from enumeration.
* jh/fsck-promisors (2017-12-05) 12 commits
- gc: do not repack promisor packfiles
- rev-list: support termination at promisor objects
- fixup: sha1_file: add TODO
- fixup: sha1_file: convert gotos to break/continue
- sha1_file: support lazily fetching missing objects
- introduce fetch-object: fetch one promisor object
- index-pack: refactor writing of .keep files
- fsck: support promisor objects as CLI argument
- fsck: support referenced promisor objects
- fsck: support refs pointing to promisor objects
- fsck: introduce partialclone extension
- extension.partialclone: introduce partial clone extension
(this branch is used by jh/partial-clone; uses jh/object-filtering.)
In preparation for implementing narrow/partial clone, the machinery
for checking object connectivity used by gc and fsck has been
taught that a missing object is OK when it is referenced by a
packfile specially marked as coming from trusted repository that
promises to make them available on-demand and lazily.
I am currently working on integrating this series with my external odb
series (https://public-inbox.org/git/20170916080731.13925-1-chriscool@xxxxxxxxxxxxx/).
Instead of using an "extension.partialclone" config variable, an odb
will be configured like using an "odb.<odbname>.promisorRemote" (the
name might still change) config variable. Other odbs could still be
configured using "odb.<odbname>.scriptCommand" and
"odb.<odbname>.subprocessCommand".
The current work is still very much WIP and some tests fail, but you
can take a look there:
https://github.com/chriscool/git/tree/gl-promisor-external-odb440
In our current V6 patch series, Jonathan Tan and I are using the
extension.partialclone config variable for 2 purposes. First, to
indicate a change in the repository format and stop non-aware clients
(older versions of git.exe) from operating on the repo -- since they
won't know how to handle missing objects. Second, to name the remote
to help the client later demand load missing objects. This is a current
limitation (we only support one promisor remote), so this second usage
may change. I haven't had time to look at your branch yet, so I can't
comment on how it might help/solve our second usage, but we do need to
keep the first usage in mind.
Jeff