То, что я в итоге сделал, было довольно хромым (я думаю).Моя цель состояла в том, чтобы взять содержимое моего репозитория Mercurial и перезаписать мою рабочую копию SVN (чтобы я мог передать их в SVN позже).Меня не особо волнует подробная история изменений из Mercurial - коммит будет «свернут» в репозитории SVN.
Неработающий подход, A1: удалить содержимое рабочей копии SVN, а затем скопироватьповерх рабочей копии Mercurial.
Не будет работать, потому что ... папки .svn разрушаются.
Рабочий подход, A2: Используйте команду find, чтобы удалить все, кроме папок .svn израбочая копия СВН.Затем просто скопируйте рабочую копию Mercurial.SVN обнаружит изменения и позволит мне зафиксировать.
Проблемы с подходом A2: 1. Это руководство.2. Если какие-либо каталоги пусты, Mercurial не будет их отслеживать, но они будут в репозитории SVN (у меня не было этой проблемы, но это могло произойти).3. Потерять историю Mercurial на стороне SVN.Вы ничего не можете с этим поделать, поскольку метаданные SVN не так богаты, как у Mercurial.4. Хорошо только, когда один разработчик совершает в репозитории SVN.Если фиксируются несколько разработчиков, вам придется синхронизировать все их изменения, включая синхронизацию этих изменений со всеми клонами.
Преимущества с подходом A2:
1) Это просто.
В корне рабочей копии svn выполните следующую команду:
# delete all files in an SVN working copy, except those
# in the .svn folders; directories are not deleted
find . -path "*.svn" -prune -o -type f -exec rm -v {} +
С помощью файлового менеджера перетащите содержимое рабочей копии Mercurial в рабочую копию SVN (для этого можно использовать скрипт).
Используйте TortoiseSVN для фиксации (вы можете легко проверить все изменения таким образом).
С учетом сказанного, я приму предыдущий ответ, так как это, вероятно, правильный способ сделать это.