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目录中。

05-11 17:42