Сравнение DVCS - несколько задач
Работа с SVN (миграция и синхронизация)
Mercurial: отлично! Есть несколько расширений — hgsubversion, hgsvn, convert, позволяющих работать с Subversion тем или иным образом, и не совместимых друг с другом. Самое вменяемое из них — hgsubversion, хотя и заявлено, что оно ещё сырое. Имеет фактически весь необходимый функционал — можно делать и push, и pull в/из Subversion, можно клонировать SVN-репозиторий с сохранением веток и меток (правда, обязательно стандартное их расположение в корневых поддиректориях /trunk, /branches, /tags), эти два метода совместимы, а граф ревизий сохраняется.
Остальные два экстенжна «нинужны»: hgsvn — нечто более старое, работает сбоку от общего механизма, тоже позволяет делать push и pull, но не клонирует весь репозиторий, а только извлекает (checkout’ит) последнюю версию, чтобы далее можно было использовать Subversion и Mercurial вместе. Ну и конечно, оно не совместимо с hgsubversion. convert же предназначен для конвертации истории проекта из нескольких различных систем контроля версий в Mercurial, ни черта не совместим ни с hgsvn</tt, ни с <tt>hgsubversion и не сохраняет граф ревизий. Зато, правда, поддерживает возможность переименования поддиректорий trunk/branches/tags.
Bazaar: хорошо. Можно импортировать репозиторий командами svn-import или branch, можно делать push и pull в/из Subversion. При импорте можно сохранить все ветки и метки в одном хранилище (если использовать shared repository), для этого также требуются стандартные названия trunk/branches/tags. Граф ревизий Subversion, увы, не сохраняется. Также существует несколько других расширений для импорта Subversion в Bazaar, но все они ещё хуже.
Что любопытно — с Subversion-репозиториями DVCS работают, как правило, гораздо быстрее самого Subversion.
Управление патчами
Первое, что приходит на ум — это, конечно, аналоги quilt'а, работающие поверх DVCS: Mercurial Queues (появился первым), Bazaar Loom, StGIT. Все они очень похожи и друг на друга, и на сам quilt.
quilt — вещь банальная, позволяющая автоматизировать тупое накатывание последовательности большого числа патчей и правку патча, который находится где-то в середине.