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;
{
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) {
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));
{
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);
} 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.:
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;
}
#include "gpg-interface.h"
#include "hex.h"
#include "packfile.h"
+#include "repository.h"
const char *tag_type = "tag";
return 0;
}
-int parse_tag(struct tag *item)
+int parse_tag(struct repository *r, struct tag *item)
{
enum object_type type;
void *data;
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));
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;
}
};
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,
static int process_tag(struct walker *walker, struct tag *tag)
{
- if (parse_tag(tag))
+ if (parse_tag(the_repository, tag))
return -1;
return process(walker, tag->tagged);
}