summaryrefslogtreecommitdiff
path: root/etc/httpd/conf.d/git-http-p.conf
blob: b30ad47d4b56585fc2fbb6304a35294f2eac96ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#
#
# Git Smart HTTP Support
# git push ONLY

SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL 1

# Expose git-receive-pack and info/refs.
ScriptAliasMatch "^(/.+/(git-receive-pack|info/refs))$" \
  /usr/libexec/git-core/git-http-backend$1

# Authenticate against git push.
<LocationMatch "^/.+/(git-receive-pack)$">
    AuthType Basic
    AuthName "Git Push Access"
    AuthUserFile ${GIT_HTTP_AUTH_FILE}
    Require valid-user
</LocationMatch>

# Deny info/refs push unless it's for git push.
<LocationMatch "^/.+/info/refs$">
    AuthType Basic
    AuthName "Git Push Access"
    AuthUserFile ${GIT_HTTP_AUTH_FILE}
    <RequireAll>
        Require expr %{QUERY_STRING} == "service=git-receive-pack"
        Require valid-user
    </RequireAll>
</LocationMatch>

# Explicitly deny git clone/fetch just in case.
<LocationMatch "^/.+/git-upload-pack$">
    Require all denied
</LocationMatch>