From: Jeff Hostetler Date: Wed, 13 Dec 2017 15:58:02 GMT Subject: Re: What's cooking in git.git (Dec 2017, #02; Thu, 7) Message-ID: <329228e6-bad0-3685-1110-635da044e11b@jeffhostetler.com> In-Reply-To: On 12/12/2017 4:30 AM, Christian Couder wrote: > On Thu, Dec 7, 2017 at 7:04 PM, Junio C Hamano 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@tuxfamily.org/). > > Instead of using an "extension.partialclone" config variable, an odb > will be configured like using an "odb..promisorRemote" (the > name might still change) config variable. Other odbs could still be > configured using "odb..scriptCommand" and > "odb..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