Изменения

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

76 байтов добавлено, 16:04, 19 ноября 2009
Работа с SVN (миграция и синхронизация)
'''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, но они хуже.
И всё было бы замечательно, но есть одна очень неприятная проблема. Причём возникающая в достаточно простой ситуациипростом случае. То есть пусть бы она и былапоявлялась, но в очень редкой ситуации — редко — это можно терпеть. Но тут ситуация довольно частая.
Так вот. Всё начинается с обычной ситуации — банального — мы сделали изменение в '''Bazaar'''-клонированном SVN-репозитории, а кто-то тем временем сделал изменение '''в самом SVN-репозитории'''… Причём не важно, в каких файлах: даже если конфликтов в наших изменениях нет, ситуация проблема возникает всё равно(помним о том, что DVCS управляют «цельным» репозиторием). Что нам теперь остаётся делать? Ну конечно, мержиться. И merge успешно проходит. Но в случае '''Bazaar''' помните — после этого merge нужно сразу делать rebase и push в Subversion! Иначе, если до этого сделать ещё хотя бы один commit в Bazaar, push не удастся, а rebase не поможет или вывалится с исключением.
Хотите подробнее? Рассмотрим следующую последовательность действий: