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