walker: convert to struct object_id

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
brian m. carlson 2017-10-15 22:06:48 +00:00 committed by Junio C Hamano
parent 111ef79afe
commit 94f5a121d4

View file

@ -7,7 +7,7 @@
#include "blob.h"
#include "refs.h"
static unsigned char current_commit_sha1[20];
static struct object_id current_commit_oid;
void walker_say(struct walker *walker, const char *fmt, ...)
{
@ -24,9 +24,9 @@ static void report_missing(const struct object *obj)
fprintf(stderr, "Cannot obtain needed %s %s\n",
obj->type ? typename(obj->type): "object",
oid_to_hex(&obj->oid));
if (!is_null_sha1(current_commit_sha1))
if (!is_null_oid(&current_commit_oid))
fprintf(stderr, "while processing commit %s.\n",
sha1_to_hex(current_commit_sha1));
oid_to_hex(&current_commit_oid));
}
static int process(struct walker *walker, struct object *obj);
@ -82,7 +82,7 @@ static int process_commit(struct walker *walker, struct commit *commit)
if (commit->object.flags & COMPLETE)
return 0;
hashcpy(current_commit_sha1, commit->object.oid.hash);
oidcpy(&current_commit_oid, &commit->object.oid);
walker_say(walker, "walk %s\n", oid_to_hex(&commit->object.oid));
@ -187,14 +187,14 @@ static int loop(struct walker *walker)
return 0;
}
static int interpret_target(struct walker *walker, char *target, unsigned char *sha1)
static int interpret_target(struct walker *walker, char *target, struct object_id *oid)
{
if (!get_sha1_hex(target, sha1))
if (!get_oid_hex(target, oid))
return 0;
if (!check_refname_format(target, 0)) {
struct ref *ref = alloc_ref(target);
if (!walker->fetch_ref(walker, ref)) {
hashcpy(sha1, ref->old_oid.hash);
oidcpy(oid, &ref->old_oid);
free(ref);
return 0;
}
@ -259,7 +259,7 @@ int walker_fetch(struct walker *walker, int targets, char **target,
struct strbuf refname = STRBUF_INIT;
struct strbuf err = STRBUF_INIT;
struct ref_transaction *transaction = NULL;
unsigned char *sha1 = xmalloc(targets * 20);
struct object_id *oids = xmalloc(targets * sizeof(struct object_id));
char *msg = NULL;
int i, ret = -1;
@ -279,11 +279,11 @@ int walker_fetch(struct walker *walker, int targets, char **target,
}
for (i = 0; i < targets; i++) {
if (interpret_target(walker, target[i], &sha1[20 * i])) {
if (interpret_target(walker, target[i], oids + i)) {
error("Could not interpret response from server '%s' as something to pull", target[i]);
goto done;
}
if (process(walker, lookup_unknown_object(&sha1[20 * i])))
if (process(walker, lookup_unknown_object(oids[i].hash)))
goto done;
}
@ -304,7 +304,7 @@ int walker_fetch(struct walker *walker, int targets, char **target,
strbuf_reset(&refname);
strbuf_addf(&refname, "refs/%s", write_ref[i]);
if (ref_transaction_update(transaction, refname.buf,
&sha1[20 * i], NULL, 0,
oids[i].hash, NULL, 0,
msg ? msg : "fetch (unknown)",
&err)) {
error("%s", err.buf);
@ -321,7 +321,7 @@ int walker_fetch(struct walker *walker, int targets, char **target,
done:
ref_transaction_free(transaction);
free(msg);
free(sha1);
free(oids);
strbuf_release(&err);
strbuf_release(&refname);
return ret;