refs: add repository argument to for_each_replace_ref
authorStefan Beller <sbeller@google.com>
Thu, 12 Apr 2018 00:21:10 +0000 (17:21 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 12 Apr 2018 02:38:56 +0000 (11:38 +0900)
Add a repository argument to allow for_each_replace_ref 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.

As with the previous commits, use a macro to catch callers passing a
repository other than the_repository at compile time.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/replace.c
refs.c
refs.h
replace_object.c
index 935647be6bdf2ffc2b460038a10e63c2eb387a5c..237ea656cfb6297da175c3d4681edb748883ed55 100644 (file)
@@ -14,6 +14,8 @@
 #include "refs.h"
 #include "parse-options.h"
 #include "run-command.h"
+#include "object-store.h"
+#include "repository.h"
 #include "tag.h"
 
 static const char * const git_replace_usage[] = {
@@ -83,7 +85,7 @@ static int list_replace_refs(const char *pattern, const char *format)
                    "valid formats are 'short', 'medium' and 'long'\n",
                    format);
 
-       for_each_replace_ref(show_reference, (void *)&data);
+       for_each_replace_ref(the_repository, show_reference, (void *)&data);
 
        return 0;
 }
diff --git a/refs.c b/refs.c
index 74d4ed97cbd0a8e99f3629f915921d1f8ae87968..f58b9fb7dfc05d66dda2d08e88a3a7b537c40d10 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -1415,7 +1415,7 @@ int refs_for_each_fullref_in(struct ref_store *refs, const char *prefix,
        return do_for_each_ref(refs, prefix, fn, 0, flag, cb_data);
 }
 
-int for_each_replace_ref(each_ref_fn fn, void *cb_data)
+int for_each_replace_ref_the_repository(each_ref_fn fn, void *cb_data)
 {
        return do_for_each_ref(get_main_ref_store(the_repository),
                               git_replace_ref_base, fn,
diff --git a/refs.h b/refs.h
index 0d013377ce9d589d02ccdedbe8055b4f3696fa34..ab3d2bec2f33b442f369002bc9b8349d49968839 100644 (file)
--- a/refs.h
+++ b/refs.h
@@ -300,7 +300,9 @@ int for_each_fullref_in(const char *prefix, each_ref_fn fn, void *cb_data,
 int for_each_tag_ref(each_ref_fn fn, void *cb_data);
 int for_each_branch_ref(each_ref_fn fn, void *cb_data);
 int for_each_remote_ref(each_ref_fn fn, void *cb_data);
-int for_each_replace_ref(each_ref_fn fn, void *cb_data);
+#define for_each_replace_ref(r, fn, cb) \
+       for_each_replace_ref_##r(fn, cb)
+int for_each_replace_ref_the_repository(each_ref_fn fn, void *cb_data);
 int for_each_glob_ref(each_ref_fn fn, const char *pattern, void *cb_data);
 int for_each_glob_ref_in(each_ref_fn fn, const char *pattern,
                         const char *prefix, void *cb_data);
index b2405f602745b55673ea2e114c3489310fa0d823..16a95ea416d0a417f7b36d6997ec7322dd6df4a2 100644 (file)
@@ -40,7 +40,7 @@ static void prepare_replace_object(void)
                xmalloc(sizeof(*the_repository->objects->replace_map));
        oidmap_init(the_repository->objects->replace_map, 0);
 
-       for_each_replace_ref(register_replace_ref, NULL);
+       for_each_replace_ref(the_repository, register_replace_ref, NULL);
 }
 
 /* We allow "recursive" replacement. Only within reason, though */