|
24 | 24 | #include "commit-graph.h" |
25 | 25 | #include "pack-revindex.h" |
26 | 26 | #include "promisor-remote.h" |
| 27 | +#include "config.h" |
| 28 | +#include "pack-objects.h" |
27 | 29 |
|
28 | 30 | char *odb_pack_name(struct repository *r, struct strbuf *buf, |
29 | 31 | const unsigned char *hash, const char *ext) |
@@ -1496,7 +1498,9 @@ void clear_delta_base_cache(void) |
1496 | 1498 | } |
1497 | 1499 |
|
1498 | 1500 | static void add_delta_base_cache(struct packed_git *p, off_t base_offset, |
1499 | | - void *base, unsigned long base_size, enum object_type type) |
| 1501 | + void *base, unsigned long base_size, |
| 1502 | + unsigned long delta_base_cache_limit, |
| 1503 | + enum object_type type) |
1500 | 1504 | { |
1501 | 1505 | struct delta_base_cache_entry *ent; |
1502 | 1506 | struct list_head *lru, *tmp; |
@@ -1697,6 +1701,9 @@ void *unpack_entry(struct repository *r, struct packed_git *p, off_t obj_offset, |
1697 | 1701 | struct unpack_entry_stack_ent *delta_stack = small_delta_stack; |
1698 | 1702 | int delta_stack_nr = 0, delta_stack_alloc = UNPACK_ENTRY_STACK_PREALLOC; |
1699 | 1703 | int base_from_cache = 0; |
| 1704 | + unsigned long delta_base_cache_limit = DEFAULT_DELTA_BASE_CACHE_LIMIT; |
| 1705 | + |
| 1706 | + repo_config_get_ulong(r, "core.deltabasecachelimit", &delta_base_cache_limit); |
1700 | 1707 |
|
1701 | 1708 | write_pack_access_log(p, obj_offset); |
1702 | 1709 |
|
@@ -1878,7 +1885,9 @@ void *unpack_entry(struct repository *r, struct packed_git *p, off_t obj_offset, |
1878 | 1885 | * before we are done using it. |
1879 | 1886 | */ |
1880 | 1887 | if (!external_base) |
1881 | | - add_delta_base_cache(p, base_obj_offset, base, base_size, type); |
| 1888 | + add_delta_base_cache(p, base_obj_offset, base, |
| 1889 | + base_size, delta_base_cache_limit, |
| 1890 | + type); |
1882 | 1891 |
|
1883 | 1892 | free(delta_data); |
1884 | 1893 | free(external_base); |
|
0 commit comments