Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1064098
  • 博文数量: 284
  • 博客积分: 8223
  • 博客等级: 中将
  • 技术积分: 3188
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-01 13:26
文章分类

全部博文(284)

文章存档

2012年(18)

2011年(33)

2010年(83)

2009年(147)

2008年(3)

分类: Java

2011-02-21 17:20:42

:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://fallenlord.blogbus.com/logs/71173948.html

最近在玩Git,想为部门内部搭建一个Git的私服,于是开始研究。。。

首先,在开始选用协议之前,需要了解几个关键问题:

1. 因为git总是会将服务器端的所有历史版本同步到本地来,所以传输量相比SVN/CVS等要大上很多(而且Git存储的不是delta而是snapshot),因此传输效率对于Git来说至关重要

2. Git本身没有带权限控制,大多数是利用与协议相关的权限(如操作系统权限)。而在Git所支持的所有协议之中,并非所有协议都支持授权(如Git协议完全不能授权)

 

然后我们可以看看Git支持的几种传输协议了,他们是:本地、SSH、Git、HTTP/HTTPS

本地协议(Local Protocol)

这种协议实现最为简单:将库放在本地磁盘上,其他人通过磁盘共享来实现文件的提交和下载,权限由磁盘权限控制。用户使用的方式大概是:

$ git clone /opt/git/project.git 或 $ git clone file:///opt/git/project.git

两种写法工作方式略有不同,简单来说前者比后者效率更高,这里不进行讨论。这种方式的优点是简单,缺点是使用前必须先挂载磁盘,这显然不适合广域网或用户较多的情况。

SSH协议

通过SSH来实现文件的提交和下载,权限由账号控制。用户使用的方式大致是:

$ git clone ssh://user@server:project.git 或 $ git clone user@server:project.git

这种方式优点是高效,而且这几乎是官方推荐的唯一的向网络仓库上传代码方式。缺点是无法通过匿名方式访问网络仓库,即使只是读取。

Git协议

Git协议的实现方式是在服务器上启动一个Git的守护进程,用于监听9418端口。

这种方式优点是高效(最高效)。缺点是配置困难,无法授权!(要么所有人都可以读写,要么所有人都只读),而且默认端口9418很可能被墙!(企业里)

HTTP/HTTPS协议

一般与Apache等Web服务器组合使用。

优点是承压量大,只读的情况配置容易(甚至可以在服务器端不安装Git),但如果要求可写,就需要WebDAV支持。缺点是传输效率差

 

总结

以上几种协议,可以根据实际情况进行选用,一般来说,可以同时支持多种来达到最佳效果。

例如:同时实现Git协议和SSH协议可以让匿名用户能够方便快速的获取代码,同时开发人员又可以提交代码(github.com就是使用的这种方式);而如果公司对于端口有限制,也可以考虑将Git协议改为HTTP协议;而如果悲剧得像我一样,公司即限制了9418端口又限制了用户机器到IDC服务器之间的SSH,就只能考虑本地协议和HTTP协议了

阅读(1867) | 评论(0) | 转发(0) |
0

上一篇:unfuddle的配置

下一篇:Apache Service安装

给主人留下些什么吧!~~