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


还有一种版本库语法,是用正则表达式定义的版本库,这类版本库因为所指的版本库并不确定,因此不可能自动创建。