【分布式版本控制Git】(一)Git的搭建

【分布式版本控制Git】(一)Git的搭建

一.前言


Git是一个分布式的版本管理工具,更多简介见http://www.open-open.com/lib/view/open1328069609436.html


二.搭建环境


服务器:CentOS 6.5,VMware 虚拟机,ip地址为192.168.140.130

主机:Win7 x64


三.搭建过程


主要分成三个环节。管理员在服务器上搭建git和gitolite,管理员在自己主机上搭建git并对员工进行权限管理,员工在自己主机上搭建git并使用。

1.管理员主机的搭建

  管理员主机安装(其他普通员工安装过程也一样)
  Windows平台下使用msysgit,http://msysgit.github.io/下载
  安装完成后打开Git Bash,对本机进行配置
$ git config --global user.name "frank"  
$ git config --global user.email "5680XXXXX@qq.com"
替换成自己的用户名和邮箱

  生成密钥公钥
$ ssh-keygen -t rsa
  本机用户名为frank,密钥和公钥存放在C:\Users\frank\.ssh
前面git用户名和邮箱的配置存在C:\Users\frank\.gitconfig里面,可以进行修改


  从http://www.freesshd.com/下载并安装FreeSSHd,用于支持windows平台的ssh服务(没有测试过是否是必须步骤,笔者反正这么做了并成功了)

  注意,管理员管理各个用户的权限,需要将管理员的rsa公钥上传到服务器端并配置好,由管理员来管理各个代码仓库。
  这里直接使用secureFX上传至服务器的/tmp目录中,并重命名为frank.pub,以作区分。

2.服务器端的配置

安装git
[root@localhost ~]# yum install git

建立git用户
ubuntu下需要

$ sudo useradd -m -s /bin/bash git
没有-m就没有用户主目录,没有-s就没有shell,这里不设置密码,因为我们直接使用ssh进行认证
对于CentOS等系统,建立用户使用下面语句就可以了

[root@localhost ~]# adduser git

安装gitolite
先使用git身份登录
[root@localhost ~] su git
并切换至自己的主目录
[git@localhost root] cd ~
创建公钥密钥
[git@localhost root] ssh-keygen -t rsa
下载并安装gitolite
[git@localhost ~] git clone https://github.com/sitaramc/gitolite
在git的用户目录下创建bin目录
[git@localhost ~] mkdir /home/git/bin
执行下面语句安装
[git@localhost ~] gitolite/install -ln
这个时候可以进入bin能看到多了一个gitolite快捷方式
我们将这个快捷方式加入环境变量中,可以直接使用gitolite命令,当然也可以不配置,直接使用绝对路径

[git@localhost ~] vim ~/.bashrc
添加 PATH=~/bin:$PATH
也就是将/home/git/bin这个目录加入了PATH中
执行以下命令生效

[git@localhost ~] sh ~/.bashrc
将公钥frank.pub移至现在工作目录下/home/git
执行

[git@localhost ~] gitolite setup -pk frank.pub
如果报错gitolite命令不存在,则使用路径~/bin/gitolite
命令执行完成后就会产生在/home/git目中在产生repositories目录。frank就作为管理员的名字了,也是git repository的第一个用户。


到现在配置也完成了.


3.管理员进行管理

这个时候管理员在自己的主机上clone服务器的gitolite-admin项目
在windows的git bash中输入

$ git clone git@192.168.140.130:gitolite-admin
如果出错
The authenticity of host 192.168.140.130 can't be established.
则在git bash中执行
$ ssh  -o StrictHostKeyChecking=no  git@192.168.140.130
再clone,发现成功,项目复制到本地。
在本地就会签出一个gitolite-admin目录,其中包含了conf和keydir两个文件夹,conf中就是存放用户对不同repository的访问权限的配置,而keydir中就是用户的public key,现在里面就只包含了frank.pub.

增加新用户

普通用户例如lily,lucy,将各自公钥发给管理员,管理员进行权限配置
将用户公钥复制到gitolite-admin的keydir目录
执行 git add 命令,将公钥添加入版本库。

$ git add keydir
执行 git commit,完成提交。
$ git commit -m "add user: lily,lucy"
如果我们这时查看服务器端 ~git/.ssh/authorized_keys 文件,会发现新增的用户公钥也附加其中.

更改授权

添加新项目
我们尝试在授权文件 conf/gitolite.conf 中加入一段新的版本库授权指令,而这个版本库尚不存在。新添加到授权文件中的内容:
repo testing2
    RW+    =   @all
然后将授权文件的修改提交并 PUSH 到服务器,我们会看到授权文件中添加新授权的版本库 testing2 被自动创建。
 
   当版本库的数量很多的时候,在服务器端直接通过 git 命令创建或者通过复制创建可能会更方便。但是要注意,在服务器端手工创建的版本库和 Gitolite 创建的版本库最大的不同在于钩子脚本。如果不能为手工创建的版本库正确设定版本库的钩子,会导致失去一些 Gitolite 特有的功能。例如:失去分支授权的功能。


参考资料

http://blog.csdn.net/mydeman/article/details/7579411
http://www.ossxp.com/doc/git/gitolite.html
http://www.uml.org.cn/pzgl/201404092.asp















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值