summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 8641ee3)
raw | patch | inline | side by side (parent: 8641ee3)
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | |
Thu, 22 Nov 2007 12:24:59 +0000 (12:24 +0000) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Thu, 22 Nov 2007 23:15:25 +0000 (15:15 -0800) |
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>
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>
builtin-bundle.c | patch | blob | history | |
t/t5510-fetch.sh | patch | blob | history |
diff --git a/builtin-bundle.c b/builtin-bundle.c
index 1b650069c929744c43f95e62ca49f8a542a70111..d1840555d6ffe589d60add61b172dd329545f376 100644 (file)
--- a/builtin-bundle.c
+++ b/builtin-bundle.c
#include "revision.h"
#include "list-objects.h"
#include "run-command.h"
+#include "refs.h"
/*
* Basic handler for bundle files to connect repositories via sneakernet.
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
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);
}
diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh
index 439430f569ca70b5e3b08ef07996949d7259c9b7..7406de35ae35bbb0d3a97016046c047e25822671 100755 (executable)
--- a/t/t5510-fetch.sh
+++ b/t/t5510-fetch.sh
'
+test_expect_success 'bundle should record HEAD correctly' '
+
+ cd "$D" &&
+ git bundle create bundle5 HEAD master &&
+ git bundle list-heads bundle5 >actual &&
+ for h in HEAD refs/heads/master
+ do
+ echo "$(git rev-parse --verify $h) $h"
+ done >expect &&
+ diff -u expect actual
+
+'
+
test_done