标签: git-http-backend

在Windows上使用git-http-backend.exe设置Git服务器

我正在使用Apache和git-http-backend.exe在WS 2008机器上设置Git服务器(1.7.2.3).我一直在关注一个良好的啧啧这里.我有GUI工作,我可以惹恼克隆,如果我把以下内容放在回购配置中我可以惹恼:

[http]
 receivepack = true
Run Code Online (Sandbox Code Playgroud)

我已将以下内容添加到httpd.conf文件中:

SetEnv GIT_PROJECT_ROOT C:/GIT/Repositories
SetEnv GIT_HTTP_EXPORT_ALL
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 (x86)/git/libexec/git-core/git-http-backend.exe/$1"

<Directory />
  Allow from all
</Directory>

<LocationMatch "^/git/.*/git-receive-pack$">
        AuthType Basic
        AuthName "Git Access"
  AuthUserFile C:/GIT/ApacheConfig/users
  AuthGroupFile  C:/GIT/ApacheConfig/groups
        Require group repogeneral        
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)

当我添加"LocationMatch"时,我仍然可以克隆,或者通过在URL中指定一个名称,git clone http://jon@myserver.com

它会提示输入密码并进行克隆.

但当我试图回到回购时,我得到以下内容:

错误:无法访问URL http://jon@myserver.com/newtestrepo.git/,返回代码22致命:git-http-push failed

我一直在查看http-backend.exe手册页中的示例,但无法让它们工作.

这是我的群组文件,(这只是测试示例,所以没有任何可用于prod):

admin: jon steve admin
webview: jon steve web
repogeneral: jon …
Run Code Online (Sandbox Code Playgroud)

git apache2 git-http-backend

22
推荐指数
1
解决办法
3万
查看次数

如何在http上设置git?

我需要使用git-over-http(智能http)设置一个git服务器,但是在线可用的资源很混乱,混合了其他apache配置,缺少细节或者不够明确.

我是根据我发现缺乏可用资源的问题自己回答这个问题的.

apache git http git-http-backend

18
推荐指数
1
解决办法
3万
查看次数

GIT-HTTP的后端

我尝试使用git-http-backend设置一个git服务器,一切都按照我的要求运行,但有一点小事.

配置

<VirtualHost *:80>
ServerName git.server.com
SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
ScriptAlias /git /usr/lib/git-core/git-http-backend/

<Directory "/usr/lib/git-core*">
   Options ExecCGI Indexes
   Order allow,deny
   Allow from all
</Directory>

<LocationMatch "^/git/repos/git-receive-pack$">
  AuthType Digest
  AuthName "Git Repositories"
  AuthUserFile /srv/git/.git-auth-file
  AuthGroupFile /srv/git/.git-group-file
  Require valid-user
</LocationMatch>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这允许每个人阅读repos但只有有效的用户才能阅读.让我烦恼的是网址是http://git.server.com/git/repos.我想摆脱URL 中的git,如http://git.server.com/repos.当我将配置更改为

<VirtualHost *:80>
ServerName git.server.com
SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
ScriptAlias / /usr/lib/git-core/git-http-backend/

<Directory "/usr/lib/git-core*">
   Options ExecCGI Indexes
   Order allow,deny
   Allow from all
</Directory>

<LocationMatch "^/repos/git-receive-pack$">
  AuthType Digest
  AuthName …
Run Code Online (Sandbox Code Playgroud)

apache git git-http-backend

15
推荐指数
2
解决办法
2万
查看次数

针对Apache的gitolite存储库的GitSmartHTTP不允许我推送

我正在设置一个git-http-backend CGI脚本来处理我的git.domain子域.服务器位于AWS云上的ELB(弹性负载平衡器)后面.我的服务器配置如下(我的git托管由gitolite处理):

<VirtualHost *:80>
    ServerName git.domain
    ServerAdmin hjpotter92+git@domain

    #SuexecUserGroup git git                                                                                                                                                                    
    DocumentRoot /opt/gitolite/repositories/

    PerlLoadModule Apache::Authn::Redmine

    SetEnv GIT_PROJECT_ROOT /opt/gitolite/repositories/
    SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER # Have also tried removing this variable
    SetEnv GIT_HTTP_EXPORT_ALL

    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))$" \
        /opt/gitolite/git-core/git-http-backend/$1

    <Directory "/opt/gitolite/git-core">
        AllowOverride None
        Options +ExecCGI -Includes
        Require all granted
    </Directory>
    <Location />
        # enabled in desparation...
        # saw it somewhere in bugzilla powered mailing list
        DAV On

        Order …
