1、搭建环境:

  linux版本:rhel6.5

  git版本:git-1.7.12.4

  服务端主机名及ip:server.example.com    192.168.1.193

  开发机主机名及ip:develope.example.com   192.168.1.191


2、服务器端安装git

  •  # yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel

  • 下载git-1.7.12.4.tar.gz安装包(git1.7.12.4.tar.gz下载地址),然后将其mv 到/usr/local/src目录。

  •  # cd /usr/local/src/

  •  # tar -xvzf git-1.7.12.4.tar.gz

  •  # cd git-1.7.12.4

  •  # make prefix=/usr/local/git all

  •  # make prefix=/usr/local/git install

  • 增加软链接

     # ln -s /usr/local/git/bin/* /usr/bin/

  •  # git version  //有输出结果表示安装成功

     git version 1.7.1


3、在服务器安装gitosis

  •  # yum install python python-setuptools -y

  •  # cd /usr/local/src/

  •  # git clone git://github.com/res0nat0r/gitosis.git

  •  # cd gitosis

  •  # python setup.py install   //显示Finished processing dependencies for gitosis==0.2表示安装成功


4、在开发机上生产密钥,并上传到服务器

  •  # ssh-keygen -t rsa   //一直点下一步,不用设置密码

  • 上传公钥到服务器 

     # scp ~/.ssh/id_rsa.pub root@192.168.1.193:/tmp/

    或者

     # vim /etc/hosts

     192.168.1.193  server93   //加入该行

     # scp ~/.ssh/id_rsa.pub root@server93:/tmp/

  • 登录到git服务器

     # ls /tmp/id_rsa.pub   //显示上传的公钥


5、在服务器上生成git用户,使用git用户并初始化gitosis

  • 创建git版本管理用户 git

     # useradd -c 'git version manage' -m -d /home/git -s /bin/bash git        // -m 参数表示创建用户主目录即使不存在。假如在/etc/login.defs中的CREATE_HOME被设置为no那么只输入useradd将不能创建用户主目录。这种情况下可以使用 -m

  • 更改git用户密码

     # passwd git

  • 切换到git用户

     # su - git

  •  $ gitosis-init > /tmp/id_rsa.pub

     //显示以下信息表示导入开发机的密钥成功

      Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/

      Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/

  • 删除存储的密钥

     $ rm -f /tmp/id_rsa.pub


6、在个人开发机上导出服务器的项目管理

  •  # mkdir -p /repo/

  •  # cd /repo/

  •  # git clone git@server93:gitosis-admin.git


7、在个人开发机增加及设置项目管理

  •  # cd /repo/gitosis-admin

  • 查看用户上传的密钥

     # ls /keydir

      root@develope.example.com.pub   //表示已经上传的开发机生成的公钥

  •  # cat keydir/root@develope.example.com.pub

      //显示密钥 最后的字符串为 密钥用户名 这里为 root@develope.example.com.pub

  •  # vim gitosis.conf


    [group test-git]        //具有写权限的组名称

  writable = test-git      //该组可写的项目名称

  members = root@develope.example.com.pub   //该组的成员(密钥用户名),多个用户协同开发时,以空格分隔


  如果要增加只读的组 参考如下

  [group test-git-readnoly]   //具有读权限的组名称

  readonly = test-git       //该组只读的项目名称

  members = root@develope.example.com   //该组的成员


  • 提交修改

     # git add gitosis.conf

     # git commit -m "add test-git repo"

     # git push


8、在个人开发机上初始,增加及使用项目test-git

  •  # cd ~/repo

  •  # mkdir test-git

  •  # cd test-git

  •  # git init

  •  # touch readme.txt

  •  # git add readme.txt

  •  # git commit -m "init test-git"

  •  # git remote add origin git@server93:test-git.git

  •  # git push -u origin master


9、增加协同开发者的公钥key到git服务器

  •  # cd /repo/gitosis-admin/keydir   //开发机上

  • 把协同开发者的 id_rsa.pub 文件里的数据拷贝到对应的开发者的密钥用户名.pub文件。如把密钥用户名 root@develope1.example.com 的 id_rsa.pub 文件中文本粘贴到 root@develope.example.com.pub 文件里,并保存。

  • 然后将添加数据后的目录更新到git服务器上

     # git add .

     # git commit -m "add root@develop1.example.com.pub file"

     # git push origin master