Преобразование компании из SVN в Hg?
Мы здесь тяжелый пользователь SVN. В то время как преимущества GIT по сравнению с SVN заставили нас хотеть измениться, преимущества Hg над SVN означают, что теперь нужно изменить время, и нам нужно начать делать это очень скоро.
Я не так беспокоюсь о стороне клиента, но вот мои вопросы.
-
Есть несколько отличных книг по настройке метаповерхностей файлов, правильной организации проектов и т.д. на SVN. Что это за книга для Hg?
-
Есть ли способ конвертировать репозиторий SVN (который вы использовали) и можете сообщить, насколько он прошел? Мы не хотим потерять годы журналов фиксации, если это возможно.
-
Когда вы конвертируете DO, как вы разделили старый код? Вы фиксировали соединительную линию как один проект, а тэги/вилки - как другие?
-
Если вы использовали SVN для устаревшей работы, проверяли ли вы обновления SVN или что-то еще?
Ответы
Ответ 1
-
Там есть бесплатная книга на http://hgbook.red-bean.com/ и опубликованной O'Reilly в 2009 году.
-
Начиная с версии 0.9.5, Mercurial поставляется с инструментом преобразования .
-
Я должен признать, что вместо Mercurial я переключился на Git. Тем не менее, с помощью Git вы можете импортировать ветки, теги и соединительные линии одновременно в одном хранилище. Git заботится обо всех и изящно хранит теги в виде тегов, ветвей в виде ветвей и магистрали в качестве основной ветки. Я уверен, что это почти то же самое с Mercurial.
-
Я рекомендую вам переключиться на Mercurial (или Git или любой другой DVCS), как только сможете. Не продолжайте работать в двух разных хранилищах. Когда я переключался, я сохранял svn, пока я был достаточно уверен в Git (git -svn позволяет вам взаимодействовать с Git на svn и наоборот). Затем я сделал переключатель, и я заблокировал репозитории SVN.
Ответ 2
Пожалуйста, начните с Mercurial wiki. Там вы найдете заметную ссылку под названием Mercurial: The Definitive Guide, которая ссылается на hg book, поскольку она называется, Вероятно, вы знаете svn book для Subversion - это эквивалент Mercurial (они даже размещены на одном сервере, но написаны разные авторы).
Далее на первой странице вики вы найдете раздел для беженцев из других систем управления версиями. Существует ссылка с информация для пользователей SVN и преобразование репозитория. Первое объясняет, что вы можете попробовать HgSubversion, если вы хотите сделать двунаправленное преобразование между Subversion и Mercurial, а последнее объясняет, как используйте convert extension для выполнения (возможного инкрементного) Subversion → Mercurial conversion.
Вы уже нашли какую-либо из этих страниц? Если нет, сообщите нам, как мы можем улучшить эти страницы, чтобы облегчить их поиск.
Ответ 3
Я начал конвертировать из Subversion в что-то еще пару раз, однажды в Darcs, и теперь я играю с Git. Некоторое время назад я также сделал довольно значительный переход от CVS к Subversion.
Мой самый большой совет - не делай этого сразу. Выберите один нетривиальный, но не огромный проект, и сначала конвертируйте его. Выделить разумный бюджет времени (час в день на одного разработчика за первые пару недель не является необоснованным) для обучения системы и адаптации вашего рабочего процесса. Через месяц или около того, как только у вас будет достаточный опыт работы с системой среди нескольких разработчиков, вы можете посмотреть на преобразование всего остального, если вы все еще чувствуете, что хотите идти именно так. Когда вы это сделаете, убедитесь, что ваши разработчики, имеющие опыт работы с новым VCS, доступны другим, в идеале, нужно работать в одной комнате с кем-либо, кто будет преобразован.
О, да, и это предполагает, что вы уже сделали разумное количество игр с системой и создали с ним "игрушечный" проект. Не слишком игрушка: она должна включать как минимум трех разработчиков, несколько десятков файлов, сотни коммитов и должна использовать рабочий процесс, похожий на один из ваших реальных проектов.
Ответ 4
Был обнаружен обсуждение (pro v con) о распределенной Subversion, часть из которых касается элементов, которые SVN не делает, а также DVCS и наоборот, но в длинной дискуссии много информации, которая имеет полезный характер для любого, кто думает о миграции компании VCS.
Чтобы перейти непосредственно к хорошему сообщению, попробуйте этот.
Если вы решите пойти на DVCS из SVN, возможно, вам стоит взглянуть на git-svn, который позволяет двунаправленные изменения между svn-репозиторием и git. Он должен дать вам лучшее из обоих миров, но используя git вместо mercurial.
Ответ 5
У меня был довольно большой репозиторий subversion, где каждая основная папка была модулем. Чтобы разделить его, я использовал следующее заклинание:
for i in *; do \
echo include "\"${i}\"" > /tmp/hgv.map; \
echo rename "\"${i}\"" . >> /tmp/hgv.map; \
hg convert --filemap /tmp/hgv.map /mnt/e/sqlwork/ "/mnt/h/work/${i}"; \
done
Он получает каждую папку в текущем каталоге, генерирует filemap для подкоманды convert и преобразует каталог в hg-репозиторий. У меня не было потерь истории и никаких других препятствий. Возможно, вам захочется взглянуть на конвертировать расширение.
Ответ 6
- hginit.com из Джоэл Спольский - это очень хорошее введение.
- Я использовал плагин
hg convert
для преобразования (sic) моего репозитория Subversion в версию Mercurial. Работала очень хорошо. Подробнее см. файл плагина. Есть (конечно) другие способы.
-
hg convert
действительно копирует полный набор svn, включая ветки и теги (и любую другую структуру каталогов, присутствующую в вашем репо).
- Гораздо лучше использовать одну систему управления версиями, но при необходимости вы можете связать ее с subversion, используя плагин hgsubversion.