From 843548cc7681e600b1180a91a407385b35c7f23c Mon Sep 17 00:00:00 2001
From: Thomas Guyot-Sionnest <Thomas.Guyot-Sionnest@nuance.com>
Date: Wed, 4 Dec 2013 18:07:14 -0500
Subject: [PATCH] Fix HTTP push to public repos

When doing an HTTP push, git (as of v1.7.9) first do an info/refs
request, and only if this request requires authentication it asks the
user for its password and authenticates further requests.

The initial request normally clears without auth on public repos as it
doesn't update any ref. This patch forces every git-receive-pack
requests to provide authentication.
---
 lib/gitlab/backend/grack_auth.rb | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/lib/gitlab/backend/grack_auth.rb b/lib/gitlab/backend/grack_auth.rb
index c629144118..60c03ce1c0 100644
--- a/lib/gitlab/backend/grack_auth.rb
+++ b/lib/gitlab/backend/grack_auth.rb
@@ -92,6 +92,9 @@ module Grack
           return false unless can?(user, action, project)
         end
 
+        # Never let git-receive-pack trough unauthenticated; it's
+        # harmless but git < 1.8 doesn't like it
+        return false if user.nil?
         true
       else
         false
-- 
2.30.9