И вот я, как настоящий джедай, решил затянуть к себе историю развития FreeBSD... Мне важна не сама история, больше всего меня интересует новейшая история, но все DVCS, по моим сведениям, не умеют вытягивать историю частично.
Тащить стабильные ветки - совершенно неинформативно, Весь чейнджлог содержит только собщения о мердже. Следовательно надо тащить к себе транк, который в репозитории FreeBSD традиционно по cvs'овски называется HEAD.
Проблема в том что история FreeBSD - богатая, 200 тысяч ревизий. И как выяснилось, не всякая DVCS долетит до середины репозитория FreeBSD. Решил немного сравнить mercurial и git в этом плане.
Mercurial
Для Меркуриала я использую рекоммендуемое расширение hgsubversion.
Самый простой путь -
hg clone svn+http://svn.freebsd.org/base/head
очень легко может не сработать. Одна ошибка и Mercurial прерывает свое выполнение, не забыв при этом стереть все скачанное непосильным трудом.Блин, зачем же я три часа тяну
svn+http://svn.freebsd.org/base
?Лучше сделать hg init, потом добавить в .hg/hgrc default path:
[paths] default = svn+http://svn.freebsd.org/base/head/А после чего, спокойно, можно делать hg pull. В случае ошибок дальнейший пуллинг будет продолжаться с последней скачанной ревизии.
... прошло 5 часов.
Проблема еще в том что этот процесс продолжается ужасно много времени. Пока дошел до 13500/209640. До конца осталось примерно 55 часов... подождем...
... прошло 30 часов.
90800/209640. До конца осталось примерно столько же.
... Прошло 55 часов.
148054/209640
... Прошло 75 часов, опять аборт.
202063/209640
pulling from svn+http://svn.freebsd.org/base/head/ [r202063] imp: Cope with the move and if_timer going way. abort: sys/mips/cavium/dev/rgmii/octeon_fau.c@2ef2ef595899: not found in manifest!
Ан нет, вру... необходимо указать опцию --stupid для команды pull. При этом меркуриал, похоже, извлекает весь срез целиком, и потом уже строит дельты. Ведь не зря он пишет после каждой ревизии:
Fetching entire revision: branch creation with mods.
И вот наконец этот процесс завершился, заняв приблизительно 76 часов чистого времени.
Полученная история FreeBSD насчитывает ~150000 ревизий, за период с 1993 года.
И все это заняло на диске 767 MiB базы данных.
Само дерево насчитывает ~45.5 тысяч файлов и занимает объем 603 MiB.
Какой объем данных был выкачан при этом по сети - я затрудняюсь предположить, наверное несколько гигабайт.
Главное, что стоит запомнить:
- Не используйте команду clone, init/pull значительно надежнее.
- Некоторые ревизии вызывают ошибки, которые можно обойти путем указания для pull опции --stupid.
- Но не надо скачивать все с указанием опции --stupid, это потребует значительно больше времени и трафика.
Git
Должен справиться с этим часов за 50, но с этим экспериментом я пожалуй повременю, через три недели вернусь из отпуска - проверю.
0 коммент.:
Отправить комментарий