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: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
23a3f0cb16
commit
60ce76d358
@ -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)
|
|||||||
"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;
|
||||||
}
|
}
|
||||||
|
2
refs.c
2
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);
|
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,
|
||||||
|
4
refs.h
4
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_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)
|
|||||||
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 */
|
||||||
|
Reference in New Issue
Block a user