最小的玩具,分布式版本控制系统来研究

时间:2010-07-10 03:38:03

标签: git version-control

我有兴趣写一个玩具DVCS。
什么是最小的DVCS学习?
(我不需要ssl,ssh,svn兼容性等......它应该只能做本地存储库)

4 个答案:

答案 0 :(得分:3)

Git的实际核心相当小。不幸的是,它不是用易于理解的编程语言编写的,而且它充满了与实际操作无关的性能优化。

但是,有几种Git的替代实现,特别是Dulwich库,它是用Python编写的。

还有Amp,其目标是为所有主要的分布式版本控制系统提供统一的接口。目前,他们只实施了Mercurial,但也计划了Git,Bazaar和Darcs。现在,Mercurial是用Python和Amp in Ruby编写的,它们都具有相似的表现力,所以你可能会认为差异并不大。但是,Amp的设计使您可以在Meritial存储库上使用Git存储库上的Mercurial命令或带有Bazaar语义的Darcs命令,因此这些层之间存在非常清晰的分隔。 Amp的设计使得即使是非程序员也可以使用Amp的构建模块编写自己的个性化版本控制系统,因此代码非常简单直接。

答案 1 :(得分:2)

git的初始版本

commit e83c5163316f89bfbde7d9ab23ca2e25604af290
Author: Linus Torvalds <torvalds@ppc970.osdl.org>
Date:   Thu Apr 7 15:13:13 2005 -0700

有1,064行代码(ansic = 822,sh = 242)。

有关编年史,请参阅:

最初进行提交看起来像这样:

$ init-db 
$ edit file 
$ update-cache –-add file 
$ edit file 
$ show-diff 
$ update-cache file 
$ T=$(write-tree) 
$ P=$(cat .dircache/HEAD) 
$ C=$(echo "My commit" | commit-tree $T -p $P) 
$ echo $C >.dircache/HEAD

答案 2 :(得分:2)

看看化石分布式版本,它只有350kb。

http://www.fossil-scm.org

答案 3 :(得分:1)

Darcs是用Haskell编写的,但它非常大:40 KLOC。 Mercurial也约有40个KLOC,但它的核心是大约20个KLOC。