diff options
-rw-r--r-- | bundle.c | 9 | ||||
-rwxr-xr-x[-rw-r--r--] | t/t4018-diff-funcname.sh | 0 | ||||
-rwxr-xr-x | t/t5510-fetch.sh | 13 | ||||
-rwxr-xr-x[-rw-r--r--] | t/t7501-commit.sh | 0 |
4 files changed, 21 insertions, 1 deletions
@@ -6,6 +6,7 @@ #include "revision.h" #include "list-objects.h" #include "run-command.h" +#include "refs.h" static const char bundle_signature[] = "# v2 git bundle\n"; @@ -232,11 +233,17 @@ 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 @@ -287,7 +294,7 @@ 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); } diff --git a/t/t4018-diff-funcname.sh b/t/t4018-diff-funcname.sh index f9db81d3ab..f9db81d3ab 100644..100755 --- a/t/t4018-diff-funcname.sh +++ b/t/t4018-diff-funcname.sh diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh index aad863db7a..35889c0a12 100755 --- a/t/t5510-fetch.sh +++ b/t/t5510-fetch.sh @@ -215,4 +215,17 @@ test_expect_success 'quoting of a strangely named repo' ' grep "fatal: '\''a\\\\!'\''b'\''" result ' +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 diff --git a/t/t7501-commit.sh b/t/t7501-commit.sh index 9dba104b1f..9dba104b1f 100644..100755 --- a/t/t7501-commit.sh +++ b/t/t7501-commit.sh |