2014-11-17 2 views
0

У меня есть доступ только для чтения к SVN-репозиции третьей стороны, который время от времени они совершают. Назовем это http://foo.com/svn.Зеркалирование части SVN-репо для рабочей копии

Я хотел бы отразить это в подпапке в существующем репо, который я контролирую. Назовем это http://bar.com/svn/myfork

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

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

Как я могу это сделать?

  • svnadmin dump/load, похоже, хочет использовать весь репозиторий.
  • svnrdump хочет загрузить изменения в репо, а не рабочую копию.
  • Я не могу применить патч, потому что номер версии в моей рабочей копии не соответствует номерам исправлений в патче.
  • Вручную копирование файлов заменяет мои изменения.

Я использую Windows (svn и TortoiseSVN).

ответ

0

Насколько я знаю, наиболее близким к этому является svn:externals; однако в нем хранится только относительный или, в данном случае, абсолютный указатель URL-адреса внешнего репозитория. Короче говоря, файлы не будут храниться в вашем репозитории, и любые попытки фиксации содержимого внешнего файла будут отправляться в сторонний репозиторий.

Я хранил проверки из других репозиториев в SVN, где я могу внести изменения из стороннего репозитория и зафиксировать эти изменения и свои собственные изменения в моем собственном репозитории (частный вилок), когда сторонние репозитории были доступны через git или mercurial. Я бы проверил сторонние репозитории в моем рабочем каталоге SVN и передал все в SVN, включая папки /.git. Этот подход, хотя, несомненно, немного взломанный, работал на меня и, если бы я правильно понял ваш вопрос, тоже работаю для вас , если один из репозиториев был не SVN.

Если это не представляется возможным получить доступ к foo с сказать, мерзавец или ртутный и нет возможности изменить систему управления версиями bar «s, я интересно, если это можно было бы установить вторую копию SVN на машине с другим среда - я думаю Cygwin - и у одной из установок хранятся файлы версий в .svn и один в _svn. Я предполагаю, что это будет работать, поскольку svn Cygwin будет отдельной установкой в ​​дереве папок Unix-подобных с собственной средой. (Я только что попробовал, и он должен работать).

шагов могут быть:

  1. Установка Cygwin с SVN и change Cygwin svn to use _svn folders (я попробовал это в Cygwin, установив переменные окружения SVN_ASP_DOT_NET_HACK, и он работал - вы должны установить переменные окружения в Баше только не Windows-уровня в противном случае черепаха будет забрать его тоже)

  2. Отъезд репозиторий третьей стороной в вашу рабочую копию, используя Cygwin svn

  3. Commit файлов сторонних репозиториев, возможно, в том числе его папку _svn в репозиторий (я бы включить его)

  4. Теперь вы можете обновить репозиторий третьей стороны с помощью Cygwin svn и зафиксировать изменения третьих лиц в репозиторий, в дополнении к возможности совершить собственные изменения в вашем собственном репозитории. Возможно, вы тоже можете внести изменения в сторонний репозиторий!

Другим вариантом на ту же тему может быть, чтобы иметь вторую учетную запись Windows, с помощью переменного окружения набора, и войти в этот счет первоначально проверить репозиторий третьей стороной и обрушить обновление от него с помощью TSVN ,

Смежные вопросы