mbox series

[00/12] Stop depending on `the_repository` in object-related subsystems

Message ID 20250303-b4-pks-objects-without-the-repository-v1-0-c5dd43f2476e@pks.im (mailing list archive)
Headers show
Series Stop depending on `the_repository` in object-related subsystems | expand

Message

Patrick Steinhardt March 3, 2025, 8:47 a.m. UTC
Hi,

this patch series is another step to remove our dependency on the global
`the_repository` variable. The series focusses on subsystems related to
objects.

The intent here is to work towards libification of the whole subsystem
so that we can start splitting out something like an object "backend".
It is thus part of a set of refactorings aimed at allowing pluggable
object databases eventually. I'm not discussing that bigger effort yet,
mostly because it's still taking shape. So these patch series contains
things that make sense standalone, even if pluggable ODBs never get to
be a thing.

Note that this patch series stop short of dropping `the_repository` in
"object-file.c". This is a bigger undertaking, so I'm pushing that into
the next patch series.

The series is built on top of cb0ae672aea (A bit more post -rc0,
2025-02-27) with ps/path-sans-the-repository at 028f618658e (path:
adjust last remaining users of `the_repository`, 2025-02-07) merged into
it.

Thanks!

Patrick

---
Patrick Steinhardt (12):
      csum-file: stop depending on `the_repository`
      object: stop depending on `the_repository`
      pack-write: stop depending on `the_repository` and `the_hash_algo`
      environment: move access to "core.bigFileThreshold" into repo settings
      pack-check: stop depending on `the_repository`
      pack-revindex: stop depending on `the_repository`
      pack-bitmap-write: stop depending on `the_repository`
      object-file-convert: stop depending on `the_repository`
      delta-islands: stop depending on `the_repository`
      object-file: split out logic regarding hash algorithms
      hash: fix "-Wsign-compare" warnings
      hash: stop depending on `the_repository` in `null_oid()`

 Makefile                                     |   1 +
 archive.c                                    |   4 +-
 blame.c                                      |   2 +-
 branch.c                                     |   2 +-
 builtin/checkout.c                           |   6 +-
 builtin/clone.c                              |   2 +-
 builtin/describe.c                           |   2 +-
 builtin/diff.c                               |   5 +-
 builtin/fast-export.c                        |  10 +-
 builtin/fast-import.c                        |   8 +-
 builtin/fsck.c                               |   6 +-
 builtin/grep.c                               |   4 +-
 builtin/index-pack.c                         |  16 +-
 builtin/log.c                                |   2 +-
 builtin/ls-files.c                           |   2 +-
 builtin/name-rev.c                           |   4 +-
 builtin/pack-objects.c                       |  17 +-
 builtin/prune.c                              |   2 +-
 builtin/rebase.c                             |   2 +-
 builtin/receive-pack.c                       |   2 +-
 builtin/submodule--helper.c                  |  36 ++--
 builtin/tag.c                                |   2 +-
 builtin/unpack-objects.c                     |   5 +-
 builtin/update-ref.c                         |   2 +-
 builtin/worktree.c                           |   2 +-
 bulk-checkin.c                               |   4 +-
 combine-diff.c                               |   2 +-
 commit-graph.c                               |   9 +-
 commit.c                                     |   2 +-
 config.c                                     |   5 -
 csum-file.c                                  |  28 +--
 csum-file.h                                  |  12 +-
 delta-islands.c                              |  14 +-
 delta-islands.h                              |   2 +-
 diff-lib.c                                   |  10 +-
 diff-no-index.c                              |  28 +--
 diff.c                                       |  14 +-
 diff.h                                       |   2 +-
 dir.c                                        |   2 +-
 environment.c                                |   1 -
 environment.h                                |   1 -
 grep.c                                       |   2 +-
 hash.c                                       | 277 +++++++++++++++++++++++++
 hash.h                                       |   4 +-
 log-tree.c                                   |   2 +-
 merge-ort.c                                  |  26 +--
 merge-recursive.c                            |  12 +-
 meson.build                                  |   1 +
 midx-write.c                                 |  12 +-
 midx.c                                       |   3 +-
 notes-merge.c                                |   2 +-
 notes.c                                      |   2 +-
 object-file-convert.c                        |  29 +--
 object-file-convert.h                        |   3 +-
 object-file.c                                | 292 +--------------------------
 object.c                                     |  21 +-
 object.h                                     |  10 +-
 pack-bitmap-write.c                          |  36 ++--
 pack-bitmap.c                                |  15 +-
 pack-bitmap.h                                |   1 +
 pack-check.c                                 |  12 +-
 pack-revindex.c                              |  35 ++--
 pack-write.c                                 |  55 +++--
 pack.h                                       |  11 +-
 parse-options-cb.c                           |   2 +-
 range-diff.c                                 |   2 +-
 reachable.c                                  |   6 +-
 read-cache.c                                 |   4 +-
 refs.c                                       |  12 +-
 refs/debug.c                                 |   2 +-
 refs/files-backend.c                         |   2 +-
 repo-settings.c                              |  20 ++
 repo-settings.h                              |   5 +
 reset.c                                      |   2 +-
 revision.c                                   |   3 +-
 sequencer.c                                  |  10 +-
 shallow.c                                    |  10 +-
 streaming.c                                  |   3 +-
 submodule-config.c                           |   2 +-
 submodule.c                                  |  28 +--
 t/helper/test-ref-store.c                    |   2 +-
 t/helper/test-submodule-nested-repo-config.c |   2 +-
 t/t1050-large.sh                             |   3 +-
 tree-diff.c                                  |   4 +-
 upload-pack.c                                |  14 +-
 wt-status.c                                  |   4 +-
 xdiff-interface.c                            |   2 +-
 87 files changed, 676 insertions(+), 613 deletions(-)


