Michael

写写代码,说说人生

您好,我是Michael,欢迎来到我的个人家园。
代码搬运工,目前就职于XX证券,努力修行中。


H5 / Java / Objc / Swift / Vue / RN

搭建Git服务器

说明:本文转载自大神廖雪峰的博客,想学更多,请移步大神的博客。

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

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

一、创建Git服务器

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

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

1. 安装git

$ sudo apt-get install git

2. 创建一个git用户,用来运行git服务:

$ sudo adduser git

3. 创建证书登录

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

4. 初始化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

5. 禁用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每次一登录就自动退出。

6. 克隆远程仓库

现在,可以通过 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
  • 关于更多Git的学习,请参考神廖雪峰的博客
最近的文章

关于网站访问次数统计 - 卜算子统计

个人网站访问次数统计,可以植入以下代码:<script async src="//dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script>本站总访问量<span id="busuanzi_value_site_pv"></span>次<br/>本站访客数<span id="busuanzi_value_site_uv"></span>...…

博客建设继续阅读
更早的文章

关于CloudFlare一些你不知道的事

CloudFlareCloudFlare是个CDN服务商,他提供免费的CDN服务,当然也有付费部分,只是相当不便宜。最便宜的也是20美金一个月。着实负担不起。这篇文章其实不是个介绍文章,只是我在用CloudFlare时的一些问题与找到的答案,分享给大家: PS:下面所指的免费部分,我并不了解收费部分的详细情况。1. Always Online™CloudFlare提供一个总是在线的服务,当你的伺服器挂掉的时候,你网页的访客依然可以造访到你的网页。严格来说是由CloudFlare缓存的网页...…

博客建设继续阅读