Add a repository argument to allow reprepare_packed_git_mru callers to be more specific about which repository to handle. This is a small mechanical change; it doesn't change the implementation to handle repositories other than the_repository yet. Callers adapted using contrib/coccinelle/packed_git.cocci. As with the previous commits, use a macro to catch callers passing a repository other than the_repository at compile time. Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx> --- builtin/gc.c | 2 +- builtin/receive-pack.c | 3 ++- bulk-checkin.c | 3 ++- contrib/coccinelle/packed_git.cocci | 4 ++++ fetch-pack.c | 3 ++- packfile.c | 2 +- packfile.h | 3 ++- sha1_file.c | 2 +- 8 files changed, 15 insertions(+), 7 deletions(-) diff --git a/builtin/gc.c b/builtin/gc.c index 11312529c8..d0da9e5403 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -475,7 +475,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix) return error(FAILED_RUN, rerere.argv[0]); report_garbage = report_pack_garbage; - reprepare_packed_git(); + reprepare_packed_git(the_repository); if (pack_garbage.nr > 0) clean_pack_garbage(); diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index 6657ba1375..97750d0d4e 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -1,4 +1,5 @@ #include "builtin.h" +#include "repository.h" #include "config.h" #include "lockfile.h" #include "pack.h" @@ -1779,7 +1780,7 @@ static const char *unpack(int err_fd, struct shallow_info *si) status = finish_command(&child); if (status) return "index-pack abnormal exit"; - reprepare_packed_git(); + reprepare_packed_git(the_repository); } return NULL; } diff --git a/bulk-checkin.c b/bulk-checkin.c index 9a1f6c49ab..96f37100fc 100644 --- a/bulk-checkin.c +++ b/bulk-checkin.c @@ -3,6 +3,7 @@ */ #include "cache.h" #include "bulk-checkin.h" +#include "repository.h" #include "csum-file.h" #include "pack.h" #include "strbuf.h" @@ -57,7 +58,7 @@ static void finish_bulk_checkin(struct bulk_checkin_state *state) strbuf_release(&packname); /* Make objects we just wrote available to ourselves */ - reprepare_packed_git(); + reprepare_packed_git(the_repository); } static int already_written(struct bulk_checkin_state *state, unsigned char sha1[]) diff --git a/contrib/coccinelle/packed_git.cocci b/contrib/coccinelle/packed_git.cocci index 7554f4773c..0cb0e95f82 100644 --- a/contrib/coccinelle/packed_git.cocci +++ b/contrib/coccinelle/packed_git.cocci @@ -9,3 +9,7 @@ @@ @@ - prepare_packed_git() + prepare_packed_git(the_repository) + +@@ @@ +- reprepare_packed_git() ++ reprepare_packed_git(the_repository) diff --git a/fetch-pack.c b/fetch-pack.c index 105506e9aa..e9a6683437 100644 --- a/fetch-pack.c +++ b/fetch-pack.c @@ -1,4 +1,5 @@ #include "cache.h" +#include "repository.h" #include "config.h" #include "lockfile.h" #include "refs.h" @@ -1168,7 +1169,7 @@ struct ref *fetch_pack(struct fetch_pack_args *args, prepare_shallow_info(&si, shallow); ref_cpy = do_fetch_pack(args, fd, ref, sought, nr_sought, &si, pack_lockfile); - reprepare_packed_git(); + reprepare_packed_git(the_repository); update_shallow(args, sought, nr_sought, &si); clear_shallow_info(&si); return ref_cpy; diff --git a/packfile.c b/packfile.c index 34b887e7e5..86c3964018 100644 --- a/packfile.c +++ b/packfile.c @@ -883,7 +883,7 @@ void prepare_packed_git_the_repository(void) the_repository->objects.packed_git_initialized = 1; } -void reprepare_packed_git(void) +void reprepare_packed_git_the_repository(void) { the_repository->objects.approximate_object_count_valid = 0; the_repository->objects.packed_git_initialized = 0; diff --git a/packfile.h b/packfile.h index e543a98b23..74f293c439 100644 --- a/packfile.h +++ b/packfile.h @@ -34,7 +34,8 @@ extern void (*report_garbage)(unsigned seen_bits, const char *path); #define prepare_packed_git(r) prepare_packed_git_##r() extern void prepare_packed_git_the_repository(void); -extern void reprepare_packed_git(void); +#define reprepare_packed_git(r) reprepare_packed_git_##r() +extern void reprepare_packed_git_the_repository(void); #define install_packed_git(r, p) install_packed_git_##r(p) extern void install_packed_git_the_repository(struct packed_git *pack); diff --git a/sha1_file.c b/sha1_file.c index 8c599dbfc2..6af88e5b04 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -1209,7 +1209,7 @@ int sha1_object_info_extended(const unsigned char *sha1, struct object_info *oi, if (flags & OBJECT_INFO_QUICK) { return -1; } else { - reprepare_packed_git(); + reprepare_packed_git(the_repository); if (!find_pack_entry(real, &e)) return -1; } -- 2.14.1.581.gf28d330327