Как зафиксировать папку .svn в хранилище Mercurial? - PullRequest
1 голос
/ 26 января 2011

Я хочу зафиксировать папку .svn каждой папки с кодом в хранилище Hg. Проблема в том, что многие подпапки .svn пусты и поэтому не могут быть зафиксированы в ртутном репозитории.

Одно решение, которое я нашел, - добавить пустой файл в каждую из этих папок, но это громоздко. Есть ли более простой способ?

Ответы [ 2 ]

4 голосов
/ 26 января 2011

Вам нужно добавить пустой файл для каждого. Вы можете сделать это быстро с помощью:

for thedir in $(find /path/to/repo -type -d -name .svn) ; do
  touch $thedir/emptyfile
  hg add $thedir/emptyfile
done
2 голосов
/ 27 января 2011

Если вы хотите использовать hg поверх репозитория svn, вы можете попробовать расширение hgsubversion . Hgsubversion дает Mercurial возможность общаться с серверами SVN, как клиент SVN.

OTOH, если вы настаиваете на наличии папок .svn везде, вы можете использовать hgsvn для управления вашей параллельной проверкой hg и svn repo. Но у hgsvn есть недостаток, заключающийся в том, что он не выполняет автоматической перебазировки для вещей, которые возвращаются в SVN, поэтому, когда вам пришлось объединить (с точки зрения ртутного объединения) историю SVN с вашей локальной историей, вы не можете экспортировать каждый локальный коммит , только коммит слияния (есть способ экспортировать каждый коммит, даже когда происходит слияние, но первый локальный коммит отменит недавнюю историю svn, а коммит слияния вернет его, что приведет к дефекту истории svn).

Подробнее о различных рабочих процессах svn <-> hg можно найти на WorkingWithSubversion вики-странице.

...