一般的做法里,会同时提供 SSH 或者 HTTPS 协议的访问服务,只让少数几个开发者有推送(写)权限,其他人通过 git:// 访问只有读权限。
Git 协议也许也是最难架设的。它要求有自己的守护进程,这就要配置 xinetd 或者其他的程序,这些工作并不简单。
它还要求防火墙开放 9418 端口,但是企业防火墙一般不会开放这个非标准端口。而大型的企业防火墙通常会封锁这个端口。
2、在服务器上搭建 Git
现在我们将讨论如何在你自己的服务器上搭建 Git 服务来运行这些协议。
NOTE
这里我们将要演示在 Linux 服务器上进行一次基本且简化的安装所需的命令与步骤,当然在Mac 或 Windows 服务器上同样可以运行这些服务。
事实上,在你的计算机基础架构中建立一个生产环境服务器,将不可避免的使用到不同的安全措施与操作系统工具。
但是,希望你能从本节中获得一些必要的知识。
在开始架设 Git 服务器前,需要把现有仓库导出为裸仓库——即一个不包含当前工作目录的仓库。
这通常是很简单的。为了通过克隆你的仓库来创建一个新的裸仓库,你需要在克隆命令后加上 `--bare`选项按照惯例,裸仓库目录名以 .git 结尾,就像这样:
# git clone --bare my_project my_project.git
Cloning into bare repository ‘my_project.git‘...
done.
现在,你的 my_project.git 目录中应该有 Git 目录的副本了。
整体上效果大致相当于# cp -Rf my_project/.git my_project.git
虽然在配置文件中有若干不同,但是对于你的目的来说,这两种方式都是一样的。
它只取出 Git 仓库自身,不要工作目录,然后特别为它单独创建一个目录。
2.1 把裸仓库放到服务器上
既然你有了裸仓库的副本,剩下要做的就是把裸仓库放到服务器上并设置你的协议。
假设一个域名为git.example.com 的服务器已经架设好,并可以通过 SSH 连接,你想把所有的 Git 仓库放在 /opt/git 目录下。
假设服务器上存在 /opt/git/ 目录,你可以通过以下命令复制你的裸仓库来创建一个新仓库:# scp -r my_project.git user@git.example.com:/opt/git
此时,其他通过 SSH 连接这台服务器并对 /opt/git 目录拥有可读权限的使用者,通过运行以下命令就可以克隆你的仓库。
# git clone user@git.example.com:/opt/git/my_project.git
如果一个用户,通过使用 SSH 连接到一个服务器,并且其对 /opt/git/my_project.git 目录拥有可写权限,那么他将自动拥有推送权限。
如果到该项目目录中运行 git init 命令,并加上 --shared 选项,那么 Git 会自动修改该仓库目录的组权限为可写。
# ssh user@git.example.com
# cd /opt/git/my_project.git
# git init --bare --shared
由此可见,根据现有的 Git 仓库创建一个裸仓库,然后把它放上你和协作者都有 SSH 访问权的服务器是多么容易。
现在你们已经准备好在同一项目上展开合作了。
值得注意的是,这的确是架设一个几个人拥有连接权的 Git 服务的全部——只要在服务器上加入可以用 SSH 登录的帐号,然后把裸仓库放在大家都有读写权限的地方。你已经准备好了一切,无需更多。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/sanxing/article-72418-4.html
晶晶跟几年前一样
把市值抬上天