[PATCH v2 00/16] object-file: get rid of `the_repository`

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

this patch series refactors "object-file.c" to get rid of the dependency
on `the_repository`. In many such cases this is done by passing in a
`struct odb_source`, which prepares us for eventually converting this
into the "loose" object source with pluggable object databases.

The patch series is built on top of a30f80fde92 (The eighth batch,
2025-07-08) with "ps/object-store" at 841a03b4046 (odb: rename
`read_object_with_reference()`, 2025-07-01) merged into it.

Changes in v2:
  - Two small typo improvements.
  - Drop the last three patches from this series that move some global
    config into repo settings. Those cause a change in behaviour, and
    fixing that is a lot of effort that falls outside of the scope of
    this patch series.
  - Link to v1: https://lore.kernel.org/r/20250709-pks-object-file-wo-the-repository-v1-0-62627b55707f@xxxxxx

Thanks!

Patrick

---
Patrick Steinhardt (16):
      object-file: fix -Wsign-compare warnings
      object-file: stop using `the_hash_algo`
      object-file: get rid of `the_repository` in `has_loose_object()`
      object-file: inline `check_and_freshen()` functions
      object-file: get rid of `the_repository` when freshening objects
      object-file: get rid of `the_repository` in `loose_object_info()`
      object-file: get rid of `the_repository` in `finalize_object_file()`
      loose: write loose objects map via their source
      odb: introduce `odb_write_object()`
      object-file: get rid of `the_repository` when writing objects
      object-file: inline `for_each_loose_file_in_objdir_buf()`
      object-file: remove declaration for `for_each_file_in_obj_subdir()`
      object-file: get rid of `the_repository` in loose object iterators
      object-file: get rid of `the_repository` in `read_loose_object()`
      object-file: get rid of `the_repository` in `force_object_loose()`
      object-file: get rid of `the_repository` in index-related functions

 apply.c                  |  11 +-
 builtin/cat-file.c       |   2 +-
 builtin/checkout.c       |   2 +-
 builtin/count-objects.c  |   2 +-
 builtin/fast-import.c    |   4 +-
 builtin/fsck.c           |  16 +--
 builtin/gc.c             |  10 +-
 builtin/index-pack.c     |   2 +-
 builtin/merge-file.c     |   3 +-
 builtin/mktag.c          |   2 +-
 builtin/mktree.c         |   2 +-
 builtin/notes.c          |   3 +-
 builtin/pack-objects.c   |  34 ++++--
 builtin/prune.c          |   2 +-
 builtin/receive-pack.c   |   4 +-
 builtin/replace.c        |   3 +-
 builtin/tag.c            |   4 +-
 builtin/unpack-objects.c |  15 +--
 bulk-checkin.c           |   2 +-
 cache-tree.c             |   5 +-
 commit.c                 |   4 +-
 http.c                   |   4 +-
 loose.c                  |  16 +--
 loose.h                  |   4 +-
 match-trees.c            |   2 +-
 merge-ort.c              |   7 +-
 midx-write.c             |   2 +-
 notes-cache.c            |   3 +-
 notes.c                  |  12 +-
 object-file.c            | 306 ++++++++++++++++++++++-------------------------
 object-file.h            |  65 ++++------
 odb.c                    |  10 ++
 odb.h                    |  38 ++++++
 pack-write.c             |  16 +--
 pack.h                   |   3 +-
 prune-packed.c           |   2 +-
 reachable.c              |   2 +-
 read-cache.c             |   2 +-
 tmp-objdir.c             |   2 +-
 39 files changed, 333 insertions(+), 295 deletions(-)

Range-diff versus v1:

 1:  c150744a648 =  1:  4fc36ad30ae object-file: fix -Wsign-compare warnings
 2:  5cdc43d3d27 !  2:  c5ad1d12618 object-file: stop using `the_hash_algo`
    @@ Commit message
         anymore, either by deriving it from already-available context or by
         using `the_repository->hash_algo`. The latter variant doesn't yet help
         to remove the global dependency, but such users will be adapted in the
    -    following commits to not use `the_repository` anymore, either.
    +    following commits to not use `the_repository` anymore.
     
         Signed-off-by: Patrick Steinhardt <ps@xxxxxx>
     
 3:  8e63fb2d760 =  3:  76478623aa7 object-file: get rid of `the_repository` in `has_loose_object()`
 4:  14153d37df4 =  4:  ee7b31c95cd object-file: inline `check_and_freshen()` functions
 5:  70abad2d817 =  5:  4b7407f17b7 object-file: get rid of `the_repository` when freshening objects
 6:  5fc03ab39da =  6:  40a7c009c7b object-file: get rid of `the_repository` in `loose_object_info()`
 7:  9a07f6a27df =  7:  9568d7e996e object-file: get rid of `the_repository` in `finalize_object_file()`
 8:  739008ad578 =  8:  cf974b8b48d loose: write loose objects map via their source
 9:  f2f00d6f566 !  9:  fec51b64457 odb: introduce `odb_write_object()`
    @@ odb.h: enum for_each_object_flags {
     +	WRITE_OBJECT_PERSIST = (1 << 0),
     +
     +	/*
    -+	 * Do not print an error in case something gose wrong.
    ++	 * Do not print an error in case something goes wrong.
     +	 */
     +	WRITE_OBJECT_SILENT = (1 << 1),
     +};
10:  84411e2a8fc = 10:  ece58da8182 object-file: get rid of `the_repository` when writing objects
11:  f051bfbada1 = 11:  a76d5f24040 object-file: inline `for_each_loose_file_in_objdir_buf()`
12:  3754b37207a = 12:  70e60db13f6 object-file: remove declaration for `for_each_file_in_obj_subdir()`
13:  be855be5c0e = 13:  77ec9b765dc object-file: get rid of `the_repository` in loose object iterators
14:  6cb7f6bc040 = 14:  b091f019d01 object-file: get rid of `the_repository` in `read_loose_object()`
15:  8ddb96c9f30 = 15:  3982420285b object-file: get rid of `the_repository` in `force_object_loose()`
16:  d885f70f58d = 16:  21272b2644b object-file: get rid of `the_repository` in index-related functions
17:  1640212fe06 <  -:  ----------- environment: move compression level into repo settings
18:  36496f2c42c <  -:  ----------- environment: move object creation mode into repo settings
19:  8760509c0bb <  -:  ----------- object-file: drop USE_THE_REPOSITORY_VARIABLE

---
base-commit: f0228c39bf2fe539583cd594671039f05765bc9b
change-id: 20250709-pks-object-file-wo-the-repository-9f41234c4747





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux