devel/git: Git via Apache 2.4 HTTPS - info/refs not valid: could not determine hash algorithm

Michael Gmelin freebsd at grem.de
Mon Mar 29 20:18:42 UTC 2021



On Mon, 29 Mar 2021 20:26:24 +0200
"Hartmann, O." <ohartmann at walstatt.org> wrote:

> On Mon, 29 Mar 2021 11:42:28 +0200
> Michael Gmelin <freebsd at grem.de> wrote:
> 
> > On Sun, 28 Mar 2021 13:08:19 +0200
> > "Hartmann, O." <ohartmann at walstatt.org> wrote:
> >   
> > > What am I missing here?
> > >     
> > 
> > The man page of git-http-backend has an apache2 example[0].
> > Also, the top answer to this stackoverflow question might give you a
> > hint: https://stackoverflow.coo-set-up-git-over-http
> > 
> > Best,
> > Michael
> > 
> > [0]https://www.freebsd.org/cgi/man.cgi?query=git-http-backend&apropos=0&sektion=0&manpath=FreeBSD+12.2-RELEASE+and+Ports&arch=default&format=html
> > 
> >   
> 
> Hello Michael,
> 
> thanks for responding.
> The first tip I came across was the Stackoverflow HowTo - whatever I
> did and do, it doesn't work. I also tried the several variants shown
> in [0], starting with the simplest towards more complex ones.
> 
> Following strictly the reference at 
> 
> https://stackoverflow.com/questions/26734933/how-to-set-up-git-over-http
> 
> with minor local adaptions (for FreeBSD and the Git base folder),
> even with anonymous access allowed the failure is the same as with
> some Basic authentication via LDAP.
> 
> As decribed in my initial email: first access with a "git push -u
> origin master" is logged by Apache with 401, requesting credentials.
> If provided, the line (httpd-access.log):
> 
> xx.xx.xx.xx - USERNAME [29/Mar/2021:17:44:55 +0000] "GET \
> /git/test.git/info/refs?service=git-upload-pack HTTP/1.1" 200 1689032
> "-" "git/2.31.0" \ 323 1691601
> 
> status code 200 indicates OK - so authetication is all right and I
> should proceed, but I get on the client
> 
> fatal: https://[url]/git/test.git/info/refs not valid: could not
> determine hash algorithm; is this a git repository?
> 
> On both sides, I had disabled sslVerify (due to self signed cert
> issue with git, another pitfall) and according to stackoverflow
> howto, hooks are also prepared and the root folder and its subsequent
> folders /pool/gitbase (PROJECT_ROOT) is owned by www:www and has ACL
> 0775 set.
> 
> And this is why it gets desperate to me ...

I played a bit with this - turns out that the key is to make sure that
the cgi module is loaded (e.g., mod_cgi).

This is the simple basic setup I tested (using bash):

    pkg install apache24 git
    service apache24 enable

    cat >/usr/local/etc/apache24/Includes/git.conf<<"EOF"
    LoadModule cgi_module libexec/apache24/mod_cgi.so
    LoadModule rewrite_module libexec/apache24/mod_rewrite.so
    ServerName 127.0.0.1

    SetEnv GIT_PROJECT_ROOT /usr/local/www/git/
    SetEnv GIT_HTTP_EXPORT_ALL
    ScriptAlias /git/ /usr/local/libexec/git-core/git-http-backend/

    RewriteCond %{QUERY_STRING} service=git-receive-pack [OR]
    RewriteCond %{REQUEST_URI} /git-receive-pack$
    RewriteRule ^/git/ - [E=AUTHREQUIRED:yes]

    <LocationMatch "^/git/">
      Order Deny,Allow
      Deny from env=AUTHREQUIRED

      AuthType Basic
      AuthName "Git Access"
      Require group committers
      Satisfy Any
    </LocationMatch>
    EOF

    mkdir -p /usr/local/www/git/test.git
    git init --bare /usr/local/www/git/test.git
    service apache24 start

    git clone http://localhost/git/test


Cheers,
Michael

> 
> Kind regards,
> 
> O. Hartmann



-- 
Michael Gmelin


More information about the freebsd-ports mailing list