Browse Source

archive.c: convert to use struct object_id

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
brian m. carlson 10 years ago committed by Junio C Hamano
parent
commit
13609673c4
  1. 22
      archive.c

22
archive.c

@ -101,7 +101,7 @@ static void setup_archive_check(struct git_attr_check *check)


struct directory { struct directory {
struct directory *up; struct directory *up;
unsigned char sha1[20]; struct object_id oid;
int baselen, len; int baselen, len;
unsigned mode; unsigned mode;
int stage; int stage;
@ -177,7 +177,7 @@ static void queue_directory(const unsigned char *sha1,
d->stage = stage; d->stage = stage;
c->bottom = d; c->bottom = d;
d->len = sprintf(d->path, "%.*s%s/", (int)base->len, base->buf, filename); d->len = sprintf(d->path, "%.*s%s/", (int)base->len, base->buf, filename);
hashcpy(d->sha1, sha1); hashcpy(d->oid.hash, sha1);
} }


static int write_directory(struct archiver_context *c) static int write_directory(struct archiver_context *c)
@ -191,7 +191,7 @@ static int write_directory(struct archiver_context *c)
d->path[d->len - 1] = '\0'; /* no trailing slash */ d->path[d->len - 1] = '\0'; /* no trailing slash */
ret = ret =
write_directory(c) || write_directory(c) ||
write_archive_entry(d->sha1, d->path, d->baselen, write_archive_entry(d->oid.hash, d->path, d->baselen,
d->path + d->baselen, d->mode, d->path + d->baselen, d->mode,
d->stage, c) != READ_TREE_RECURSIVE; d->stage, c) != READ_TREE_RECURSIVE;
free(d); free(d);
@ -354,7 +354,7 @@ static void parse_treeish_arg(const char **argv,
time_t archive_time; time_t archive_time;
struct tree *tree; struct tree *tree;
const struct commit *commit; const struct commit *commit;
unsigned char sha1[20]; struct object_id oid;


/* Remotes are only allowed to fetch actual refs */ /* Remotes are only allowed to fetch actual refs */
if (remote && !remote_allow_unreachable) { if (remote && !remote_allow_unreachable) {
@ -362,15 +362,15 @@ static void parse_treeish_arg(const char **argv,
const char *colon = strchrnul(name, ':'); const char *colon = strchrnul(name, ':');
int refnamelen = colon - name; int refnamelen = colon - name;


if (!dwim_ref(name, refnamelen, sha1, &ref)) if (!dwim_ref(name, refnamelen, oid.hash, &ref))
die("no such ref: %.*s", refnamelen, name); die("no such ref: %.*s", refnamelen, name);
free(ref); free(ref);
} }


if (get_sha1(name, sha1)) if (get_sha1(name, oid.hash))
die("Not a valid object name"); die("Not a valid object name");


commit = lookup_commit_reference_gently(sha1, 1); commit = lookup_commit_reference_gently(oid.hash, 1);
if (commit) { if (commit) {
commit_sha1 = commit->object.sha1; commit_sha1 = commit->object.sha1;
archive_time = commit->date; archive_time = commit->date;
@ -379,21 +379,21 @@ static void parse_treeish_arg(const char **argv,
archive_time = time(NULL); archive_time = time(NULL);
} }


tree = parse_tree_indirect(sha1); tree = parse_tree_indirect(oid.hash);
if (tree == NULL) if (tree == NULL)
die("not a tree object"); die("not a tree object");


if (prefix) { if (prefix) {
unsigned char tree_sha1[20]; struct object_id tree_oid;
unsigned int mode; unsigned int mode;
int err; int err;


err = get_tree_entry(tree->object.sha1, prefix, err = get_tree_entry(tree->object.sha1, prefix,
tree_sha1, &mode); tree_oid.hash, &mode);
if (err || !S_ISDIR(mode)) if (err || !S_ISDIR(mode))
die("current working directory is untracked"); die("current working directory is untracked");


tree = parse_tree_indirect(tree_sha1); tree = parse_tree_indirect(tree_oid.hash);
} }
ar_args->tree = tree; ar_args->tree = tree;
ar_args->commit_sha1 = commit_sha1; ar_args->commit_sha1 = commit_sha1;

Loading…
Cancel
Save