google Firefox 程序员 wordpress linux linux命令 centos Ubuntu nginx php Windows Python 微软 apache Android shell mysql 开源 java HTML5

CentOS Linux系统下搭建Git服务器Gitosis

Git 是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Windows下的Git请看这里:http://www.oschina.net/p/msysgit

Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得 BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如,X.org 最近就迁移到 Git 上来了,很多 Freedesktop.org 的项目也迁移到了 Git 上。

本文主要记录在CentOS Linux系统下搭建Git服务器Gitosis:

1. 编译安装git

# wget http://kernel.org/pub/software/scm/git/git-1.7.3.tar.gz
# tar -xzvf git-1.7.3,tar.gz
# cd git-1.7.3
# yum install-y gettext-devel expat-devel curl-devel zlib-devel openssl-devel
# ./configure --with-curl=/usr/local
# make && make install
# git --version

2. 安装gitosis

# yum install python python-setuptools
# git clone git://eagain.net/gitosis.git
# cd gitosis
# python setup.py install

3. 在开发机器上生成公共密钥(用来初始化gitosis)

不需要密码,一路回车就行(在本地操作)
# ssh-keygen -t rsa

上传你的ssh public key到服务器
# scp ~/.ssh/id_rsa.pub root@xxx:/tmp/

4. 初始化gitosis

新增一个git用户
# adduser git

切换倒git用户下
# su - git

id_rsa.pub是刚刚传过来的
# gitosis-init < /tmp/id_rsa.pub

id_rsa.pub已经无用,可删除.
# rm /tmp/id_rsa.pub 

5.获取并配置gitosis-admin

在本地执行,获取gitosis管理项目
# git clone git@xxx:gitosis-admin.git

编辑gitosis-admin配置文件
# vi gitosis-admin/gitosis.conf

// 在gitosis.conf底部增加

[group 组名]
writable = 项目名
members = 用户  //这里的用户名字 要和 keydir下的文件名字相一致

// VI下按ZZ(大写)两次会执行自动保存并退出,完成后执行

# git commit -a -m “xxx xx” 

要记住的是,每次添加新文件必须执行git add .,或者git add filename,如果没有新加文件,只是修改的话就可以执行此句。修改了文件以后一定要PUSH到服务器,否则不会生效。

# git push

新建项目

到此步就算完成gitosis的初始化了。接下来的是新建一个新项目到服务器的操作,如第5步中配置gitosis.conf文件添加的是

[group project1] // 组名称
writable = project1 // 项目名称
members = xxx // 用户名xxx为[group gitosis-admin]中的members一样
# git commit -a -m “添加新项目project1,新项目的目录是project1,该项目的成员是xxx“ // “”里的内容自定

# git push

// 进入到项目目录
# cd /home/用户/project1 // project1要与gitosis.conf文件配置一致
# git init
# git add . // 新增文件 留意后面有一个点
# git commit -a -m “初始化项目project1″

// 然后就到把这个项目放到服务器上去
# git remote add origin git@xxx:project1.git // xxx为服务器地址
# git push origin master

// 也可以把上面的两步合成一步
# git push git@xxx:project1.git master 

延伸阅读

评论