sequencer: fast-forward `merge` commands, if possible
[gitweb.git] / object-store.h
index c687ab7587fb7f71128067f47f757c6b8b9091a5..fef33f345f0a2334f99e09f544d8ea9a8b034e81 100644 (file)
@@ -18,9 +18,13 @@ struct alternate_object_database {
        char loose_objects_subdir_seen[256];
        struct oid_array loose_objects_cache;
 
+       /*
+        * Path to the alternative object store. If this is a relative path,
+        * it is relative to the current working directory.
+        */
        char path[FLEX_ARRAY];
 };
-void prepare_alt_odb(void);
+void prepare_alt_odb(struct repository *r);
 char *compute_alternate_path(const char *path, struct strbuf *err);
 typedef int alt_odb_fn(struct alternate_object_database *, void *);
 int foreach_alt_odb(alt_odb_fn, void*);
@@ -98,9 +102,31 @@ struct raw_object_store {
        struct packed_git *packed_git;
        /* A most-recently-used ordered version of the packed_git list. */
        struct list_head packed_git_mru;
+
+       /*
+        * A fast, rough count of the number of objects in the repository.
+        * These two fields are not meant for direct access. Use
+        * approximate_object_count() instead.
+        */
+       unsigned long approximate_object_count;
+       unsigned approximate_object_count_valid : 1;
+
+       /*
+        * Whether packed_git has already been populated with this repository's
+        * packs.
+        */
+       unsigned packed_git_initialized : 1;
 };
 
 struct raw_object_store *raw_object_store_new(void);
 void raw_object_store_clear(struct raw_object_store *o);
 
+/*
+ * 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 sha1.
+ */
+void sha1_file_name(struct repository *r, struct strbuf *buf, const unsigned char *sha1);
+
+void *map_sha1_file(struct repository *r, const unsigned char *sha1, unsigned long *size);
+
 #endif /* OBJECT_STORE_H */