summaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2016-04-03 17:29:29 (GMT)
committerJunio C Hamano <gitster@pobox.com>2016-04-03 17:29:29 (GMT)
commit9081cffd1e8ac2f24412bf62d4b9682d83853193 (patch)
tree82d4dab832ef80b5664bfff4b553f5e683d6fd77 /builtin
parentd4a22303abbdcfb1ccc0c04c7bd6711444312751 (diff)
parent754ecb1ce5247c7a3dde8186473c6eb7107e6db0 (diff)
downloadgit-9081cffd1e8ac2f24412bf62d4b9682d83853193.zip
git-9081cffd1e8ac2f24412bf62d4b9682d83853193.tar.gz
git-9081cffd1e8ac2f24412bf62d4b9682d83853193.tar.bz2
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
Diffstat (limited to 'builtin')
-rw-r--r--builtin/fetch-pack.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c
index 79a611f..bfd0be4 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);