CentOS下的Git服务器:Gitosis

咱们不少人知道Git多是从Github开始的。由于Github是如此流行,几乎全部写代码的人都知道它,以致于一提到Git就觉得是Github,其实二者并无多少关系,只是名字相似而已(这有点像Java和JavaScript)。 python

实际上,Git是一个分布式版本控制软件,原来是Linux内核开发者Linus Torvalds为了更好地管理Linux内核开发而创立的。虽然Git比SVN优秀不少,但它们最初被设计出来的想法是一致的,那就是版本控制。而Github倒是一个网站,充当Git公共服务器的做用,只要拥有Github帐号的人均可以把本身的项目托管在那里,若是你舍不得花些钱,你的项目是强制公开的。因此,Github就是一个经过Git协议为众多开发者提供代码托管的地方,同时它提供了不少特性,第一次使得你们能够这么公开地讨论起各自的项目。 git

上面之因此说这么多,是由于今天要讲的Gitosis有点相似Github的功能。什么意思呢?就是咱们能够在本身的服务器上安装Gitosis,那么这台服务器就能够向Github同样对外提供代码托管服务了,这对于不少不肯意把本身的代码公诸于世的公司来讲最好不过了。 github

这里以CentOS充当服务器为例给你们讲解一下Gitosis的安装和配置。同时,你还须要另一台PC,固然Linux、Mac主机也是能够的。之因此要两台机器,是由于一台作服务器,另一台充当客户端。甚至,你能够将全部下面讲的在同一台机器上完成。 shell

【服务端】Gitosis是用Python编写的,因此,在初始化一些环境的时候,要特别注意。经过下面的命令安装全部须要的软件。 服务器

yum install -y python python-setuptools git-core
git clone git://github.com/res0nat0r/gitosis.git
cd gitosis
python setup.py install

【客户端】软件安装完以后就是作必要的配置。因此,须要在你进行开发的客户端生成ssh公钥来初始化gitosis。注:为了管理方便,我同时把这台CentOS当作服务器和客户端,PC端我会用PC字样标明。由于有一台外网可以访问的服务器能够很方便的管理公钥。若是你把gitosis-admin项目在家里的电脑上管理,一旦你离开家就没办法增长新项目或者添加新用户了。 ssh

ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub root@xxx:/tmp/

【服务端】下面就利用刚才上传的公钥初始化gitosis 分布式

#新建一个git用户
useradd -m git
su - git
gitosis-init</tmp/id_rsa.pub

这样会在/home/git下面生成gitosis和repositories两个目录,后者即为存放公共库的目录。确保/home/git/repositories/gitosis-admin.git/hooks/post-update具备执行权限(755)。 post

【客户端】下面须要在开发机克隆gitosis-admin.git项目,它是用来管理全部git项目及用户的。 网站

git clone git@localhost:gitosis-admin.git #由于是同一台机器,因此能够用localhost

【客户端】为何这里能够直接经过clone命令克隆项目,就是由于gitosis-init初始化的时候使用了客户端生成的公钥。在gitosis-admin项目下有一个gitosis.conf文件和一个keydir目录。gitosis.conf用来配置git项目和用户,keydir存放用户的公钥,这里的公钥对命名有严格要求,要是 用户名.pub,必须以.pub后缀结尾。gitosis.conf的格式以下: spa

[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = username #对应keydir下有一个 username.pub 公钥文件

【客户端】如今能够按照这个格式增长新的项目。

[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = username #对应keydir下有一个 username.pub 公钥文件

[group new-project]
writable = new-project
members = newuser #多个用户用空格分开

在PC端,一样用ssh-keygen命令生成公钥和私钥,并把公钥上传到keydir目录下,重命名为newuser.pub,更新gigosis-admin项目。


#在CentOS机器上克隆的gitosis-admin项目下执行下面的命令
git add .
git commit -a -m "add newuser"
git push
完成以后,服务器就已经作好了接受新项目的准备。这个时候服务器端还不会生成new-project.git项目,等PC端push以后会自动生成。


PC端执行下面的命令。

#随便在什么目录都行

mkdir new-project
cd new-project
git init
git add .
git commit -a -m "initial new-project"

【PC端】新建项目以后须要把本地的这个库和服务器上配置的new-project关联起来,执行下面的命令能够完成这个任务,并且gitosis会自动在服务器上生成new-project.git项目。

git remote add origin git@xxx:new-project.git
git push origin master

这样,本地的项目就和服务器上的项目实现了关联,意味着你拥有了一台本身的git server,你彻底能够在别的电脑上克隆刚才添加的new-project.git项目了,也能够随意添加新的用户,记住要用空格隔开,还要上传公钥到keydir目录下并update gitosis-admin项目。

相关文章
相关标签/搜索