diff options
author | Junio C Hamano <gitster@pobox.com> | 2016-04-14 18:57:44 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-04-14 18:57:44 -0700 |
commit | dc66371cdf749089bcd1a22335f40c50d8a6b66d (patch) | |
tree | 7ed0dae1dfeeaf2d8f0e6469eb433f7341a95843 /builtin | |
parent | 7488c2f65a029246c350b6e89484455a2249fe98 (diff) | |
parent | 754ecb1ce5247c7a3dde8186473c6eb7107e6db0 (diff) | |
download | git-dc66371cdf749089bcd1a22335f40c50d8a6b66d.tar.gz |
Merge branch 'gf/fetch-pack-direct-object-fetch' into maint
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
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/fetch-pack.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c index 79a611fda1..bfd0be44a9 100644 --- a/builtin/fetch-pack.c +++ b/builtin/fetch-pack.c @@ -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); |