Gitosis在最初推送之前收到挂钩

我在客户端机器上有一个脚本,它将必要的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 

你必须只做一次。