gitolite-admin是用于管理git版本库的版本库,将其从服务器上clone下来。
使用tortoise git clone的时候需要指定私钥,私钥的格式是ppk的,需要使用putty的PUTTYGEN.EXE工具将其转换为ppk格式的。
clone完成之后,可以看到gitolite-admin 目录下有两个目录conf/ 和 keydir/。
其中keydir中存放用户的公钥,公钥文件的名字就是用户名。
如果想增加一个叫做test的用户,那么就生成一对密钥,然后将公钥命名为test.pub,并放到keydir中,然后提交到master然后push到服务器的gitolite-admin中。
conf目录下的gitolite.conf用于控制用户的权限。下面是它默认的内容:
#gitolite conf
# please seeconf/example.conf for details on syntax and features
repo gitolite-admin
RW+ = git
repo testing
RW+ = @all
repo所在的行表示权限控制操作所针对的版本库,repo和版本库名称使用空格分开。
之后的行表示不同的用户或者组对该版本库所具有的权限。
上面文件中的内容表示git用户对gitolite-admin版本库有读写的权限,testing所用用户对testing版本库有读写权限。
如果要将相同的权限分配个多个用户,可以在等号右边以空格分隔填写多个用户名。如“RW+ = git test”表示git和test用户对该版本库有读写权限。更好的做法是将用户划分为组,用户组以@开头,系统提供了一个默认的组@all用于表示所有用户。分组的语法为 “组 = 用户1 用户2”,需要将分组配置喜写到配置文件的开头。
下面是将test和git用户划分到管理员组。
@admin = test git
为组划分权限和为用户划分权限的语法一样,如“RW+ = @admin @all”表示admin组和all组的用户可以读写某版本库(实际中不需要这么写,all包含了admin)。
如果要在服务器上创建版本库,只需要经本地的版本库push到服务器上即可。但是首先要修改gitolite.conf文件,为服务器上即将创建的版本库指定创建权限。
repo test-repo
C = test
RW+ = test
上面的语句表示,test用户有权在服务器上创建版本库test-repo,并且有权读写它。gitolite.conf push到服务器之后,就可将本地的test-repo push到服务器的test-repo了。
在push之前首先要设置push的目标。设置方法如下
上面那个url需要特别说明一下,git@server:test-repo分为了三部分,git表示服务器上运行gitolite的用户;server表示服务器的地址,一般用ip或者域名替代;test-repo就是版本库在服务上的相对路径。这里直接写上了版本库的名称表示版本库放到服务器上的repositories目录中。