зеркало из https://github.com/microsoft/git.git
refs: move head_ref{,_submodule} to the common code
These don't use any backend-specific functions. These were previously defined in terms of the do_head_ref helper function, but since they are otherwise identical, we don't need that function. Signed-off-by: David Turner <dturner@twopensource.com> Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
274db840b4
Коммит
2bf68ed5aa
23
refs.c
23
refs.c
|
@ -1080,3 +1080,26 @@ int rename_ref_available(const char *oldname, const char *newname)
|
|||
strbuf_release(&err);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int head_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data)
|
||||
{
|
||||
struct object_id oid;
|
||||
int flag;
|
||||
|
||||
if (submodule) {
|
||||
if (resolve_gitlink_ref(submodule, "HEAD", oid.hash) == 0)
|
||||
return fn("HEAD", &oid, 0, cb_data);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!read_ref_full("HEAD", RESOLVE_REF_READING, oid.hash, &flag))
|
||||
return fn("HEAD", &oid, flag, cb_data);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int head_ref(each_ref_fn fn, void *cb_data)
|
||||
{
|
||||
return head_ref_submodule(NULL, fn, cb_data);
|
||||
}
|
||||
|
|
|
@ -1745,34 +1745,6 @@ static int do_for_each_ref(struct ref_cache *refs, const char *base,
|
|||
return do_for_each_entry(refs, base, do_one_ref, &data);
|
||||
}
|
||||
|
||||
static int do_head_ref(const char *submodule, each_ref_fn fn, void *cb_data)
|
||||
{
|
||||
struct object_id oid;
|
||||
int flag;
|
||||
|
||||
if (submodule) {
|
||||
if (resolve_gitlink_ref(submodule, "HEAD", oid.hash) == 0)
|
||||
return fn("HEAD", &oid, 0, cb_data);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!read_ref_full("HEAD", RESOLVE_REF_READING, oid.hash, &flag))
|
||||
return fn("HEAD", &oid, flag, cb_data);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int head_ref(each_ref_fn fn, void *cb_data)
|
||||
{
|
||||
return do_head_ref(NULL, fn, cb_data);
|
||||
}
|
||||
|
||||
int head_ref_submodule(const char *submodule, each_ref_fn fn, void *cb_data)
|
||||
{
|
||||
return do_head_ref(submodule, fn, cb_data);
|
||||
}
|
||||
|
||||
int for_each_ref(each_ref_fn fn, void *cb_data)
|
||||
{
|
||||
return do_for_each_ref(&ref_cache, "", fn, 0, 0, cb_data);
|
||||
|
|
Загрузка…
Ссылка в новой задаче