]> git.ipfire.org Git - thirdparty/git.git/commitdiff
environment: move object database functions into object layer
authorPatrick Steinhardt <ps@pks.im>
Thu, 12 Sep 2024 11:29:48 +0000 (13:29 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 12 Sep 2024 17:15:40 +0000 (10:15 -0700)
The `odb_mkstemp()` and `odb_pack_keep()` functions are quite clearly
tied to the object store, but regardless of that they are located in
"environment.c". Move them over, which also helps to get rid of
dependencies on `the_repository` in the environment subsystem.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
bundle-uri.c
environment.c
environment.h
object-file.c
object-store-ll.h

index 1e0ee156ba317cdb8ad2ce3b89020b906a46d6d9..eb8eca078bb38128dfc78f38aca94ad297434132 100644 (file)
@@ -4,7 +4,6 @@
 #include "bundle-uri.h"
 #include "bundle.h"
 #include "copy.h"
-#include "environment.h"
 #include "gettext.h"
 #include "refs.h"
 #include "run-command.h"
@@ -13,6 +12,7 @@
 #include "config.h"
 #include "fetch-pack.h"
 #include "remote.h"
+#include "object-store-ll.h"
 
 static struct {
        enum bundle_list_heuristic heuristic;
index 4d0637b3822c312a6e947047c16c8df0894239bd..f337efd1dd5deccfdb5c94dd54b7606bc28e3b51 100644 (file)
@@ -23,7 +23,6 @@
 #include "commit.h"
 #include "strvec.h"
 #include "object-file.h"
-#include "object-store-ll.h"
 #include "path.h"
 #include "replace-object.h"
 #include "tmp-objdir.h"
@@ -268,39 +267,6 @@ void set_git_work_tree(const char *new_work_tree)
        repo_set_worktree(the_repository, new_work_tree);
 }
 
-int odb_mkstemp(struct strbuf *temp_filename, const char *pattern)
-{
-       int fd;
-       /*
-        * we let the umask do its job, don't try to be more
-        * restrictive except to remove write permission.
-        */
-       int mode = 0444;
-       git_path_buf(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 */
-       git_path_buf(temp_filename, "objects/%s", pattern);
-       safe_create_leading_directories(temp_filename->buf);
-       return xmkstemp_mode(temp_filename->buf, mode);
-}
-
-int odb_pack_keep(const char *name)
-{
-       int fd;
-
-       fd = open(name, O_RDWR|O_CREAT|O_EXCL, 0600);
-       if (0 <= fd)
-               return fd;
-
-       /* slow path */
-       safe_create_leading_directories_const(name);
-       return open(name, O_RDWR|O_CREAT|O_EXCL, 0600);
-}
-
 static void set_git_dir_1(const char *path)
 {
        xsetenv(GIT_DIR_ENVIRONMENT, path, 1);
index 52e1803aba68b6d3084ecaa98b09ba6c85045a83..682d4f2e3b5f063ddbc1d34fe01bba9487dd8f12 100644 (file)
@@ -200,21 +200,6 @@ extern int grafts_keep_true_parents;
 
 extern int repository_format_precious_objects;
 
-/*
- * Create a temporary file rooted in the object database 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);
-
-/*
- * Create a pack .keep file named "name" (which should generally be the output
- * of odb_pack_name). Returns a file descriptor opened for writing, or -1 on
- * error.
- */
-int odb_pack_keep(const char *name);
-
 const char *get_log_output_encoding(void);
 const char *get_commit_output_encoding(void);
 
index fa4121b98ad121a957c2437205b13c894e236a6c..968da27cd41970e855507cf30b9ee2c6b5974798 100644 (file)
@@ -419,6 +419,39 @@ enum scld_error safe_create_leading_directories_const(const char *path)
        return result;
 }
 
+int odb_mkstemp(struct strbuf *temp_filename, const char *pattern)
+{
+       int fd;
+       /*
+        * we let the umask do its job, don't try to be more
+        * restrictive except to remove write permission.
+        */
+       int mode = 0444;
+       git_path_buf(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 */
+       git_path_buf(temp_filename, "objects/%s", pattern);
+       safe_create_leading_directories(temp_filename->buf);
+       return xmkstemp_mode(temp_filename->buf, mode);
+}
+
+int odb_pack_keep(const char *name)
+{
+       int fd;
+
+       fd = open(name, O_RDWR|O_CREAT|O_EXCL, 0600);
+       if (0 <= fd)
+               return fd;
+
+       /* slow path */
+       safe_create_leading_directories_const(name);
+       return open(name, O_RDWR|O_CREAT|O_EXCL, 0600);
+}
+
 static void fill_loose_path(struct strbuf *buf, const struct object_id *oid)
 {
        int i;
index c5f2bb2fc2fe6eb36cafa559b038dcd3095395da..53b8e693b1b74f0e4156df7dce9f07460a65a9a8 100644 (file)
@@ -231,6 +231,21 @@ struct raw_object_store {
 struct raw_object_store *raw_object_store_new(void);
 void raw_object_store_clear(struct raw_object_store *o);
 
+/*
+ * Create a temporary file rooted in the object database 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);
+
+/*
+ * Create a pack .keep file named "name" (which should generally be the output
+ * of odb_pack_name). Returns a file descriptor opened for writing, or -1 on
+ * error.
+ */
+int odb_pack_keep(const char *name);
+
 /*
  * Put in `buf` the name of the file in the local object database that
  * would be used to store a loose object with the specified oid.