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
next prev 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).