enum object_type type;
unsigned long size;
unsigned long disk_size;
- const char *rest;
/*
* If mark_query is true, we do not expand anything, but rather
if (!data->mark_query)
strbuf_addstr(sb, sha1_to_hex(data->sha1));
} else if (is_atom("objecttype", atom, len)) {
- if (!data->mark_query)
+ if (data->mark_query)
+ data->info.typep = &data->type;
+ else
strbuf_addstr(sb, typename(data->type));
} else if (is_atom("objectsize", atom, len)) {
if (data->mark_query)
data->info.disk_sizep = &data->disk_size;
else
strbuf_addf(sb, "%lu", data->disk_size);
- } else if (is_atom("rest", atom, len)) {
- if (!data->mark_query && data->rest)
- strbuf_addstr(sb, data->rest);
} else
die("unknown format element: %.*s", len, atom);
}
return 0;
}
- data->type = sha1_object_info_extended(data->sha1, &data->info);
- if (data->type <= 0) {
+ if (sha1_object_info_extended(data->sha1, &data->info) < 0) {
printf("%s missing\n", obj_name);
fflush(stdout);
return 0;
strbuf_expand(&buf, opt->format, expand_format, &data);
data.mark_query = 0;
- while (strbuf_getline(&buf, stdin, '\n') != EOF) {
- char *p;
- int error;
-
- /*
- * Split at first whitespace, tying off the beginning of the
- * string and saving the remainder (or NULL) in data.rest.
- */
- p = strpbrk(buf.buf, " \t");
- if (p) {
- while (*p && strchr(" \t", *p))
- *p++ = '\0';
- }
- data.rest = p;
+ /*
+ * We are going to call get_sha1 on a potentially very large number of
+ * objects. In most large cases, these will be actual object sha1s. The
+ * cost to double-check that each one is not also a ref (just so we can
+ * warn) ends up dwarfing the actual cost of the object lookups
+ * themselves. We can work around it by just turning off the warning.
+ */
+ warn_on_object_refname_ambiguity = 0;
- error = batch_one_object(buf.buf, opt, &data);
+ while (strbuf_getline(&buf, stdin, '\n') != EOF) {
+ int error = batch_one_object(buf.buf, opt, &data);
if (error)
return error;
}