Синхронизация SVN в Mercurial с использованием svnsync & hg convert - пропускает svn: externals? - PullRequest
3 голосов
/ 23 ноября 2010

Я создал Mercurial зеркало SVN-репозитория (с помощью этого урока: http://oreilly.com/opensource/excerpts/opensource-mercurial/migrating-to-mercurial.html). Синхронизация работает отлично, за исключением того, что я заметил, что он не выбирает внешний репозиторий, на который ссылаются в основном репозитории SVN ...

В идеале я бы хотел иметь возможность вытащить все как один репо в Mercurial (вместе с ревизиями, если это возможно).

В чем я не уверен: является ли отсутствующее внешнее ограничение svnsync или ограничением hg convert?

Можно ли как-нибудь заставить синхронизировать внешнее в том же репозитории Mercurial?


Я думаю, что хорошим решением было бы установить процесс синхронизации заново, для внешнего. Создайте ветвь текущего зеркала hg и синхронизируйте внешнее с вилкой hg mirror.

Подвох в том, что внешний ствол предназначен для того, чтобы войти в подпапку первого зеркала, так как я могу воспроизвести это с помощью convert? Я сомневаюсь, что могу сказать преобразовать для импорта в подпапку ...

1 Ответ

3 голосов
/ 23 ноября 2010

- это отсутствующее внешнее ограничение svnsync или ограничение hg convert?

svnsync используется для создания зеркала репозитория SVN.Это включает в себя любые svn:externals свойства.Следовательно, это должно быть ограничение hg convert.

Обратите внимание, что вам на самом деле не нужно создавать зеркало с svnsync.Статья рекомендует это только потому, что наличие локальной копии может ускорить процесс преобразования.

Можно ли каким-либо образом заставить синхронизировать внешнее также в том же репозитории Mercurial?

Хранилище SVN обычно содержит несколько слабо связанных проектов, каждый из которых имеет свои собственные ветви и теги.Но Mercurial не работает таким образом: когда вы разветвляетесь, вы разветвляете все, что находится в хранилище.Вы должны создать отдельный репозиторий Mercurial для каждого проекта в SVN, который имеет свои собственные ствол / ветви / теги.Этот другой подход, скорее всего, объясняет, почему hg convert игнорирует внешние объекты, даже если они находятся в одном и том же хранилище SVN.

В ртутном эквиваленте есть эквивалент svn:externals;это называется "подпозитории".Вместо одного или нескольких свойств svn:externals у вас есть один файл .hgsub с аналогичным содержимым в корневом каталоге вашего проекта.Сначала вы должны преобразовать каждый проект SVN в отдельный ртутный репозиторий, а затем соединить их с подкаталогами.См. Mercurial Wiki-страницу для подпапок для более подробной информации.

...