Перевести компанию из SVN в Hg? - PullRequest
16 голосов
/ 19 июня 2009

Мы большой пользователь SVN здесь. Хотя преимущества GIT перед SVN заставили нас хотеть измениться, преимущества Hg перед SVN означают, что пришло время измениться, и мы должны начать делать это очень скоро.

Я не очень беспокоюсь о клиенте, но вот мои вопросы.

  1. В SVN есть несколько отличных книг по настройке мета-свойств файлов, правильной организации проектов и т. Д. Что это за книга (-ы) для Hg?

  2. Есть ли способ конвертировать SVN-репозиторий (который вы использовали) и можете сообщить, насколько хорошо он прошел? Мы не хотим терять годы коммитов, если это возможно.

  3. Когда вы конвертировали, как вы разбили старый код? Вы фиксировали транк как один проект, а теги / вилки как другой?

  4. Если вы использовали SVN для устаревшей работы, проверяли ли вы обновления SVN или что-то еще?

Ответы [ 6 ]

13 голосов
/ 19 июня 2009
  1. Существует бесплатная книга на http://hgbook.red -bean.com / и , опубликованная O'Reilly в 2009 году.

  2. Начиная с версии 0.9.5, Mercurial поставляется с инструментом преобразования .

  3. Я должен признать, что переключился на Git вместо Mercurial. Тем не менее, с помощью Git вы можете импортировать ветви, теги и ствол одновременно в одном и том же хранилище. Git заботится обо всех и изящно хранит теги как теги, ветви как ветви и транк как главную ветку. Я уверен, что это почти то же самое с Mercurial.

  4. Я рекомендую вам переключиться на Mercurial (или Git или любую другую DVCS) как можно скорее. Не продолжайте работать над двумя разными репозиториями. Когда я переключался, я держал svn до тех пор, пока я был достаточно уверен в Git (git-svn позволяет вам взаимодействовать от git до svn и наоборот). Затем я переключился и заблокировал репозитории SVN.

4 голосов
/ 03 июля 2009

Я начал преобразование из Subversion во что-то еще пару раз, один раз в Darcs, и теперь я играю с Git. Я также довольно давно перешел из CVS в Subversion.

Мой самый большой совет: не делай все сразу. Выберите один нетривиальный, но не огромный проект и преобразуйте его первым. Выделите разумный бюджет времени (час на одного разработчика в первые пару недель не лишен смысла) для изучения системы и адаптации вашего рабочего процесса. Через месяц или около того, когда у вас есть достаточный опыт работы с системой среди нескольких разработчиков, вы можете посмотреть на преобразование всего остального, если вы все еще чувствуете, что хотите пойти по этому пути. Когда вы сделаете это, убедитесь, что ваши разработчики, имеющие опыт работы с новой VCS, доступны для других, в идеале один должен работать в одной комнате с кем-либо, кто преобразуется.

О, да, и это предполагает, что вы уже достаточно поиграли с системой и создали «игрушечный» проект, используя ее. Хотя это не так уж и сложно: в нем должны участвовать как минимум три разработчика, несколько десятков файлов, сотни коммитов и должен использоваться рабочий процесс, аналогичный одному из ваших реальных проектов.

4 голосов
/ 03 июля 2009

Пожалуйста, начните с перехода на Mercurial wiki . Там вы найдете заметную ссылку под названием Mercurial: полное руководство , которая ссылается на книгу hg , как она называется. Вы, наверное, знаете svn book для Subversion - это эквивалент для Mercurial (они даже размещены на одном сервере, но написаны разными авторами).

Далее на главной странице вики вы найдете раздел для беженцев из других систем контроля версий. Существует ссылка с информацией для пользователей SVN и преобразованием репозитория . Первый объясняет, что вы можете попробовать HgSubversion , если вы хотите выполнить двунаправленное преобразование между Subversion и Mercurial, а второй объясняет, как использовать расширение convert для выполнения (возможного ) Subversion -> преобразование Mercurial.

Вы уже нашли какую-либо из этих страниц? Если нет, расскажите, как мы можем улучшить эти страницы, чтобы их было легче найти.

1 голос
/ 21 июня 2009

Было обсуждение (pro v con) о распределенной Subversion, некоторые из которых касаются элементов, которые SVN не делает так же хорошо, как DVCS, и наоборот, но есть много информации в долгая дискуссия, которая полезна для всех, кто задумывается о миграции VCS компании.

Чтобы сразу перейти к хорошему сообщению, попробуйте этот .

Если вы решите перейти на DVCS из SVN, возможно, вам следует взглянуть на git-svn , который разрешает двунаправленные изменения между хранилищем svn и внешними интерфейсами git. Он должен дать вам лучшее из обоих миров, хотя вместо меркуриала используется git.

0 голосов
/ 30 марта 2011
  1. hginit.com из Джоэл Спольски - очень хорошее вступление.
  2. Я использовал плагин hg convert для преобразования (sic) моего репозитория Subversion в версию Mercurial. Работал очень хорошо. Смотрите плагин doc для деталей. Есть (конечно) другие способы .
  3. hg convert действительно копирует полный набор SVN, включая ветви и теги (и любую другую структуру каталогов, присутствующую в вашем репо).
  4. Гораздо лучше использовать одну систему контроля версий, но при необходимости вы можете связать с Subversion с помощью плагина hgsubversion .
0 голосов
/ 15 июня 2010

У меня был довольно большой репозиторий 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

Он получает каждую папку в текущем каталоге, генерирует карту файлов для подкоманды convert и преобразует каталог в репозиторий hg. У меня не было потери истории и не было никаких других препятствий. Возможно, вы захотите взглянуть на расширение convert .

...