aboutsummaryrefslogtreecommitdiffstats
path: root/odb.h
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2025-08-01 11:31:29 -0700
committerJunio C Hamano <gitster@pobox.com>2025-08-01 11:31:29 -0700
commit0c1253014ef276b67504bbd1e56e386049eefdbd (patch)
tree0eef35ae86011e53d94e93a8c95971c564a3f157 /odb.h
parentMerge branch 'lm/add-p-context' into next (diff)
parentobject-file: get rid of `the_repository` in index-related functions (diff)
downloadgit-0c1253014ef276b67504bbd1e56e386049eefdbd.tar.gz
git-0c1253014ef276b67504bbd1e56e386049eefdbd.zip
Merge branch 'ps/object-file-wo-the-repository' into next
Reduce implicit assumption and dependence on the_repository in the object-file subsystem. * ps/object-file-wo-the-repository: object-file: get rid of `the_repository` in index-related functions object-file: get rid of `the_repository` in `force_object_loose()` object-file: get rid of `the_repository` in `read_loose_object()` object-file: get rid of `the_repository` in loose object iterators object-file: remove declaration for `for_each_file_in_obj_subdir()` object-file: inline `for_each_loose_file_in_objdir_buf()` object-file: get rid of `the_repository` when writing objects odb: introduce `odb_write_object()` loose: write loose objects map via their source object-file: get rid of `the_repository` in `finalize_object_file()` object-file: get rid of `the_repository` in `loose_object_info()` object-file: get rid of `the_repository` when freshening objects object-file: inline `check_and_freshen()` functions object-file: get rid of `the_repository` in `has_loose_object()` object-file: stop using `the_hash_algo` object-file: fix -Wsign-compare warnings
Diffstat (limited to 'odb.h')
-rw-r--r--odb.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/odb.h b/odb.h
index 09177bf430..3dfc66d75a 100644
--- a/odb.h
+++ b/odb.h
@@ -437,6 +437,44 @@ enum for_each_object_flags {
FOR_EACH_OBJECT_SKIP_ON_DISK_KEPT_PACKS = (1<<4),
};
+enum {
+ /*
+ * By default, `odb_write_object()` does not actually write anything
+ * into the object store, but only computes the object ID. This flag
+ * changes that so that the object will be written as a loose object
+ * and persisted.
+ */
+ WRITE_OBJECT_PERSIST = (1 << 0),
+
+ /*
+ * Do not print an error in case something goes wrong.
+ */
+ WRITE_OBJECT_SILENT = (1 << 1),
+};
+
+/*
+ * Write an object into the object database. The object is being written into
+ * the local alternate of the repository. If provided, the converted object ID
+ * as well as the compatibility object ID are written to the respective
+ * pointers.
+ *
+ * Returns 0 on success, a negative error code otherwise.
+ */
+int odb_write_object_ext(struct object_database *odb,
+ const void *buf, unsigned long len,
+ enum object_type type,
+ struct object_id *oid,
+ struct object_id *compat_oid,
+ unsigned flags);
+
+static inline int odb_write_object(struct object_database *odb,
+ const void *buf, unsigned long len,
+ enum object_type type,
+ struct object_id *oid)
+{
+ return odb_write_object_ext(odb, buf, len, type, oid, NULL, 0);
+}
+
/* Compatibility wrappers, to be removed once Git 2.51 has been released. */
#include "repository.h"