我已经在Git服务器上创build了一个testinggit回购:
/var/cache/git/username/myGitRepo.git
这是一个“光秃秃的”git回购。 文件的所有权属于这个“用户名”用户。 我可以在另一台Windows机器上克隆上面的Git仓库。
git clone git://myhost/var/cache/git/username/myGitRepo.git
回购克隆正确。 然后我可以进行本地提交,并尝试将更改返回到我的Git服务器:
git push origin master
但是,这给服务器上的权限错误:
fatal: remote error: access denied or repository not exported: /git/username/myGitRepo.git
我在回购目录中添加了魔术文件' git-daemon-export-ok '文件。 但我不断收到上述错误。
我甚至将chmod设置为/var/cache/git/username/myGitRepo.git 777
获取相同的错误。
Git远程-v投掷下面的输出。
$ git remote -v origin git://myhost/git/username/myGitRepo.git (fetch) origin git://myhost/git/username/myGitRepo.git (push)
任何人都可以帮助我解决这个错误?
开箱即用,标准的git-daemon不允许你push送到存储库。 手册页说:
这非常适合只读更新,即从git存储库中提取。
如果你真的想要启用匿名push (实际上,你不需要,只需要使用ssh ),你需要启用receive-pack服务,这个服务在默认情况下是禁用的(因为这是一个坏主意)。 再次,从手册页( 服务部分):
收到包
这为git send-pack客户端服务,允许匿名推送。 它在默认情况下是禁用的,因为协议中没有authentication (换句话说,任何人都可以将任何东西推入存储库,包括删除参考)。
大胆的是我的。 您可以通过在存储库的gitconfigurationdaemon.receivepack设置为true来传递--enable=receive-pack命令行选项或per-repository来全局启用此服务。