我试图设置一个中央存储库,当它从我的本地计算机推送到时,它会自动推送到另一个存储库。我现在一直在谷歌搜索几天,我已经尝试了所有的命令组合,我可以找到没有运气。Git从更新后的挂钩失败 - X不是存储库
设置: 我首先创建了一个裸露的中央存储库,然后将其作为非裸设备克隆到第二台机器。我将第二台机器添加为第一台机器,称为“www”。我确认我可以从第一台机器手动执行“git push www master”,它会通过SSH更新第二台机器。然后我通过HTTP将存储库克隆到我的本地开发机器。我可以从本地推到中央就好了。
我的post-update挂钩以目前的形式:
#!/bin/bash
cd /var/git_repos/site.git
unset $(git rev-parse --local-env-vars)
branch=$(git rev-parse --abbrev-ref HEAD)
if [ "$branch" == "master" ];
then
echo "Pushing $branch to www..."
env -i git push www master
fi
exec git update-server-info
我已经从不同的SO和博客拼凑起来这一点。从第一台机器的CLI(“cd /var/git_repos/site.git/hooks; ./post-update”)手动执行时,它工作正常,但执行时会出现错误消息“www不是Git存储库”作为一个钩子。
输出:
$ git push
Password:
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 264 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Pushing master to www...
remote: fatal: 'www' does not appear to be a git repository
remote: fatal: The remote end hung up unexpectedly
To https://[email protected]/site.git
e3d3a1d..103c819 master -> master
谁能告诉我什么,我做错了什么?
编辑:我已经想通了,我最初的问题是,在site.git的权限并不完全正确设置。解决了这个问题后,我遇到了一个新问题。
新的输出:
$ git push
Password:
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 332 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: I am apache <---- Output of "whoami" for debugging
remote: Pushing master to www...
remote: ssh: connect to host 192.168.1.79 port 22: Permission denied
remote: fatal: The remote end hung up unexpectedly
To https://[email protected]/site.git
29d504c..f14f201 master -> master
我曾尝试加入以下到我的/ etc/sudoers文件没有运气文件:
apache ALL=NOPASSWD: /usr/bin/ssh
我得到呼应两个命令没有输出。我认为这不是一件好事,是吗? – 2011-04-26 20:40:00