In a process with multiple repositories open, packfile accessors
should be associated to a single repository and not shared globally.
Move packed_git and packed_git_mru into the_repository and adjust
callers to reflect this.
Patch generated by
1. Moving the struct packed_git declaration to object-store.h
and packed_git, packed_git_mru globals to struct object_store.
2. Applying the semantic patch to adjust callers.
@@ @@
- packed_git
+ the_repository->objects.packed_git
@@ @@
- packed_git_mru
+ the_repository->objects.packed_git_mru
3. Applying line wrapping fixes from "make style" to break the
resulting long lines.
4. Adding missing #includes of repository.h and object-store.h
where needed.
5. As the packfiles are now owned by an objectstore/repository, which
is ephemeral unlike globals, we introduce memory leaks. So address
them in raw_object_store_clear().
Signed-off-by: Stefan Beller
Signed-off-by: Jonathan Nieder
---
builtin/count-objects.c | 6 --
builtin/fsck.c | 7 +--
builtin/gc.c | 4 +++-
builtin/index-pack.c | 1 +
builtin/pack-objects.c | 19 +++
builtin/pack-redundant.c | 6 --
builtin/receive-pack.c | 1 +
cache.h | 29 -
fast-import.c| 6 --
http-backend.c | 6 --
http-push.c | 1 +
http-walker.c| 1 +
http.c | 1 +
object-store.h | 36 +++-
object.c | 7 +++
pack-bitmap.c| 4 +++-
pack-check.c | 1 +
pack-revindex.c | 1 +
packfile.c | 39 ---
reachable.c | 1 +
repository.c | 3 +++
server-info.c| 6 --
sha1_name.c | 5 +++--
23 files changed, 118 insertions(+), 73 deletions(-)
diff --git a/builtin/count-objects.c b/builtin/count-objects.c
index 33343818c8..9334648dcc 100644
--- a/builtin/count-objects.c
+++ b/builtin/count-objects.c
@@ -7,6 +7,8 @@
#include "cache.h"
#include "config.h"
#include "dir.h"
+#include "repository.h"
+#include "object-store.h"
#include "builtin.h"
#include "parse-options.h"
#include "quote.h"
@@ -120,9 +122,9 @@ int cmd_count_objects(int argc, const char **argv, const
char *prefix)
struct strbuf loose_buf = STRBUF_INIT;
struct strbuf pack_buf = STRBUF_INIT;
struct strbuf garbage_buf = STRBUF_INIT;
- if (!packed_git)
+ if (!the_repository->objects.packed_git)
prepare_packed_git();
- for (p = packed_git; p; p = p->next) {
+ for (p = the_repository->objects.packed_git; p; p = p->next) {
if (!p->pack_local)
continue;
if (open_pack_index(p))
diff --git a/builtin/fsck.c b/builtin/fsck.c
index 908e4f092a..2e99e02128 100644
--- a/builtin/fsck.c
+++ b/builtin/fsck.c
@@ -2,6 +2,7 @@
#include "cache.h"
#include "repository.h"
#include "config.h"
+#include "object-store.h"
#include "commit.h"
#include "tree.h"
#include "blob.h"
@@ -729,7 +730,8 @@ int cmd_fsck(int argc, const char **argv, const char
*prefix)
prepare_packed_git();
if (show_progress) {
- for (p = packed_git; p; p = p->next) {
+ for (p = the_repository->objects.packed_git; p;
+p = p->next) {
if (open_pack_index(p))
continue;
total += p->num_objects;
@@ -737,7 +739,8 @@ int cmd_fsck(int argc, const char **argv, const char
*prefix)
progress = start_progress(_("Checking
objects"), total);
}
- for (p = packed_git; p; p = p->next) {
+ for (p = the_repository->objects.packed_git; p;
+p = p->next) {
/* verify gives error messages itself */
if (verify_pack(p, fsck_obj_buffer,
progress, count))
diff --git a/builtin/gc.c b/builtin/gc.c
index 77fa720bd0..96ff790867 100644
--- a/builtin/gc.c
+++ b/builtin/gc.c
@@ -11,6 +11,7 @@
*/
#include "builtin.h"
+#include "repository.h"
#include "config.h"
#include "tempfile.h"
#include "lockfile.h"
@@ -18,6 +19,7 @@
#include "run-command.h"
#include "sigchain.h"
#include "argv-array.h"
+#include "object-store.h"
#include "commit.h"
#include "packfile.h"
@@ -173,7 +175,7 @@ static int too_many_packs(void)
return 0;
prepare_packed_git();
-