Setting up Git Server on Windows With git-http-backend.exe

后端 未结 1 1352
挽巷
挽巷 2020-12-01 00:51

I am in the process of setting up a Git server (1.7.2.3) on a WS 2008 machine using Apache and git-http-backend.exe. I have been following a good tut here. I have the GUI

相关标签:
1条回答
  • 2020-12-01 01:45

    OK, so hell has frozen over and I have finally got this working!

    I believe there were two things that were fundamentally wrong with my setup.

    1) The user was not getting authentication passed through, I found this helped:

    SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
    

    Secondly I couldn't get the physical "Directory" to work.

    <Directory "C:/GIT/Apache/repositories">
    Options +ExecCGI
    AuthType Basic
    AuthName intranet
    AuthUserFile "C:/GIT/Apache/config/users"
    Require valid-user
    </Directory>
    

    To resolve this I used locationMatch for both the pull and push. This means you have to authenticate to pull and push. If you wanted annoy pulling you can remove the "git-upload-pack" section.

    Hope this may help someone else.

    Here is my final httpd.conf file:

    DocumentRoot "C:/GIT/Apache/www"
    
    <Directory />
    Options +ExecCGI
    Allow from all  
    </Directory>
    
    <Directory "C:/GIT/Apache/www">
      Allow from all
    </Directory>
    
    <Directory "C:/GIT/Apache/www/secure">
    AuthType Basic
    AuthName intranet
    AuthUserFile "C:/GIT/Apache/config/users"
    require valid-user
    </Directory>
    
    SetEnv GIT_PROJECT_ROOT C:/GIT/Apache/repositories
    SetEnv GIT_HTTP_EXPORT_ALL
    SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
    ScriptAliasMatch \
        "(?x)^/(.*/(HEAD | \
                        info/refs | \
                        objects/(info/[^/]+ | \
                                 [0-9a-f]{2}/[0-9a-f]{38} | \
                                 pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
                        git-(upload|receive)-pack))$" \
                        "C:/Program Files/git/libexec/git-core/git-http-backend.exe/$1"
    
    
    <LocationMatch "^/.*/git-receive-pack$">
    Options +ExecCGI
    AuthType Basic
    AuthName intranet
    AuthUserFile "C:/GIT/Apache/config/users"
    Require valid-user
    </LocationMatch>
    
    <LocationMatch "^/.*/git-upload-pack$">
    Options +ExecCGI
    AuthType Basic
    AuthName intranet
    AuthUserFile "C:/GIT/Apache/config/users"
    Require valid-user
    </LocationMatch>
    
    0 讨论(0)
提交回复
热议问题