我在客户端计算机上有一个脚本,用于将必要的配置内容添加到服务器上的 gitosis.conf。我可以推送,一切正常。
但是,我想添加一个 post-receive 钩子,这样当第一次推送存储库时,就会发生一些特定的操作。我尝试在第一个版本之前将其添加到本地存储库(在 .git/hooks 中),但该钩子在推送时未传输到服务器。
我该怎么做?在初始推送之前,/srv/gitosis/repositories 目录中没有存储库。
答案1
Git 使用模板来设置新的存储库。我不知道 Gitorious 是否使用这些相同的模板,但值得一试。在我的系统上,它们位于/usr/local/share/git-core/templates/hooks
。
答案2
Hooks 不会通过 推送到服务器git push
。否则,这将引发严重的安全问题:任何人都可以推送以更高权限在您的服务器上执行的代码。
要解决该问题,您只需将钩子复制到创建的目录中,然后在第一次推送后手动运行它:
GIT_DIR=. hooks/post-receive
您只需执行一次此操作。