diff options
author | Jeff King <peff@peff.net> | 2009-02-27 14:10:06 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-02-27 15:19:23 -0800 |
commit | fbb074c25352627f650d2ea528ed694e77bece0f (patch) | |
tree | 324a0f275d71a84bb7ce645d5f28a6651649d3b6 /remote.c | |
parent | bc14fac825d9728c311aaa9d0aecf4960d4a3103 (diff) | |
download | git-fbb074c25352627f650d2ea528ed694e77bece0f.tar.gz git-fbb074c25352627f650d2ea528ed694e77bece0f.tar.xz |
remote: make guess_remote_head() use exact HEAD lookup if it is available
Our usual method for determining the ref pointed to by HEAD
is to compare HEAD's sha1 to the sha1 of all refs, trying to
find a unique match.
However, some transports actually get to look at HEAD
directly; we should make use of that information when it is
available. Currently, only http remotes support this
feature.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'remote.c')
-rw-r--r-- | remote.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -1476,6 +1476,14 @@ struct ref *guess_remote_head(const struct ref *head, if (!head) return NULL; + /* + * Some transports support directly peeking at + * where HEAD points; if that is the case, then + * we don't have to guess. + */ + if (head->symref) + return copy_ref(find_ref_by_name(refs, head->symref)); + /* If refs/heads/master could be right, it is. */ if (!all) { r = find_ref_by_name(refs, "refs/heads/master"); |