Merge branch 'gf/fetch-pack-direct-object-fetch'
Fetching of history by naming a commit object name directly didn't work across remote-curl transport. * gf/fetch-pack-direct-object-fetch: fetch-pack: update the documentation for "<refs>..." arguments fetch-pack: fix object_id of exact sha1
This commit is contained in:
commit
9081cffd1e
@ -104,6 +104,10 @@ be in a separate packet, and the list must end with a flush packet.
|
||||
The remote heads to update from. This is relative to
|
||||
$GIT_DIR (e.g. "HEAD", "refs/heads/master"). When
|
||||
unspecified, update from all heads the remote side has.
|
||||
+
|
||||
If the remote has enabled the options `uploadpack.allowTipSHA1InWant` or
|
||||
`uploadpack.allowReachableSHA1InWant`, they may alternatively be 40-hex
|
||||
sha1s present on the remote.
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
|
@ -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] == ' ')
|
||||
if (!get_oid_hex(name, &oid)) {
|
||||
if (name[GIT_SHA1_HEXSZ] == ' ') {
|
||||
/* <sha1> <ref>, find refname */
|
||||
name += GIT_SHA1_HEXSZ + 1;
|
||||
else
|
||||
} 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);
|
||||
|
@ -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…
Reference in New Issue
Block a user