]>
Commit | Line | Data |
---|---|---|
90c62155 SB |
1 | #ifndef OBJECT_STORE_H |
2 | #define OBJECT_STORE_H | |
3 | ||
0d4a1321 SB |
4 | extern struct alternate_object_database { |
5 | struct alternate_object_database *next; | |
6 | ||
7 | /* see alt_scratch_buf() */ | |
8 | struct strbuf scratch; | |
9 | size_t base_len; | |
10 | ||
11 | /* | |
12 | * Used to store the results of readdir(3) calls when searching | |
13 | * for unique abbreviated hashes. This cache is never | |
14 | * invalidated, thus it's racy and not necessarily accurate. | |
15 | * That's fine for its purpose; don't use it for tasks requiring | |
16 | * greater accuracy! | |
17 | */ | |
18 | char loose_objects_subdir_seen[256]; | |
19 | struct oid_array loose_objects_cache; | |
20 | ||
21 | char path[FLEX_ARRAY]; | |
22 | } *alt_odb_list; | |
23 | void prepare_alt_odb(void); | |
24 | char *compute_alternate_path(const char *path, struct strbuf *err); | |
25 | typedef int alt_odb_fn(struct alternate_object_database *, void *); | |
26 | int foreach_alt_odb(alt_odb_fn, void*); | |
27 | ||
28 | /* | |
29 | * Allocate a "struct alternate_object_database" but do _not_ actually | |
30 | * add it to the list of alternates. | |
31 | */ | |
32 | struct alternate_object_database *alloc_alt_odb(const char *dir); | |
33 | ||
34 | /* | |
35 | * Add the directory to the on-disk alternates file; the new entry will also | |
36 | * take effect in the current process. | |
37 | */ | |
38 | void add_to_alternates_file(const char *dir); | |
39 | ||
40 | /* | |
41 | * Add the directory to the in-memory list of alternates (along with any | |
42 | * recursive alternates it points to), but do not modify the on-disk alternates | |
43 | * file. | |
44 | */ | |
45 | void add_to_alternates_memory(const char *dir); | |
46 | ||
47 | /* | |
48 | * Returns a scratch strbuf pre-filled with the alternate object directory, | |
49 | * including a trailing slash, which can be used to access paths in the | |
50 | * alternate. Always use this over direct access to alt->scratch, as it | |
51 | * cleans up any previous use of the scratch buffer. | |
52 | */ | |
53 | struct strbuf *alt_scratch_buf(struct alternate_object_database *alt); | |
54 | ||
90c62155 SB |
55 | struct raw_object_store { |
56 | /* | |
57 | * Path to the repository's object store. | |
58 | * Cannot be NULL after initialization. | |
59 | */ | |
60 | char *objectdir; | |
61 | ||
62 | /* Path to extra alternate object database if not NULL */ | |
63 | char *alternate_db; | |
64 | }; | |
65 | ||
66 | struct raw_object_store *raw_object_store_new(void); | |
67 | void raw_object_store_clear(struct raw_object_store *o); | |
68 | ||
69 | #endif /* OBJECT_STORE_H */ |