提交 60ce76d3 编写于 作者: S Stefan Beller 提交者: Junio C Hamano

refs: add repository argument to for_each_replace_ref

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: NJonathan Nieder <jrnieder@gmail.com>
Signed-off-by: NStefan Beller <sbeller@google.com>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 23a3f0cb
...@@ -14,6 +14,8 @@ ...@@ -14,6 +14,8 @@
#include "refs.h" #include "refs.h"
#include "parse-options.h" #include "parse-options.h"
#include "run-command.h" #include "run-command.h"
#include "object-store.h"
#include "repository.h"
#include "tag.h" #include "tag.h"
static const char * const git_replace_usage[] = { static const char * const git_replace_usage[] = {
...@@ -83,7 +85,7 @@ static int list_replace_refs(const char *pattern, const char *format) ...@@ -83,7 +85,7 @@ static int list_replace_refs(const char *pattern, const char *format)
"valid formats are 'short', 'medium' and 'long'\n", "valid formats are 'short', 'medium' and 'long'\n",
format); format);
for_each_replace_ref(show_reference, (void *)&data); for_each_replace_ref(the_repository, show_reference, (void *)&data);
return 0; return 0;
} }
......
...@@ -1415,7 +1415,7 @@ int refs_for_each_fullref_in(struct ref_store *refs, const char *prefix, ...@@ -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); 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), return do_for_each_ref(get_main_ref_store(the_repository),
git_replace_ref_base, fn, git_replace_ref_base, fn,
......
...@@ -300,7 +300,9 @@ int for_each_fullref_in(const char *prefix, each_ref_fn fn, void *cb_data, ...@@ -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_tag_ref(each_ref_fn fn, void *cb_data);
int for_each_branch_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_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(each_ref_fn fn, const char *pattern, void *cb_data);
int for_each_glob_ref_in(each_ref_fn fn, const char *pattern, int for_each_glob_ref_in(each_ref_fn fn, const char *pattern,
const char *prefix, void *cb_data); const char *prefix, void *cb_data);
......
...@@ -40,7 +40,7 @@ static void prepare_replace_object(void) ...@@ -40,7 +40,7 @@ static void prepare_replace_object(void)
xmalloc(sizeof(*the_repository->objects->replace_map)); xmalloc(sizeof(*the_repository->objects->replace_map));
oidmap_init(the_repository->objects->replace_map, 0); 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 */ /* We allow "recursive" replacement. Only within reason, though */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册