(参考文档)Centos 6.5搭建git服务器
系统版本信息: centos release 6.5
安装依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel -y
Git安装
1. wget https://www.kernel.org/pub/software/scm/git/git-2.9.3.tar.gz
2. tar zxvf git-2.9.3.tar.gz
3. cd git-2.9.3
4. ./configure --prefix=/usr/local/git
5. make && make install
6. ln -s /usr/local/git/bin/* /usr/bin/
7. git --version #显示版本号 git version 2.9.3,安装成功
Gitosis配置
权限管安装,权限管理工具gitosis的安装,需要用到python-setuptools
1. yum install python python-setuptools
2. git clone git://github.com/res0nat0r/gitosis.git
3. cd gitosis/
4. python setup.py install
#显示如下两个表示安装成功。
Using /usr/lib/python2.6/site-packages
Finished processing dependencies for gitosis==0.2 #安装成功
公钥管理 管理git服务器需要一些管理者,通过上传开发者机器的公钥到服务器,添加成为git服务器的管理者。
在客户端上:
1. $ssh-keygen -t rsa #一路回车,不需要设置密码
2. $scp ~/.ssh/id_rsa.pub root@10.10.105.153:~/ #为拷贝公钥到 10.10.105.153的/root目录下,用户名@运服务器地址。
登录服务器,在/root/下可以看到刚刚上传的id_rsa.pub文件。
1. ls
Gitosis初始化
服务器上生成git用户,使用git用户并初始化gitosis
创建git版本管理用户 git
1. useradd -c "git version manager" -m -d /home/git -s /bin/bash git
2. passwd git
初始化gitosis
1. mv id_rsa.pub /home/git/
2. su git
3. cd
4. gitosis-init < ./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/
#修改相关的权限。
7. chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update #添加权限
服务器端配置就ok了,下一步在开发者机器上配置
git项目管理
Clone项目管理仓库
1、git clone git@10.10.105.153:/home/git/repositories/gitosis-admin.git
(注:参考文档上说,可以使用相对路径。但我使用相对路径,报找不到工程。故使用全路径。)
服务端配置完毕,现在转到管理客户端,进入管理机器(上传公钥的机器)
1. $cd ~/gitrepo/gitosis-admin
2. $vim gitosis.conf
3. [group test] # 具有写权限的组名称
4. writable = test # 该组可写的项目名称
5. members = xxx@xxx #有写权限的组成员
提交到服务器,管理文件提交后。
本地创建的新项目test就可以提交到远程仓库了。
1. $cd ~/repo $mkdir test
2. $cd test #对于新的项目,需要先在本地初始化为 Git 项目,添加要管理的文件并作首次提交
3. $git init
4. $touch readme
提交到远程服务器
1. $git add .
2. $git commit -a -m "init test"
3. $git remote add origin git@192.168.186.129:test.git
4. $git push origin master #上传本地当前分支代码到master分支。git push是上传本地所有分支代码到远程对应的分支上
(此处,参考文档中,提到不需要去服务器上创建相关的工程,即可提交新的工程。但实际测试中,会报找不到仓库错误。故需要在服务端全用git账号先创建一个空的同名仓库。
使用命令为:
git init --bare test.git
)
服务端查看
1. $ ls
2. gitosis-admin.git test.git
test仓库已经存在,可以进行操作了。
添加新的git用户
项目的开发人员一般不止一个,就要添加项目协同开发者。这里需要协同开发者的公钥,上传至git服务器。
1. $cd ~/gitrepo/gitosis-admin/keydir
2. $ mv ~/id_rsa.pub tiantian@tianny.pub #修改公钥为主机名.pub
3. $vim gitosis.conf #添加成员
4. [group test]
5. writable = test
6. members = tiantian@tiantian tiantian@tianny
然后将添加数据后的目录更新到git服务器
1. $git add keydir/tiantian@tianny.pub
2. $git commit -am " granted tiantian@tianny commit rights to test "
3. $git push
推送完成后,新加的协同开发者就可以进行项目的开发了。
注解:gitosis实际上是从服务器端的/home/git/repositories/gitosis-admin/.gitosis.conf文件读取信息的,通过以上操作,会将新的权限信息写入到该文件中,如果搞错了配置,导致失去了推送权限,可以通过修改该文件来重新设定,如果你手工编辑该文件的话,它会一直保持到下次向 gitosis-admin 推送新版本的配置内容为止.
原文链接:https://www.f2er.com/centos/381112.html