新手问题 GitHub / GitLab / GitCafe / Coding.net 实现思路

luffycn · 2015年01月06日 · 最后由 ichord 回复于 2015年01月08日 · 5225 次阅读

这个题目可能有点大,

不过我的问题比较简单,不知从什么时候起,突然大量的流行起了代码托管服务 连京东,还有一些其它的社区也都陆续提供了相关的服务

想请教下,类似 fork, pull request, commit 大概实现思路是怎么样的? 而且每次 commit 的代码状态都能全部被保留,如果是这样的话,文件大小岂不是会几何级成倍增长 这样的话,硬盘上的经济开销要很大啊?

而且每次 commit 的代码状态都能全部被保留,如果是这样的话,文件大小岂不是会几何级成倍增长

针对这个问题,推荐楼主去读一下 《Pro Git》 这本书,里边介绍了 git 如何在每次 commit 的时候保存快照,读完就会明白 commit 的处理并不是你所想象的那么简单粗暴。

其他的问题可能会涉及,但是我就不妄下定论了。

去读一读 gitlab 的代码不就知道了吗?

前两个月正好研究过这个问题,我简单讲一下我的思路。 暂且不谈支持源代码部署的功能,仅就简单的 Git Server 服务而言,需要有:

  • Git 服务器 — 用来支持pushpull等功能。
  • 一个 Web App — 用于管理 GIt repo 的网站。
  • 一些 Git Hook。

如果了解以上三点,那么看下面这个图,仔细思考一下,就能更加明白整个架构。

如果想实现基于这套 Git 服务的自动化部署(例如 Heroku),简单的方法就可以用 Hook 实现,但更推荐的是使用 CI,这就是另一回事了。

楼上二位说的都没错,建议去看一下。

@Martin91 初步看了下相关的资料,不是太理解 快照的概念,这是指图片嘛?如果是图片的话,为何某一次 commit 的代码,还能被下载或者浏览

@PengEdy 非常感谢,有点理解了

@ichord 虽然你的建议不错,不过我还是希望能在这里先大概了解一些思路,带着这些理解去读别人的源码,会比较容易一些,如果去读读 gitlab 就行的话,我也不用在这里问了吧。anyway, thanks all the same

@luffycn 你是对的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号