---
base-commit: e2cb568e11f4ceb427ba4205e6b8a4426d26be12
change-id: 20250210-b4-pks-objects-without-the-repository-6ba8398f7cc0

Comments

Karthik Nayak March 6, 2025, 11:20 a.m. UTC | #1
Patrick Steinhardt <ps@pks.im> writes:

> Hi,
>
> this patch series is another step to remove our dependency on the global
> `the_repository` variable. The series focusses on subsystems related to
> objects.
>
> The intent here is to work towards libification of the whole subsystem
> so that we can start splitting out something like an object "backend".
> It is thus part of a set of refactorings aimed at allowing pluggable
> object databases eventually. I'm not discussing that bigger effort yet,
> mostly because it's still taking shape. So these patch series contains
> things that make sense standalone, even if pluggable ODBs never get to
> be a thing.
>
> Note that this patch series stop short of dropping `the_repository` in
> "object-file.c". This is a bigger undertaking, so I'm pushing that into
> the next patch series.
>
> The series is built on top of cb0ae672aea (A bit more post -rc0,
> 2025-02-27) with ps/path-sans-the-repository at 028f618658e (path:
> adjust last remaining users of `the_repository`, 2025-02-07) merged into
> it.
>
> Thanks!
>

Had a look at the series, I only had a small nit or two. Looking great
already!

Thanks

