搭建git服务器

远程仓库一节中,咱们讲了远程仓库实际上和本地仓库没啥不一样,纯粹为了7x24小时开机并交换你们的修改。git

GitHub就是一个免费托管开源代码的远程仓库。可是对于某些视源代码如生命的商业公司来讲,既不想公开源代码,又舍不得给GitHub交保护费,那就只能本身搭建一台Git服务器做为私有仓库使用。github

搭建Git服务器须要准备一台运行Linux的机器,强烈推荐用Ubuntu或Debian,这样,经过几条简单的apt命令就能够完成安装。shell

假设你已经有sudo权限的用户帐号,下面,正式开始安装。安全

第一步,安装gitbash

$ sudo apt-get install git

第二步,建立一个git用户,用来运行git服务:服务器

$ sudo adduser git

第三步,建立证书登陆:app

收集全部须要登陆的用户的公钥,就是他们本身的id_rsa.pub文件,把全部公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。ssh

第四步,初始化Git仓库:工具

先选定一个目录做为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:版本控制

$ sudo git init --bare sample.git

Git就会建立一个裸仓库,裸仓库没有工做区,由于服务器上的Git仓库纯粹是为了共享,因此不让用户直接登陆到服务器上去改工做区,而且服务器上的Git仓库一般都以.git结尾。而后,把owner改成git

$ sudo chown -R git:git sample.git

第五步,禁用shell登陆:

出于安全考虑,第二步建立的git用户不容许登陆shell,这能够经过编辑/etc/passwd文件完成。找到相似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改成:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git用户能够正常经过ssh使用git,但没法登陆shell,由于咱们为git用户指定的git-shell每次一登陆就自动退出。

第六步,克隆远程仓库:

如今,能够经过git clone命令克隆远程仓库了,在各自的电脑上运行:

$ git clone git@server:/srv/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.

剩下的推送就简单了。

管理公钥

若是团队很小,把每一个人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys文件里就是可行的。若是团队有几百号人,就无法这么玩了,这时,能够用Gitosis来管理公钥。

这里咱们不介绍怎么玩Gitosis了,几百号人的团队基本都在500强了,相信找个高水平的Linux管理员问题不大。

管理权限

有不少不但视源代码如生命,并且视员工为窃贼的公司,会在版本控制系统里设置一套完善的权限控制,每一个人是否有读写权限会精确到每一个分支甚至每一个目录下。由于Git是为Linux源代码托管而开发的,因此Git也继承了开源社区的精神,不支持权限控制。不过,由于Git支持钩子(hook),因此,能够在服务器端编写一系列脚原本控制提交等操做,达到权限控制的目的。Gitolite就是这个工具。

这里咱们也不介绍Gitolite了,不要把有限的生命浪费到权限斗争中。

小结

  • 搭建Git服务器很是简单,一般10分钟便可完成;

  • 要方便管理公钥,用Gitosis

  • 要像SVN那样变态地控制权限,用Gitolite

相关文章
相关标签/搜索