UbuntuServer搭建Git服务器之gitolite管理(三)

管理Gitolite,管理员的任务就比较繁重了,其所有的管理都是通过安装gitolite是自动创建的gitolite-admin库来操作的,下面就几个常用的管理任务作简单介绍。

1.  管理员克隆gitolite-admin管理库

git+gitolite的安装与配置参见搭建Git服务器(二),安装后在gitadmin管理员用户目录下在自动创建一个用于自身管理的git库:gitolite-admin.git。管理员可以通过git出该管理库,在客户端进行管理。

$git clone gitadmin:gitolite-admin //此处使用的是SSH主机别名,会在当前目录下创建gitolite-admin

 

gitolite-admin 目录下有两个目录conf/ 和 keydir/ 。

l  keydir/gitadmin.pub 文件,目录 keydir 下初始时只有一个用户公钥,即 amdin 用户的公钥。

l  conf/gitolite.conf 文件,该文件为授权文件。初始内容为:

#gitolite conf

# please seeconf/example.conf for details on syntax and features

repo gitolite-admin

    RW+                 = gitadmin

repo testing

    RW+                 = @all

缺省授权文件中只设置了两个版本库的授权:

l  gitolite-admin,即本版本库(gitolite管理版本库)只有 admin 用户有读写和强制更新的权限。

l  Testing,缺省设置的测试版本库,设置为任何人都可以读写以及强制更新。

2. 增加新用户

   只要将新用户的公钥添加到 gitolite-admin 版本库的 keydir 目录下,即完成新用户的添加。假设需要增加用户名为gituser的用户。

(1)管理员从用户那获得公钥gituser.pub。该公私钥文件的生成:

$ssh-keygen –f ~/.ssh/gituser      //客户端执行

(2)将该gituser.pub放到gitolite-admin本地的管理库用的keydir目录下。

$cp ~/.ssh/gituser.pub  /pathto/keydir/

(3)将该公钥加入版本库中

$git add /pathto/keydir

$git status

#On branch master

#Changes to be committed:

# (use “git reset HEAD <file>…” to unstage)

#

# new file:  keydir/gituser.pub

#

(3)提交对版本库的修改

$git commit –m “add user:gituser”

(4)push到服务器,完成同步,真正添加新用户

$git push //会有WARNING,其中的警告是说新添加的三个用户在授权文件中没有被引用,下面修改授权文件,为用户受权。

(5)为gituser创建SSH主机别名,回到客户端$vi ~/.ssh/config,添加以下内容:

host gituser

user gitadmin

hostname labserver

port 22

identityfile ~/.ssh/gituser

3. 更改授权文件,为用户授权

  新用户添加完毕,需要重新进行授权。更改授权的方法也非常简单,即修改 conf/gitolite.conf 配置文件,提交并 push。

 

(1)管理员进入 gitolite-admin 本地克隆版本库中,编辑 conf/gitolite.conf

$vi conf/gitolite.conf

 

在打开的文件顶部添加:@team1 = gituser gitadmin,然后在repo testing 下添加:

RW+  = @team1 对testing版本库以team的形式进行授权。(team又是可以嵌套如:

@allteam = @team1 @team2 @team3。对team的所有定义规则都适应于版本库,如:

@repo1 = project1 project2, repo @repos1 @repos2

(2)添加改动,并提交,以及与同步服务器

$git add conf/gitolite.conf 

$git commit –q –m “new team @team1 auth forrepo testing.”

$git push

 

4. 在服务器创建版本库

(1)通过管理员创建版本库,只需要在conf/gitolite.conf中添加一个规则即可,等同步到服务器后会自动创建:

repo project

  C   = @all

RW+  =  @all

(2)上传现有的版本库,首先在本地创建一个版本库project

$mkdir project && cd project

$git init

$touch README // 此处一定要创建文件,不然会出现error:

(error: src refspec master does not match any.

error: failed to push some refs to'ssh://xxxxx.com/project.git')

$git add README

$git commit –m “Initial repo.”

$git remote add origin gituser:/project.git   //此处一定要保证(1)完成,并有C(创建权限)

$git push origin master

完成现在版本库的上传

 

(3)使用通配符,用户可以创建自已的版本库,即用户自己的版本库空间,使用通配符需要开启该功能位,$GL_WILDREPOS默认为0(不开启),在用户的主目录下的配置文件 .gitolite.rc 中将该功能位设置为1:$GL_WILDREPOS = 1.

编辑conf/gitolite.conf,添加:

repo  users/CREATOR/[a-zA-Z].*

 C   =  @all

RW+  =  @all

其中CREATOR为创建者的用户名,算是一种宏定义。在git用户的电脑上,进行第(2)步操作,唯一不同地方的是:

$git remote add origin gituser:/users/gituser/project.git

 

 

本篇只介绍了基本的管理操作,诸如用户分支的权限控制、及各种权限标识符表示的意义没有涉及,可以自行查阅相关资料。

 

 

辉辉                                                         

(FightingBull Studio)                                         

 

 

 

 

你可能感兴趣的:(UbuntuServer搭建Git服务器之gitolite管理(三))