Git + Smart Http(s):403错误

时间:2016-09-26 10:39:25

标签: linux git apache repository smart-http

虽然我读过很多帖子,但我无法解决这个问题 我想使用Git + Smart Http,在我的rasperry pi上使用远程存储库 我在Arch Linux上运行 首先,让我们考虑一个Http配置(而不是https),以便简单 Apache和Git正确安装在我的Rasperry Pi上,Http连接的端口是8080.

在我的树莓派上:

 1.我在/etc/httpd/conf/http.conf中取消了关于mod_cgi,mod_alias和mod_env的信息。  2.我在/etc/httpd/conf/http.conf中添加了这些行:

SetEnv GIT_PROJECT_ROOT /srv/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/

<Directory "/usr/lib/git-core*">
    Require all granted
</Directory>
  1. 我创建了目录/ srv / git

    # mkdir -p /srv/git

  2. 我创建并初始化了一个git存储库:

    # mkdir -p /srv/git/test.git
    # git init --bare

  3. 我已更改回购的所有者和组:

    # chown -R http:http /srv/git/test.git

  4. 在我的客户端:

    1. 我已经克隆了文件夹

      中的repo

      $ git clone http://address:8080/git/test.git

    2. 我创建并添加了一个新文件,我已经提交了

      $ nano test.c
      $ git add test.c
      $ git commit -m 'first' 

    3. 我在Rasperry Pi上推出了新项目

      $ git push origin master

    4. 但我有这个错误:

      atal: unable to access 'address:8080/git/test.git/';: The requested URL returned error: 403
      

1 个答案:

答案 0 :(得分:2)

如果你克隆了里面的测试文件夹(你在其中初始化了一个git repo),那意味着你有:

test/test

如果您从第一个测试文件夹推送,该回购将不会有任何来源。

请尝试删除任何测试文件夹,然后重新开始:

git clone http://address:8080/git/test.git
cd test
# work
git add .
git commit -m "work"
git push -u origin master

关于403错误,我建议在服务器Apache(2.4)端:

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

<LocationMatch "^/.*/git-receive-pack$">
    Options +ExecCGI
    Require all granted
</LocationMatch>
<LocationMatch "^/.*/git-upload-pack$">
    Options +ExecCGI
    Require all granted
</LocationMatch>

此外,在服务器上,在git bare repo文件夹中:

cd /srv/git/test.git
git config --file config http.receivepack true