30.5.3 直接在服务器端创建

当版本库的数量很多的时候,在服务器端直接通过git init命令创建,或者通过复制创建可能会更方便。但是要注意,在服务器端手工创建的版本库和Gitolite创建的版本库最大的不同在于钩子脚本。如果不能为手工创建的版本库正确设定版本库的钩子,会导致失去Gitolite特有的一些功能,例如失去分支授权的功能。

一个由Gitolite创建的版本库,hooks目录下有三个钩子脚本实际上链接到gitolite安装目录下的相应的脚本文件中:


gitolite-hooked->/home/git/.gitolite/hooks/common/gitolite-hooked

post-receive.mirrorpush->/home/git/.gitolite/hooks/common/post-receive.mirrorpush

update->/home/git/.gitolite/hooks/common/update


那么手工在服务器上创建的版本库,有没有自动更新钩子脚本的方法呢?

第一个方法是修改Git模板[1],在创建版本库时自动创建初始的钩子脚本。再有就是重新执行一遍Gitolite的安装,会自动更新版本库的钩子脚本。安装过程一路按回车即可。


$cd gitolite/src

$./gl-easy-install git server admin


除了要注意钩子脚本以外,还要确保服务器端版本库目录的权限和属主。

[1]参见第8篇第41章“41.2.2 Git模板”的相关内容。