mirror of
https://github.com/git/git.git
synced 2026-01-10 12:53:12 +09:00
tag: support arbitrary repositories in parse_tag()
Allow callers of parse_tag() pass in the repository to use. Let most of them pass in the_repository to get the same result as before. One of them has stopped using the_repository in ef9b0370da (sha1-name.c: store and use repo in struct disambiguate_state, 2019-04-16); let it pass in its stored repository. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
154717b3b0
commit
b6e4cc8c32
@ -112,13 +112,13 @@ static int replace_name(struct commit_name *e,
|
||||
|
||||
if (!e->tag) {
|
||||
t = lookup_tag(the_repository, &e->oid);
|
||||
if (!t || parse_tag(t))
|
||||
if (!t || parse_tag(the_repository, t))
|
||||
return 1;
|
||||
e->tag = t;
|
||||
}
|
||||
|
||||
t = lookup_tag(the_repository, oid);
|
||||
if (!t || parse_tag(t))
|
||||
if (!t || parse_tag(the_repository, t))
|
||||
return 0;
|
||||
*tag = t;
|
||||
|
||||
@ -335,7 +335,7 @@ static void append_name(struct commit_name *n, struct strbuf *dst)
|
||||
{
|
||||
if (n->prio == 2 && !n->tag) {
|
||||
n->tag = lookup_tag(the_repository, &n->oid);
|
||||
if (!n->tag || parse_tag(n->tag))
|
||||
if (!n->tag || parse_tag(the_repository, n->tag))
|
||||
die(_("annotated tag %s not available"), n->path);
|
||||
}
|
||||
if (n->tag && !n->name_checked) {
|
||||
|
||||
@ -3293,7 +3293,7 @@ static void add_tag_chain(const struct object_id *oid)
|
||||
|
||||
tag = lookup_tag(the_repository, oid);
|
||||
while (1) {
|
||||
if (!tag || parse_tag(tag) || !tag->tagged)
|
||||
if (!tag || parse_tag(the_repository, tag) || !tag->tagged)
|
||||
die(_("unable to pack objects reachable from tag %s"),
|
||||
oid_to_hex(oid));
|
||||
|
||||
|
||||
2
fsck.c
2
fsck.c
@ -474,7 +474,7 @@ static int fsck_walk_tag(struct tag *tag, void *data, struct fsck_options *optio
|
||||
{
|
||||
const char *name = fsck_get_object_name(options, &tag->object.oid);
|
||||
|
||||
if (parse_tag(tag))
|
||||
if (parse_tag(the_repository, tag))
|
||||
return -1;
|
||||
if (name)
|
||||
fsck_put_object_name(options, &tag->tagged->oid, "%s", name);
|
||||
|
||||
@ -449,7 +449,7 @@ static int show_ambiguous_object(const struct object_id *oid, void *data)
|
||||
} else if (type == OBJ_TAG) {
|
||||
struct tag *tag = lookup_tag(ds->repo, oid);
|
||||
|
||||
if (!parse_tag(tag) && tag->tag) {
|
||||
if (!parse_tag(ds->repo, tag) && tag->tag) {
|
||||
/*
|
||||
* TRANSLATORS: This is a line of ambiguous
|
||||
* tag object output. E.g.:
|
||||
|
||||
@ -2866,7 +2866,7 @@ static int match_points_at(struct oid_array *points_at,
|
||||
while (obj && obj->type == OBJ_TAG) {
|
||||
struct tag *tag = (struct tag *)obj;
|
||||
|
||||
if (parse_tag(tag) < 0) {
|
||||
if (parse_tag(the_repository, tag) < 0) {
|
||||
obj = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
8
tag.c
8
tag.c
@ -13,6 +13,7 @@
|
||||
#include "gpg-interface.h"
|
||||
#include "hex.h"
|
||||
#include "packfile.h"
|
||||
#include "repository.h"
|
||||
|
||||
const char *tag_type = "tag";
|
||||
|
||||
@ -203,7 +204,7 @@ int parse_tag_buffer(struct repository *r, struct tag *item, const void *data, u
|
||||
return 0;
|
||||
}
|
||||
|
||||
int parse_tag(struct tag *item)
|
||||
int parse_tag(struct repository *r, struct tag *item)
|
||||
{
|
||||
enum object_type type;
|
||||
void *data;
|
||||
@ -212,8 +213,7 @@ int parse_tag(struct tag *item)
|
||||
|
||||
if (item->object.parsed)
|
||||
return 0;
|
||||
data = odb_read_object(the_repository->objects, &item->object.oid,
|
||||
&type, &size);
|
||||
data = odb_read_object(r->objects, &item->object.oid, &type, &size);
|
||||
if (!data)
|
||||
return error("Could not read %s",
|
||||
oid_to_hex(&item->object.oid));
|
||||
@ -222,7 +222,7 @@ int parse_tag(struct tag *item)
|
||||
return error("Object %s not a tag",
|
||||
oid_to_hex(&item->object.oid));
|
||||
}
|
||||
ret = parse_tag_buffer(the_repository, item, data, size);
|
||||
ret = parse_tag_buffer(r, item, data, size);
|
||||
free(data);
|
||||
return ret;
|
||||
}
|
||||
|
||||
2
tag.h
2
tag.h
@ -13,7 +13,7 @@ struct tag {
|
||||
};
|
||||
struct tag *lookup_tag(struct repository *r, const struct object_id *oid);
|
||||
int parse_tag_buffer(struct repository *r, struct tag *item, const void *data, unsigned long size);
|
||||
int parse_tag(struct tag *item);
|
||||
int parse_tag(struct repository *r, struct tag *item);
|
||||
void release_tag_memory(struct tag *t);
|
||||
struct object *deref_tag(struct repository *r, struct object *, const char *, int);
|
||||
int gpg_verify_tag(struct repository *r, const struct object_id *oid,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user