Browse Source

fetch-pack: fix object_id of exact sha1

Commit 58f2ed0 (remote-curl: pass ref SHA-1 to fetch-pack as well,
2013-12-05) added support for specifying a SHA-1 as well as a ref name.
Add support for specifying just a SHA-1 and set the ref name to the same
value in this case.

Signed-off-by: Gabriel Souza Franco <gabrielfrancosouza@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Gabriel Souza Franco 9 years ago committed by Junio C Hamano
parent
commit
4a8d202c4e
  1. 16
      builtin/fetch-pack.c
  2. 14
      t/t5500-fetch-pack.sh

16
builtin/fetch-pack.c

@ -16,10 +16,20 @@ static void add_sought_entry(struct ref ***sought, int *nr, int *alloc, @@ -16,10 +16,20 @@ static void add_sought_entry(struct ref ***sought, int *nr, int *alloc,
struct ref *ref;
struct object_id oid;

if (!get_oid_hex(name, &oid) && name[GIT_SHA1_HEXSZ] == ' ')
name += GIT_SHA1_HEXSZ + 1;
else
if (!get_oid_hex(name, &oid)) {
if (name[GIT_SHA1_HEXSZ] == ' ') {
/* <sha1> <ref>, find refname */
name += GIT_SHA1_HEXSZ + 1;
} else if (name[GIT_SHA1_HEXSZ] == '\0') {
; /* <sha1>, leave sha1 as name */
} else {
/* <ref>, clear cruft from oid */
oidclr(&oid);
}
} else {
/* <ref>, clear cruft from get_oid_hex */
oidclr(&oid);
}

ref = alloc_ref(name);
oidcpy(&ref->old_oid, &oid);

14
t/t5500-fetch-pack.sh

@ -531,6 +531,20 @@ test_expect_success 'shallow fetch with tags does not break the repository' ' @@ -531,6 +531,20 @@ test_expect_success 'shallow fetch with tags does not break the repository' '
git fsck
)
'

test_expect_success 'fetch-pack can fetch a raw sha1' '
git init hidden &&
(
cd hidden &&
test_commit 1 &&
test_commit 2 &&
git update-ref refs/hidden/one HEAD^ &&
git config transfer.hiderefs refs/hidden &&
git config uploadpack.allowtipsha1inwant true
) &&
git fetch-pack hidden $(git -C hidden rev-parse refs/hidden/one)
'

check_prot_path () {
cat >expected <<-EOF &&
Diag: url=$1

Loading…
Cancel
Save