我有兴趣写一个玩具DVCS。
什么是最小的DVCS学习?
(我不需要ssl,ssh,svn兼容性等......它应该只能做本地存储库)
答案 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。
答案 3 :(得分:1)
Darcs是用Haskell编写的,但它非常大:40 KLOC。 Mercurial也约有40个KLOC,但它的核心是大约20个KLOC。