git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Patrick Steinhardt <ps@pks.im>
To: git@vger.kernel.org
Cc: Phillip Wood <phillip.wood123@gmail.com>,
	 Junio C Hamano <gitster@pobox.com>,
	Karthik Nayak <karthik.188@gmail.com>,
	 Toon Claes <toon@iotcl.com>
Subject: [PATCH v2 00/16] object-file: get rid of `the_repository`
Date: Thu, 17 Jul 2025 06:56:26 +0200	[thread overview]
Message-ID: <20250717-pks-object-file-wo-the-repository-v2-0-36d2cd6c700e@pks.im> (raw)
In-Reply-To: <20250709-pks-object-file-wo-the-repository-v1-0-62627b55707f@pks.im>

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@pks.im

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@pks.im>
     
 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


  parent reply	other threads:[~2025-07-17  4:56 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-09 11:17 [PATCH 00/19] object-file: get rid of `the_repository` Patrick Steinhardt
2025-07-09 11:17 ` [PATCH 01/19] object-file: fix -Wsign-compare warnings Patrick Steinhardt
2025-07-09 11:17 ` [PATCH 02/19] object-file: stop using `the_hash_algo` Patrick Steinhardt
2025-07-11  9:52   ` Karthik Nayak
2025-07-09 11:17 ` [PATCH 03/19] object-file: get rid of `the_repository` in `has_loose_object()` Patrick Steinhardt
2025-07-09 11:17 ` [PATCH 04/19] object-file: inline `check_and_freshen()` functions Patrick Steinhardt
2025-07-09 11:17 ` [PATCH 05/19] object-file: get rid of `the_repository` when freshening objects Patrick Steinhardt
2025-07-11  9:59   ` Karthik Nayak
2025-07-09 11:17 ` [PATCH 06/19] object-file: get rid of `the_repository` in `loose_object_info()` Patrick Steinhardt
2025-07-09 11:17 ` [PATCH 07/19] object-file: get rid of `the_repository` in `finalize_object_file()` Patrick Steinhardt
2025-07-09 11:17 ` [PATCH 08/19] loose: write loose objects map via their source Patrick Steinhardt
2025-07-11 10:25   ` Karthik Nayak
2025-07-15 10:50     ` Patrick Steinhardt
2025-07-09 11:17 ` [PATCH 09/19] odb: introduce `odb_write_object()` Patrick Steinhardt
2025-07-10 18:39   ` Toon Claes
2025-07-15 10:50     ` Patrick Steinhardt
2025-07-09 11:17 ` [PATCH 10/19] object-file: get rid of `the_repository` when writing objects Patrick Steinhardt
2025-07-09 11:17 ` [PATCH 11/19] object-file: inline `for_each_loose_file_in_objdir_buf()` Patrick Steinhardt
2025-07-09 11:17 ` [PATCH 12/19] object-file: remove declaration for `for_each_file_in_obj_subdir()` Patrick Steinhardt
2025-07-09 11:17 ` [PATCH 13/19] object-file: get rid of `the_repository` in loose object iterators Patrick Steinhardt
2025-07-10 18:41   ` Toon Claes
2025-07-09 11:17 ` [PATCH 14/19] object-file: get rid of `the_repository` in `read_loose_object()` Patrick Steinhardt
2025-07-09 11:17 ` [PATCH 15/19] object-file: get rid of `the_repository` in `force_object_loose()` Patrick Steinhardt
2025-07-10 18:42   ` Toon Claes
2025-07-11 10:38   ` Karthik Nayak
2025-07-15 10:50     ` Patrick Steinhardt
2025-07-15 11:36       ` Toon Claes
2025-07-09 11:17 ` [PATCH 16/19] object-file: get rid of `the_repository` in index-related functions Patrick Steinhardt
2025-07-09 11:17 ` [PATCH 17/19] environment: move compression level into repo settings Patrick Steinhardt
2025-07-09 15:26   ` Phillip Wood
2025-07-11 18:55     ` Junio C Hamano
2025-07-15 10:50       ` Patrick Steinhardt
2025-07-15 11:27       ` Patrick Steinhardt
2025-07-15 15:51         ` Phillip Wood
2025-07-15 16:12           ` Patrick Steinhardt
2025-07-16 12:56             ` Patrick Steinhardt
2025-07-17 15:19               ` Phillip Wood
2025-07-17 15:56                 ` Junio C Hamano
2025-07-15 18:50           ` Junio C Hamano
2025-07-17  8:00           ` Ayush Chandekar
2025-07-09 11:17 ` [PATCH 18/19] environment: move object creation mode " Patrick Steinhardt
2025-07-09 11:17 ` [PATCH 19/19] object-file: drop USE_THE_REPOSITORY_VARIABLE Patrick Steinhardt
2025-07-17  4:56 ` Patrick Steinhardt [this message]
2025-07-17  4:56   ` [PATCH v2 01/16] object-file: fix -Wsign-compare warnings Patrick Steinhardt
2025-07-17  4:56   ` [PATCH v2 02/16] object-file: stop using `the_hash_algo` Patrick Steinhardt
2025-07-17  4:56   ` [PATCH v2 03/16] object-file: get rid of `the_repository` in `has_loose_object()` Patrick Steinhardt
2025-07-17  4:56   ` [PATCH v2 04/16] object-file: inline `check_and_freshen()` functions Patrick Steinhardt
2025-07-17  4:56   ` [PATCH v2 05/16] object-file: get rid of `the_repository` when freshening objects Patrick Steinhardt
2025-07-17  4:56   ` [PATCH v2 06/16] object-file: get rid of `the_repository` in `loose_object_info()` Patrick Steinhardt
2025-07-17  4:56   ` [PATCH v2 07/16] object-file: get rid of `the_repository` in `finalize_object_file()` Patrick Steinhardt
2025-07-17  4:56   ` [PATCH v2 08/16] loose: write loose objects map via their source Patrick Steinhardt
2025-07-17  4:56   ` [PATCH v2 09/16] odb: introduce `odb_write_object()` Patrick Steinhardt
2025-07-17  4:56   ` [PATCH v2 10/16] object-file: get rid of `the_repository` when writing objects Patrick Steinhardt
2025-07-17  4:56   ` [PATCH v2 11/16] object-file: inline `for_each_loose_file_in_objdir_buf()` Patrick Steinhardt
2025-07-17  4:56   ` [PATCH v2 12/16] object-file: remove declaration for `for_each_file_in_obj_subdir()` Patrick Steinhardt
2025-07-17  4:56   ` [PATCH v2 13/16] object-file: get rid of `the_repository` in loose object iterators Patrick Steinhardt
2025-07-17  4:56   ` [PATCH v2 14/16] object-file: get rid of `the_repository` in `read_loose_object()` Patrick Steinhardt
2025-07-17  4:56   ` [PATCH v2 15/16] object-file: get rid of `the_repository` in `force_object_loose()` Patrick Steinhardt
2025-07-17  4:56   ` [PATCH v2 16/16] object-file: get rid of `the_repository` in index-related functions Patrick Steinhardt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250717-pks-object-file-wo-the-repository-v2-0-36d2cd6c700e@pks.im \
    --to=ps@pks.im \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=karthik.188@gmail.com \
    --cc=phillip.wood123@gmail.com \
    --cc=toon@iotcl.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).