Изменения

Перейти к: навигация, поиск

Сравнение DVCS - несколько задач

1748 байтов добавлено, 22:33, 7 декабря 2009
Bazaar
'''Bazaar''': хорошо. Можно импортировать репозиторий командами <tt>svn-import</tt> или <tt>branch</tt>, можно делать <tt>push</tt> и <tt>pull</tt> в/из Subversion. При импорте можно сохранить все ветки и метки в одном хранилище (если использовать [http://bazaar-vcs.org/SharedRepositoryTutorial Shared Repository]), для этого также требуются стандартные названия <tt>trunk/branches/tags</tt>. Граф ветвлений Subversion сохраняется, но также не отражает копирования подпапок. Также существует несколько других расширений для импорта Subversion в Bazaar, но они хуже.
Тест на клонирование репозитория MediaWiki пока что идёт прошёл почти без проблем, но почему-то вместо 59589 ревизий копирует копировал 85567 ревизий, то есть откуда-то придумал 25978 лишних ревизий25978. Память течёт точно так жеВозможно, как и Mercurial’е иэто были ветки — корректного присоединения истории веток к <tt>trunk</tt>'у обнаружено после клонирования не было. Ветки там, очевидноправда, по той же причине в основном не совсем честные (SWIGкак уже было упомянуто в секции про '''Git''') — они создавались не командой <tt>svn cp trunk branches/ветка</tt>, а создавался каталог ветки и в него копировались 2 каталога из trunk’а.
И всё было бы замечательноПамять течёт точно так же, но есть одна очень неприятная проблемакак и Mercurial’е и, очевидно, по той же причине (SWIG). Причём возникающая в достаточно простом случаеПосле клонирования репозиторий изначально занимал аж 16 Гб, однако при ближайшем рассмотрении стало ясно, что большую часть этого пространства занимали каталоги <tt>obsolete_packs</tt> и <tt>upload</tt> со старыми упакованными данными репозитория и некими временными файлами соответственно. То есть пусть бы она Такая же ситуация осталась и появляласьпосле вызова <tt>bzr pack</tt>, о чём есть целый баг: [https://bugs.launchpad.net/bzr/+bug/304320 Bug 304320 — bzr pack should (optionally?) delete obsolete packs]. Все эти лишние данные, по-видимому, но очень редко — это можно терпетьсмело удалить ручками — и обнаружить, что репозиторий занимает '''925 Мб''', то есть, лишь ненамного больше, чем в случае Git, и примерно в 1. Но тут ситуация не так чтобы редкая75 раза меньше, чем в Mercurial’е.
А теперь снова о неприятном. Есть у Базаара одна небольшая, зато возникающая в достаточно простом случае, проблемка. То есть пусть бы она и появлялась, но очень редко — это можно терпеть. Но тут ситуация не так чтобы редкая. Так вот. Всё начинается с банального — мы сделали изменение в '''Bazaar'''-клонированном SVN-репозитории, а кто-то тем временем сделал изменение '''в самом SVN-репозитории'''… Причём не важно, в каких файлах: даже если конфликтов в наших изменениях нет, проблема возникает всё равно (помним о том, что DVCS управляют «цельным» репозиторием). Что нам теперь остаётся делать? Ну конечно, мержиться. И merge успешно проходит. Но в случае '''Bazaar''' помните — после этого merge нужно сразу делать rebase и push в Subversion! Иначе, если до этого сделать ещё хотя бы один commit в Bazaar, push не удастсяпройдёт (он и не должен), а rebase не поможет или вывалится с исключением.
Хотите подробнее? Рассмотрим следующую последовательность действий:

Навигация