Самая маленькая, игрушка, распределенная система контроля версий для изучения - PullRequest
2 голосов
/ 10 июля 2010

Мне интересно написание игрушки DVCS.
Какая самая маленькая DVCS для изучения?
(мне не нужна совместимость с ssl, ssh, svn и т. Д. ... он должен иметь возможность создавать локальные репозитории)

Ответы [ 4 ]

3 голосов
/ 10 июля 2010

Фактическое ядро ​​Git довольно мало.К сожалению, он написан не на языке программирования, который легко понять, и он полон оптимизаций производительности, которые не имеют отношения к реальной операции.

Однако существует несколько альтернативных реализаций Git, в частностибиблиотека Dulwich , написанная на Python.

Также имеется Amp , цель которого - предоставить унифицированные интерфейсы для всех основных распределенных систем управления версиями.На данный момент они реализуют только Mercurial, но Git, Bazaar и Darcs также запланированы.Теперь Mercurial написан на Python и Amp на Ruby, которые одинаково выразительны, так что вы можете подумать, что разница не так уж велика.Однако Amp спроектирован так, что вы, например, используете команды Mercurial в репозитории Git или команды Darcs с семантикой Bazaar в репозитории Mercurial, поэтому между этими слоями существует очень четкое разделение. И Amp разработан таким образом, что даже непрограммисты могут написать свою собственную персонализированную систему контроля версий, используя строительные блоки Amp, поэтому код чрезвычайно прост и понятен.

2 голосов
/ 10 июля 2010

Взгляните на ископаемые распределенные версии, это всего лишь 350 КБ.

http://www.fossil -scm.org

2 голосов
/ 10 июля 2010

Первоначальная версия git

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

имела 1064 строки кода (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
1 голос
/ 10 июля 2010

Darcs написано на Хаскеле, но оно довольно большое: 40 KLOC. Mercurial также составляет около 40 KLOC, но его ядро ​​составляет около 20 KLOC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...