Run Code Online (Sandbox Code Playgroud)

apache virtualhost gitolite smart-http git-http-backend

10
推荐指数
1
解决办法
419
查看次数

Apache和git-http-backend

我目前正在使用Apache 2.4.7在Ubuntu LTS 14.04机器上设置一些git存储库.

这是apache配置:

SetEnv GIT_PROJECT_ROOT /var/www/html/git
SetEnv GIT_HTTP_EXPORT_ALL 1
SetEnv REMOTE_USER $REDIRECT_REMOTE_USER
ScriptAliasMatch \
    "(?x)^/git/(.*/(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))$" \                                                                                                      
    /usr/lib/git-core/git-http-backend                                                                                                                   

<Location /git/oswald.git>
 Options +ExecCGI
 AuthType Basic
 DAV on
 AuthName "Git"
 AuthUserFile /etc/apache2/git_paragon_passwd
 Require valid-user

    Order allow,deny
    Allow from all
</Location>
Run Code Online (Sandbox Code Playgroud)

测试存储库在/var/www/html/git/oswald.git.在存储库中,我设置了config属性

http.receivepack=true
Run Code Online (Sandbox Code Playgroud)

该文件git-daemon-export-ok存在.

如果我现在尝试克隆:

git clone https://server/git/oswald.git
Run Code Online (Sandbox Code Playgroud)

认证后,我得到:

fatal: https://server/git/oswald.git/info/refs not valid: is this a git repository?
Run Code Online (Sandbox Code Playgroud)

(git 2.1.0客户端,在服务器git 1.9.1上).

我尝试了几件事,所以如果我不使用git-http-backend并通过WebDAV我可以克隆但不能推送,使用git-http-backend我甚至无法克隆.

如果我改变的最后一行 …

apache git git-http-backend

8
推荐指数
1
解决办法
1万
查看次数

Git push 在写入对象时冻结并给出 504 错误

问题

Git通过 HTTPS 为 81 kB 存储库写入对象时挂起(不允许 SSH)。来自 Nginx 的具体错误信息access.log如下:

POST /Hello-World/.git/git-receive-pack HTTP/1.1" 504 183 "-" "git/2.28.0.windows.1"
Run Code Online (Sandbox Code Playgroud)

背景

我在已挂载的 Debian 映像中托管 Nginx 和 Git 服务器。需要注意的重要事项:我www的所有网站文件都以只读方式单独安装。我的 Git 根文件夹也在里面www(即,www/git)。

sudo mount -o loop,offset=1 raspbian-stretch-lite.img /mnt/
sudo mount --bind www/ /mnt/usr/share/nginx/www/
sudo mount -o bind,remount,ro /mnt/usr/share/nginx/www
Run Code Online (Sandbox Code Playgroud)

我的 Nginx 配置如下:

server {
  listen 443 ssl;
  server_name git.domain.com;
  ssl_certificate fullchain.pem;
  ssl_certificate_key privkey.pem;

  # fast clone static files
  location ~ \.git/objects/(?:[0-9a-f]+/[0-9a-f]+|pack/pack-[0-9a-f]+\.(?:pack|idx))$ {
    root /usr/share/nginx/www/git;
    limit_except GET HEAD …
Run Code Online (Sandbox Code Playgroud)

git push nginx git-http-backend

6
推荐指数
1
解决办法
324
查看次数

git-receive-pack/git-upload-pack 和 git-http-backend 之间的区别

为了更多地了解 git,我尝试使用 Python 和 Flask 编写一个非常简单的 Git 服务器。我注册了一个端点并将调用重定向到git-http-backend。到目前为止,简单的拉动就可以正常工作。也可以进行简单/小的推动。

现在我偶然发现了git-upload-packgit-receive-pack,我想知道为什么或何时需要它们?git-http-backend它们在后台使用吗?我不确定我是否还必须支持这些命令。

PS 我尝试着理解 SmartHTTP。这是否意味着全双工?或者什么是 SmartHTTP 与 Dumb?我不太明白如果它也只是接收和发送/推送文件,那么什么应该是智能的?

git git-http-backend

3
推荐指数
1
解决办法
1306
查看次数