diff options
author | Alexandre Julliard <julliard@winehq.org> | 2006-11-02 12:13:32 +0100 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-11-02 18:04:40 -0800 |
commit | ca8e2d86c44e5cea0def1d01edfb4e6aaf642dee (patch) | |
tree | 4acbbbb6f7b39d7fe311e4ed14a640bfcd39baa9 | |
parent | 5c1e235f0f2a4586ca46a5503f6283db0ac1b9ac (diff) | |
download | git-ca8e2d86c44e5cea0def1d01edfb4e6aaf642dee.tar.gz git-ca8e2d86c44e5cea0def1d01edfb4e6aaf642dee.tar.xz |
pack-refs: Store the full name of the ref even when packing only tags.
Using for_each_tag_ref() to enumerate tags is wrong since it removes
the refs/tags/ prefix, we need to always use for_each_ref() and filter
out non-tag references in the callback.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r-- | builtin-pack-refs.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/builtin-pack-refs.c b/builtin-pack-refs.c index 108765767..042d2718f 100644 --- a/builtin-pack-refs.c +++ b/builtin-pack-refs.c @@ -12,6 +12,7 @@ struct ref_to_prune { struct pack_refs_cb_data { int prune; + int all; struct ref_to_prune *ref_to_prune; FILE *refs_file; }; @@ -29,6 +30,8 @@ static int handle_one_ref(const char *path, const unsigned char *sha1, { struct pack_refs_cb_data *cb = cb_data; + if (!cb->all && strncmp(path, "refs/tags/", 10)) + return 0; /* Do not pack the symbolic refs */ if (!(flags & REF_ISSYMREF)) fprintf(cb->refs_file, "%s %s\n", sha1_to_hex(sha1), path); @@ -68,7 +71,6 @@ int cmd_pack_refs(int argc, const char **argv, const char *prefix) { int fd, i; struct pack_refs_cb_data cbdata; - int (*iterate_ref)(each_ref_fn, void *) = for_each_tag_ref; memset(&cbdata, 0, sizeof(cbdata)); @@ -79,7 +81,7 @@ int cmd_pack_refs(int argc, const char **argv, const char *prefix) continue; } if (!strcmp(arg, "--all")) { - iterate_ref = for_each_ref; + cbdata.all = 1; continue; } /* perhaps other parameters later... */ @@ -93,7 +95,7 @@ int cmd_pack_refs(int argc, const char **argv, const char *prefix) if (!cbdata.refs_file) die("unable to create ref-pack file structure (%s)", strerror(errno)); - iterate_ref(handle_one_ref, &cbdata); + for_each_ref(handle_one_ref, &cbdata); fflush(cbdata.refs_file); fsync(fd); fclose(cbdata.refs_file); |