> Patrick
>
> ---
> Patrick Steinhardt (12):
>       csum-file: stop depending on `the_repository`
>       object: stop depending on `the_repository`
>       pack-write: stop depending on `the_repository` and `the_hash_algo`
>       environment: move access to "core.bigFileThreshold" into repo settings
>       pack-check: stop depending on `the_repository`
>       pack-revindex: stop depending on `the_repository`
>       pack-bitmap-write: stop depending on `the_repository`
>       object-file-convert: stop depending on `the_repository`
>       delta-islands: stop depending on `the_repository`
>       object-file: split out logic regarding hash algorithms
>       hash: fix "-Wsign-compare" warnings
>       hash: stop depending on `the_repository` in `null_oid()`
>
>  Makefile                                     |   1 +
>  archive.c                                    |   4 +-
>  blame.c                                      |   2 +-
>  branch.c                                     |   2 +-
>  builtin/checkout.c                           |   6 +-
>  builtin/clone.c                              |   2 +-
>  builtin/describe.c                           |   2 +-
>  builtin/diff.c                               |   5 +-
>  builtin/fast-export.c                        |  10 +-
>  builtin/fast-import.c                        |   8 +-
>  builtin/fsck.c                               |   6 +-
>  builtin/grep.c                               |   4 +-
>  builtin/index-pack.c                         |  16 +-
>  builtin/log.c                                |   2 +-
>  builtin/ls-files.c                           |   2 +-
>  builtin/name-rev.c                           |   4 +-
>  builtin/pack-objects.c                       |  17 +-
>  builtin/prune.c                              |   2 +-
>  builtin/rebase.c                             |   2 +-
>  builtin/receive-pack.c                       |   2 +-
>  builtin/submodule--helper.c                  |  36 ++--
>  builtin/tag.c                                |   2 +-
>  builtin/unpack-objects.c                     |   5 +-
>  builtin/update-ref.c                         |   2 +-
>  builtin/worktree.c                           |   2 +-
>  bulk-checkin.c                               |   4 +-
>  combine-diff.c                               |   2 +-
>  commit-graph.c                               |   9 +-
>  commit.c                                     |   2 +-
>  config.c                                     |   5 -
>  csum-file.c                                  |  28 +--
>  csum-file.h                                  |  12 +-
>  delta-islands.c                              |  14 +-
>  delta-islands.h                              |   2 +-
>  diff-lib.c                                   |  10 +-
>  diff-no-index.c                              |  28 +--
>  diff.c                                       |  14 +-
>  diff.h                                       |   2 +-
>  dir.c                                        |   2 +-
>  environment.c                                |   1 -
>  environment.h                                |   1 -
>  grep.c                                       |   2 +-
>  hash.c                                       | 277 +++++++++++++++++++++++++
>  hash.h                                       |   4 +-
>  log-tree.c                                   |   2 +-
>  merge-ort.c                                  |  26 +--
>  merge-recursive.c                            |  12 +-
>  meson.build                                  |   1 +
>  midx-write.c                                 |  12 +-
>  midx.c                                       |   3 +-
>  notes-merge.c                                |   2 +-
>  notes.c                                      |   2 +-
>  object-file-convert.c                        |  29 +--
>  object-file-convert.h                        |   3 +-
>  object-file.c                                | 292 +--------------------------
>  object.c                                     |  21 +-
>  object.h                                     |  10 +-
>  pack-bitmap-write.c                          |  36 ++--
>  pack-bitmap.c                                |  15 +-
>  pack-bitmap.h                                |   1 +
>  pack-check.c                                 |  12 +-
>  pack-revindex.c                              |  35 ++--
>  pack-write.c                                 |  55 +++--
>  pack.h                                       |  11 +-
>  parse-options-cb.c                           |   2 +-
>  range-diff.c                                 |   2 +-
>  reachable.c                                  |   6 +-
>  read-cache.c                                 |   4 +-
>  refs.c                                       |  12 +-
>  refs/debug.c                                 |   2 +-
>  refs/files-backend.c                         |   2 +-
>  repo-settings.c                              |  20 ++
>  repo-settings.h                              |   5 +
>  reset.c                                      |   2 +-
>  revision.c                                   |   3 +-
>  sequencer.c                                  |  10 +-
>  shallow.c                                    |  10 +-
>  streaming.c                                  |   3 +-
>  submodule-config.c                           |   2 +-
>  submodule.c                                  |  28 +--
>  t/helper/test-ref-store.c                    |   2 +-
>  t/helper/test-submodule-nested-repo-config.c |   2 +-
>  t/t1050-large.sh                             |   3 +-
>  tree-diff.c                                  |   4 +-
>  upload-pack.c                                |  14 +-
>  wt-status.c                                  |   4 +-
>  xdiff-interface.c                            |   2 +-
>  87 files changed, 676 insertions(+), 613 deletions(-)
>
>
> ---
> base-commit: e2cb568e11f4ceb427ba4205e6b8a4426d26be12
> change-id: 20250210-b4-pks-objects-without-the-repository-6ba8398f7cc0