30.5 创建新版本库
Gitolite维护的版本库默认位于安装用户主目录下的repositories目录中,即如果安装用户为git,则版本库都创建在/home/git/repositories目录之下。可以通过配置文件.gitolite.rc修改默认的版本库的根路径。
$REPO_BASE="repositories";
有多种创建版本库的方式。一种是在授权文件中用repo指令设置版本库(未使用正则表达式的版本库)的授权,当对gitolite-admin版本库执行git push操作时,自动在服务端创建新的版本库。另外一种方式是在授权文件中用正则表达式定义的通配符版本库,不会即时创建(也不可能被创建),而是被授权的用户在远程创建后推送到服务器上完成创建。
注意:在授权文件中出现的版本库名称不要带.git后缀,在创建版本库过程中会自动在版本库后面追加.git后缀。
30.5.1 在配置文件中出现的版本库,即时生成
尝试在授权文件conf/gitolite.conf中加入一段新的版本库授权指令,而这个版本库尚不存在。新添加到授权文件中的内容为:
repo testing2
RW+=@all
然后将授权文件的修改提交并推送到服务器,会看到授权文件中添加新授权的版本库testing2被自动创建。
$git push
Counting objects:7,done.
Delta compression using up to 2 threads.
Compressing objects:100%(3/3),done.
Writing objects:100%(4/4),375 bytes,done.
Total 4(delta 1),reused 0(delta 0)
remote:Already on 'master'
remote:creating testing2…
remote:Initialized empty Git repository in/home/git/repositories/testing2.git/
To gitadmin.bj:gitolite-admin.git
278e54b..b6f05c1 master->master
注意其中带remote标识的输出,可以看到版本库testing2.git被自动初始化了。
此外使用版本库组的语法(即用@创建的组,用作版本库),也会被自动创建。例如下面的授权文件片段设定了一个包含两个版本库的组@testing,当将新配置文件推送到服务器上时,会自动创建testing3.git和testing4.git。
@testing=testing3 testing4
repo@testing
RW+=@all
还有一种版本库语法,是用正则表达式定义的版本库,这类版本库因为所指的版本库并不确定,因此不可能自动创建。