diff options
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | 2007-11-22 12:24:59 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-11-22 15:15:25 -0800 |
commit | c5546e88fe492558313965a49512ce5c71a98dfe (patch) | |
tree | fa42d6db43daf617f34eaad503ad4bfac42b5274 /builtin-bundle.c | |
parent | send-email: add transfer encoding header with content-type (diff) | |
download | tgif-c5546e88fe492558313965a49512ce5c71a98dfe.tar.xz |
bundle create: keep symbolic refs' names instead of resolving them
When creating a bundle, symbolic refs used to be resolved to the
non-symbolic refs they point to before being written to the list
of contained refs. I.e. "git bundle create a1.bundle HEAD master"
would show something like
388afe7881b33102fada216dd07806728773c011 refs/heads/master
388afe7881b33102fada216dd07806728773c011 refs/heads/master
instead of
388afe7881b33102fada216dd07806728773c011 HEAD
388afe7881b33102fada216dd07806728773c011 refs/heads/master
Introduce a special handling so that the symbolic refs are listed
with the names passed on the command line.
Noticed by Santi BĂ©jar.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-bundle.c')
-rw-r--r-- | builtin-bundle.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/builtin-bundle.c b/builtin-bundle.c index 1b650069c9..d1840555d6 100644 --- a/builtin-bundle.c +++ b/builtin-bundle.c @@ -6,6 +6,7 @@ #include "revision.h" #include "list-objects.h" #include "run-command.h" +#include "refs.h" /* * Basic handler for bundle files to connect repositories via sneakernet. @@ -253,11 +254,17 @@ static int create_bundle(struct bundle_header *header, const char *path, struct object_array_entry *e = revs.pending.objects + i; unsigned char sha1[20]; char *ref; + const char *display_ref; + int flag; if (e->item->flags & UNINTERESTING) continue; if (dwim_ref(e->name, strlen(e->name), sha1, &ref) != 1) continue; + if (!resolve_ref(e->name, sha1, 1, &flag)) + flag = 0; + display_ref = (flag & REF_ISSYMREF) ? e->name : ref; + /* * Make sure the refs we wrote out is correct; --max-count and * other limiting options could have prevented all the tips @@ -308,7 +315,7 @@ static int create_bundle(struct bundle_header *header, const char *path, ref_count++; write_or_die(bundle_fd, sha1_to_hex(e->item->sha1), 40); write_or_die(bundle_fd, " ", 1); - write_or_die(bundle_fd, ref, strlen(ref)); + write_or_die(bundle_fd, display_ref, strlen(display_ref)); write_or_die(bundle_fd, "\n", 1); free(ref); } |