使用gitosis来配置管理git服务器端

使用gitosis来配置管理git服务器端

转载:http://blog.prosight.me/index.php/2009/07/271

1. 安装git

  1.  
  2. emerge -av dev-util/git
  3.  

2.安装gitosis

git环境默认是可以直接使用的,但需要为每个成员开ssh权限帐号,且各个仓库之间的交叉权限管理很麻烦,所以需要使用gitosis, 它无需为每个开发人员开设ssh帐号,安全方便。

  1.  
  2. emerge -av gitosis
  3.  

如果提示这个包被mask了,需要编辑/etc/portage/package.keywords文件,在里面加入

  1.  
  2. dev-util/gitosis ~amd64
  3.  

3.生成公钥

在客户端使用

  1.  
  2. ssh-keygen -t rsa
  3.  

来生成ssh的key,注意你的主机名需要是全部英文字符,不能有下划线或者.之类的特殊字符,否则后面在服务端生成版本库的时候会报错。

4.上传公钥

从客户端把刚刚生成的公钥上传到服务器上。

  1.  
  2. scp ~/. ssh/id_rsa.pub USER@YOUR_SERVER:/tmp
  3.  

5.在服务端生成管理库

  1.  
  2. sudo -H -u git gitosis-init < /tmp/id_rsa.pub
  3.  

成功的话,你将看到类似下面的提示:

  1.  
  2. Initialized empty Git repository in /var/spool/gitosis/repositories/gitosis-admin.git/
  3. Reinitialized existing Git repository in /var/spool/gitosis/repositories/gitosis-admin.git/
  4.  

设置post-update脚本权限

  1.  
  2. chmod 755 /var/spool/gitosis/repositories/gitosis-admin.git/hooks/post-update
  3.  

至此,服务端配置已经完成。

6.同步配置文件

gitosis本身就是一个git库,所以管理起来非常方便。下面在客户端同步gitosis管理库

  1.  
  2. git clone git@YOUR_SERVER:gitosis-admin.git
  3. cd gitosis-admin
  4.  

你将看到以下文件

  1.  
  2. -rw-r–r–   1 garry  garry   104 Nov 13 05: 43 gitosis.conf
  3. drwxr-xr-x   3 garry  garry   102 Nov 13 05: 43 keydir/
  4.  

gitosis.conf是gitosis的配置文件,用于配置用户和权限
keydir/是所有组成员的公钥
我们可以在本地修改配置更改权限,然后push到服务端后,服务器端就立刻生效

7.创建新的repositories

打开gitosis.conf文件,你将看到

  1.  
  2. [group gitosis-admin ]
  3. writable = gitosis-admin
  4. members = elton@macbook
  5.  

这个是管理组的权限,members中的用户名就是刚才上传的公钥里面的用户名。
在这个文件后面加入:

  1.  
  2. [group myteam ]
  3. members = elton@macbook
  4. writable = free_monkey
  5.  

这里你定义了一个叫myteam的组,授予elton@macbook这个用户写“free_monkey”这个repo的权限

  1.  
  2. git commit -a -m "Allow elton write access to free_monkey"
  3. git push
  4.  

上面的操作就更新了服务端的权限。
下面就开始创建free_monkey的repo

  1.  
  2. mkdir free_monkey
  3. cd free_monkey
  4. git init
  5.  

创建 .gitignore 文件,用于忽略某些不需要进行代码管理的内容,如rails的应用可能如下:

  1.  
  2. .DS_Store
  3. log/*.log
  4. tmp/**/*
  5. config/database.yml
  6. db/*.sqlite3
  7.  

提交代码:

  1.  
  2. git remote add origin git@YOUR_SERVER_HOSTNAME:free_monkey.git
  3. git add .
  4. git commit -a -m "initial import"
  5.  
  6. git push origin master:refs/heads/master
  7.  

接下来,可以增加成员的公钥到系统中了

  1.  
  2. cd gitosis-admin
  3. cp ~/alice.pub keydir/
  4. cp ~/bob.pub keydir/
  5. git add keydir/alice.pub keydir/bob.pub
  6.  

修改gitosis.conf

  1.  
  2. [group myteam ]
  3. - members = jdoe
  4. + members = jdoe alice bob
  5.   writable = free_monkey
  6.  

提交修改:

  1.  
  2. git commit -a -m "Granted Alice and Bob commit rights to FreeMonkey"
  3. git push
  4.  

其它成员就可以获取代码了

  1.  
  2. git clone git@YOUR_SERVER:free_monkey.git
  3.  

你可能感兴趣的:(server,ssh,git,服务器,配置管理,Access)