Мы мигрировали из CVS в Mercurial около 2 недель назад на моей работе. Мы небольшая команда из 6 человек. Только двое уже работали с чем-то еще, кроме CVS, до миграции.
Я отвечал за выбор нового vcs. Я считал Git и Mercurial.
Некоторые проблемы, которые у нас были с CVS, были плохие возможности ветвления, отсутствие поддержки переименования, действительно плохой алгоритм для конфликтов.
Я никогда не рассматривал SVN, потому что каждый раз, когда я пытался использовать его с ветвями в прошлом, слияния всегда были головной болью. И, честно говоря, в наши дни вся шумиха касается dvcs, и на это должна быть причина;)
Между Git и Mercurial, это действительно больше о личном выборе. Мое сердце упало на Mercurial, потому что мне было легче учиться, чем на Git, и менее ориентированный на «действительно большой проект».
Преимущества Git / Mercurial над SVN
- Улучшенные ветки и возможности слияния (действительно самая важная причина)
- Возможности экспорта / импорта патча в пачках, по электронной почте и т. Д.
- Не проводил обширных тестов по этому поводу, но я думаю, что оба быстрее во многих отношениях, чем SVN (слияние, клонирование, диффузия и т. Д.)
- Разработка намного активнее, я слышал, что команда SVN пытается двигаться вперед, но все же.
- Действительно хорошая инфраструктура расширений
- Возможности поставляемого веб-сервера, действительно полезные для быстрого обмена информацией, например.
И даже если вы сказали «помимо того, что они распространяются», я думаю, что это действительно убийственная функция. DVCS допускает некоторые действительно изящные вещи, вначале это может показаться бесполезным, но как только вы их используете, вы не можете обойтись без них;)
Кривая обучения
Два человека в команде не очень-то обрадовались переменам. Но с небольшим двухчасовым объяснением для всей команды с некоторыми слайдами все прошло гладко.
Конечно, они иногда задают мне вопрос, но у нас не было никаких реальных проблем с момента миграции. Просто небольшое недоразумение о способе объединения вытянутых изменений в рабочем каталоге. Ничего, что не было решено в считанные минуты.
Я думаю, что могу сказать, что примерно через 2 недели каждая из них, по крайней мере, так же продуктивна, как и раньше, и уверена в новом инструменте. И теперь мы можем использовать ветки функций, не опасаясь грядущего слияния:)
Миграция CVS в Mercurial
https://www.mercurial -scm.org / вики / RepositoryConversion # CVS
В официальной вики перечислены различные способы перехода с CVS на Mercurial. Я протестировал расширение Convert и cvs2hg, который наконец-то был использован.
Расширение Tailor, hg-cvs-import, fromcvs похоже на старый код и больше не поддерживается.
Расширение Convert прекрасно работает в простом репозитории, но, поскольку наш CVS-репозиторий был действительно большим и имел несколько действительно странных веток, расширение не смогло правильно импортировать всю историю. ГОЛОВА была правильной, но некоторые ветви отсутствовали.
Итак, последний выбор - cvs2hg . Фактически это новый бэкэнд для cvs2svn, который конвертируется в Mercurial вместо Subersion.
Подход «Быстрый старт», представленный в файле Readme, разработан из коробки со всеми ответвлениями. Но, в конце концов, я использовал файл опций, чтобы добавить некоторые пользовательские сопоставления и удалить некоторые ошибочные коммиты или нежелательные ветки.
Файл опций в прилагаемых файлах хорошо прокомментирован, вам не составит труда настроить его так, как вам удобно.
Для информации, после первоначального преобразования я использовал расширение Convert для некоторого извлечения подпроекта из результирующего репозитория Mercurial в другой репозиторий Mercurial, как объяснено здесь .