Skip to content

WIP Partial clone part 1: object filtering

Jeff Hostetler git 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest13 patches 23 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/13dir: allow exclusions from blob in addition to filedir.c dir.h+52 -25 replies
2/13list-objects-filter-map: extend oidmap to collect omitted objectsMakefile list-objects-filter-map.c list-objects-filter-map.h+90 -03 replies
3/13list-objects: filter objects in traverse_commit_listlist-objects.c list-objects.h+81 -172 replies
4/13list-objects-filter-blobs-none: add filter to omit all blobsMakefile list-objects-filter-blobs-none.c list-objects-filter-blobs-none.h+102 -00 replies
5/13list-objects-filter-blobs-limit: add large blob filteringMakefile list-objects-filter-blobs-limit.c list-objects-filter-blobs-limit.h+165 -00 replies
6/13list-objects-filter-sparse: add sparse filterMakefile list-objects-filter-sparse.c list-objects-filter-sparse.h+272 -00 replies
7/13list-objects-filter-options: common argument parsingMakefile list-objects-filter-options.c list-objects-filter-options.h+152 -02 replies
8/13list-objects: add traverse_commit_list_filtered methodlist-objects.c list-objects.h+56 -02 replies
9/13extension.partialclone: introduce partial clone extensionDocumentation/technical/repository-version.txt Makefile cache.h +5 more+180 -00 replies
10/13rev-list: add list-objects filtering supportDocumentation/git-rev-list.txt Documentation/rev-list-options.txt builtin/rev-list.c+116 -32 replies
11/13t6112: rev-list object filtering testt/t6112-rev-list-filters-objects.sh+223 -00 replies
12/13pack-objects: add list-objects filteringDocumentation/git-pack-objects.txt builtin/pack-objects.c+24 -20 replies
13/13t5317: pack-objects object filtering testt/t5317-pack-objects-filter-objects.sh+384 -00 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 00/13] WIP Partial clone part 1: object filtering

From: Jeff Hostetler <[email protected]>

I've been working with Jonathan Tan to combine our partial clone proposals. This patch series represents a first step in that effort and introduces an object filtering mechanism to select unwanted objects.

[1] traverse_commit_list and list-objects is extended to allow various filters.
[2] rev-list is extended to expose filtering. This allows testing of the filtering options. And can be used later to predict missing objects before commands like checkout or merge.
[3] pack-objects is extended to use filtering parameters and build packfiles that omit unwanted objects.

This patch series lays the ground work for subsequent parts which will extend clone, fetch, fetch-pack, upload-pack, fsck, and etc.

Jeff Hostetler (13):
dir: allow exclusions from blob in addition to file
list-objects-filter-map: extend oidmap to collect omitted objects
list-objects: filter objects in traverse_commit_list list-objects-filter-blobs-none: add filter to omit all blobs list-objects-filter-blobs-limit: add large blob filtering list-objects-filter-sparse: add sparse filter list-objects-filter-options: common argument parsing
list-objects: add traverse_commit_list_filtered method extension.partialclone: introduce partial clone extension
rev-list: add list-objects filtering support
t6112: rev-list object filtering test
pack-objects: add list-objects filtering
t5317: pack-objects object filtering test

 Documentation/git-pack-objects.txt             |   8 +-
 Documentation/git-rev-list.txt                 |   5 +-
 Documentation/rev-list-options.txt             |  30 ++
 Documentation/technical/repository-version.txt |  22 ++
 Makefile                                       |   6 +
 builtin/pack-objects.c                         |  18 +-
 builtin/rev-list.c                             |  84 +++++-
 cache.h                                        |   4 +
 config.h                                       |   3 +
 dir.c                                          |  51 +++-
 dir.h                                          |   3 +
 environment.c                                  |   2 +
 list-objects-filter-blobs-limit.c              | 146 ++++++++++
 list-objects-filter-blobs-limit.h              |  18 ++
 list-objects-filter-blobs-none.c               |  83 ++++++
 list-objects-filter-blobs-none.h               |  18 ++
 list-objects-filter-map.c                      |  63 ++++
 list-objects-filter-map.h                      |  26 ++
 list-objects-filter-options.c                  | 101 +++++++
 list-objects-filter-options.h                  |  50 ++++
 list-objects-filter-sparse.c                   | 241 ++++++++++++++++
 list-objects-filter-sparse.h                   |  30 ++
 list-objects.c                                 | 111 +++++--
 list-objects.h                                 |  43 ++-
 partial-clone-utils.c                          |  99 +++++++
 partial-clone-utils.h                          |  34 +++
 setup.c                                        |  15 +
 t/t5317-pack-objects-filter-objects.sh         | 384 +++++++++++++++++++++++++
 t/t6112-rev-list-filters-objects.sh            | 223 ++++++++++++++
 29 files changed, 1897 insertions(+), 24 deletions(-)
 create mode 100644 list-objects-filter-blobs-limit.c
 create mode 100644 list-objects-filter-blobs-limit.h
 create mode 100644 list-objects-filter-blobs-none.c
 create mode 100644 list-objects-filter-blobs-none.h
 create mode 100644 list-objects-filter-map.c
 create mode 100644 list-objects-filter-map.h
 create mode 100644 list-objects-filter-options.c
 create mode 100644 list-objects-filter-options.h
 create mode 100644 list-objects-filter-sparse.c
 create mode 100644 list-objects-filter-sparse.h
 create mode 100644 partial-clone-utils.c
 create mode 100644 partial-clone-utils.h
 create mode 100755 t/t5317-pack-objects-filter-objects.sh
 create mode 100755 t/t6112-rev-list-filters-objects.sh
Signature · 1 line
2.9.3