搭建Git服务器

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

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

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

第一步,安装git:

$ sudo apt-get install git

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

$ sudo adduser git

第三步,创建证书登录:

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

第四步,初始化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。

最新文章

  1. C#的访问级别
  2. My97Datepicker 去掉 “不合法格式或超期范围”自动纠错限制
  3. SpringMVC学习--功能完善
  4. 超级楼梯[HDU2041]
  5. C++做client Java做客户端传送数据
  6. [原创]java WEB学习笔记73:Struts2 学习之路-- strut2中防止表单重复提交
  7. asp.net输出docx文档出现【文件已损坏 无法打开】问题的解决方案
  8. CodeForce---Educational Codeforces Round 3 Load Balancing 正题
  9. 检查dns服务器是否可用
  10. 在线学习SQL语句?没问题~~
  11. Go与GUI——GO语言的图形界面Walk
  12. android 模拟器定在了任务栏出不来了
  13. 打开本地STL文件并创建webgl使用的geometry
  14. MarkDown使用 (三)表格
  15. JSP网站开发基础总结《九》(转)
  16. Webgis中关于Openlayers入门使用(一)安装及生成基本地图
  17. IdentityServer4 配置负载均衡
  18. CSS( Cascading Style Sheets )简书
  19. 使用 mysqladmin debug 查看死锁信息
  20. Ubuntu 16.04 安装 arm-linux-gcc 交叉编译工具

热门文章

  1. 32.把数组排成最小的数(python)
  2. 关于C#的学习
  3. luoguP1034 矩形覆盖 x
  4. sh_09_字典的定义
  5. 【CF1262F】Wrong Answer on test 233(数学)
  6. openwrt python27库的选择和库的大小
  7. CodeForces451E Devu and Flowers
  8. eclipse内存溢出 参数配置
  9. 关于MySQL GROUP BY 语句
  10. 实现一个成熟的底层毛玻璃效果(纯CSS)