From 30affa1e9a15e848f77c9c14544dd6dd593559d5 Mon Sep 17 00:00:00 2001
From: Jeff King <peff@peff.net>
Date: Wed, 29 Oct 2008 05:17:55 +0000
Subject: [PATCH] send-pack: do not send out single-level refs such as
 refs/stash

Since no version of receive-pack accepts these "funny refs", we should
mirror the check when considering the list of refs to send. IOW, don't
even make them eligible for matching or mirroring.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 builtin-send-pack.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/builtin-send-pack.c b/builtin-send-pack.c
index 2af9f293414..301f2304326 100644
--- a/builtin-send-pack.c
+++ b/builtin-send-pack.c
@@ -132,7 +132,13 @@ static struct ref *remote_refs, **remote_tail;
 static int one_local_ref(const char *refname, const unsigned char *sha1, int flag, void *cb_data)
 {
 	struct ref *ref;
-	int len = strlen(refname) + 1;
+	int len;
+
+	/* we already know it starts with refs/ to get here */
+	if (check_ref_format(refname + 5))
+		return 0;
+
+	len = strlen(refname) + 1;
 	ref = xcalloc(1, sizeof(*ref) + len);
 	hashcpy(ref->new_sha1, sha1);
 	memcpy(ref->name, refname, len);