]> git.ipfire.org Git - thirdparty/git.git/commitdiff
odb: get rid of `the_repository` in `odb_mkstemp()`
authorPatrick Steinhardt <ps@pks.im>
Thu, 5 Jun 2025 06:46:57 +0000 (08:46 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 5 Jun 2025 15:51:58 +0000 (08:51 -0700)
Get rid of our dependency on `the_repository` in `odb_mkstemp()` by
passing in the object database as a parameter and adjusting all callers.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/fast-import.c
builtin/index-pack.c
bundle-uri.c
odb.c
odb.h
pack-bitmap-write.c
pack-write.c

index 52c792488e1379f988f3964dd7e5fd2678b6bcd4..413304db9b591b3160bb00ca865a16b5b47181cb 100644 (file)
@@ -763,7 +763,8 @@ static void start_packfile(void)
        struct packed_git *p;
        int pack_fd;
 
-       pack_fd = odb_mkstemp(&tmp_file, "pack/tmp_pack_XXXXXX");
+       pack_fd = odb_mkstemp(the_repository->objects, &tmp_file,
+                             "pack/tmp_pack_XXXXXX");
        FLEX_ALLOC_STR(p, pack_name, tmp_file.buf);
        strbuf_release(&tmp_file);
 
index 1aabe6b8ee213f1745227bd9d19b43c1bc568279..4d4d989eb1a29f2c9376692904448c0731da0ae5 100644 (file)
@@ -362,7 +362,7 @@ static const char *open_pack_file(const char *pack_name)
                input_fd = 0;
                if (!pack_name) {
                        struct strbuf tmp_file = STRBUF_INIT;
-                       output_fd = odb_mkstemp(&tmp_file,
+                       output_fd = odb_mkstemp(the_repository->objects, &tmp_file,
                                                "pack/tmp_pack_XXXXXX");
                        pack_name = strbuf_detach(&tmp_file, NULL);
                } else {
index 2e623f8627abea6808364f4dafb11ce66d18824f..f94e780e967e1a7d19f585f1d08eb8679f3265a7 100644 (file)
@@ -278,7 +278,8 @@ static char *find_temp_filename(void)
         * Find a temporary filename that is available. This is briefly
         * racy, but unlikely to collide.
         */
-       fd = odb_mkstemp(&name, "bundles/tmp_uri_XXXXXX");
+       fd = odb_mkstemp(the_repository->objects, &name,
+                        "bundles/tmp_uri_XXXXXX");
        if (fd < 0) {
                warning(_("failed to create temporary file"));
                return NULL;
diff --git a/odb.c b/odb.c
index 3a3ceed55083fb60bf82b85026e9c28814b33479..73410920a882ad6dcd61cedcc168d3190ddac8ea 100644 (file)
--- a/odb.c
+++ b/odb.c
@@ -63,7 +63,8 @@ static const struct cached_object *find_cached_object(struct object_database *ob
        return NULL;
 }
 
-int odb_mkstemp(struct strbuf *temp_filename, const char *pattern)
+int odb_mkstemp(struct object_database *odb,
+               struct strbuf *temp_filename, const char *pattern)
 {
        int fd;
        /*
@@ -71,15 +72,15 @@ int odb_mkstemp(struct strbuf *temp_filename, const char *pattern)
         * restrictive except to remove write permission.
         */
        int mode = 0444;
-       repo_git_path_replace(the_repository, temp_filename, "objects/%s", pattern);
+       repo_git_path_replace(odb->repo, temp_filename, "objects/%s", pattern);
        fd = git_mkstemp_mode(temp_filename->buf, mode);
        if (0 <= fd)
                return fd;
 
        /* slow path */
        /* some mkstemp implementations erase temp_filename on failure */
-       repo_git_path_replace(the_repository, temp_filename, "objects/%s", pattern);
-       safe_create_leading_directories(the_repository, temp_filename->buf);
+       repo_git_path_replace(odb->repo, temp_filename, "objects/%s", pattern);
+       safe_create_leading_directories(odb->repo, temp_filename->buf);
        return xmkstemp_mode(temp_filename->buf, mode);
 }
 
diff --git a/odb.h b/odb.h
index 13f5da45f54949bfc4979ff291f9098d4998a3c5..5de952608f3a3cdc8ec64e7faad0aa2c17fe7d34 100644 (file)
--- a/odb.h
+++ b/odb.h
@@ -201,12 +201,13 @@ void odb_clear(struct object_database *o);
 struct odb_source *odb_find_source(struct object_database *odb, const char *obj_dir);
 
 /*
- * Create a temporary file rooted in the object database directory, or
- * die on failure. The filename is taken from "pattern", which should have the
+ * Create a temporary file rooted in the primary alternate's directory, or die
+ * on failure. The filename is taken from "pattern", which should have the
  * usual "XXXXXX" trailer, and the resulting filename is written into the
  * "template" buffer. Returns the open descriptor.
  */
-int odb_mkstemp(struct strbuf *temp_filename, const char *pattern);
+int odb_mkstemp(struct object_database *odb,
+               struct strbuf *temp_filename, const char *pattern);
 
 void *repo_read_object_file(struct repository *r,
                            const struct object_id *oid,
index 37648b57125567ac9a794e653506be705d143c7a..c847369eaaad14cf57a49507dafd87fdda87edd5 100644 (file)
@@ -1052,7 +1052,8 @@ void bitmap_writer_finish(struct bitmap_writer *writer,
 
        struct bitmap_disk_header header;
 
-       int fd = odb_mkstemp(&tmp_file, "pack/tmp_bitmap_XXXXXX");
+       int fd = odb_mkstemp(writer->repo->objects, &tmp_file,
+                            "pack/tmp_bitmap_XXXXXX");
 
        if (writer->pseudo_merges_nr)
                options |= BITMAP_OPT_PSEUDO_MERGES;
index 6b06315f80ab48d07d1e7a22ab52fe2115d74f62..eccdc798e368c310bb49795a2929b5676d7a70e0 100644 (file)
@@ -84,7 +84,8 @@ const char *write_idx_file(struct repository *repo,
        } else {
                if (!index_name) {
                        struct strbuf tmp_file = STRBUF_INIT;
-                       fd = odb_mkstemp(&tmp_file, "pack/tmp_idx_XXXXXX");
+                       fd = odb_mkstemp(repo->objects, &tmp_file,
+                                        "pack/tmp_idx_XXXXXX");
                        index_name = strbuf_detach(&tmp_file, NULL);
                } else {
                        unlink(index_name);
@@ -259,7 +260,8 @@ char *write_rev_file_order(struct repository *repo,
        if (flags & WRITE_REV) {
                if (!rev_name) {
                        struct strbuf tmp_file = STRBUF_INIT;
-                       fd = odb_mkstemp(&tmp_file, "pack/tmp_rev_XXXXXX");
+                       fd = odb_mkstemp(repo->objects, &tmp_file,
+                                        "pack/tmp_rev_XXXXXX");
                        path = strbuf_detach(&tmp_file, NULL);
                } else {
                        unlink(rev_name);
@@ -342,7 +344,7 @@ static char *write_mtimes_file(struct repository *repo,
        if (!to_pack)
                BUG("cannot call write_mtimes_file with NULL packing_data");
 
-       fd = odb_mkstemp(&tmp_file, "pack/tmp_mtimes_XXXXXX");
+       fd = odb_mkstemp(repo->objects, &tmp_file, "pack/tmp_mtimes_XXXXXX");
        mtimes_name = strbuf_detach(&tmp_file, NULL);
        f = hashfd(repo->hash_algo, fd, mtimes_name);
 
@@ -531,7 +533,7 @@ struct hashfile *create_tmp_packfile(struct repository *repo,
        struct strbuf tmpname = STRBUF_INIT;
        int fd;
 
-       fd = odb_mkstemp(&tmpname, "pack/tmp_pack_XXXXXX");
+       fd = odb_mkstemp(repo->objects, &tmpname, "pack/tmp_pack_XXXXXX");
        *pack_tmp_name = strbuf_detach(&tmpname, NULL);
        return hashfd(repo->hash_algo, fd, *pack_tmp_name);
 }