2010-11-11 1 views
16

Как изменить (переместить) URL-адрес subversion, который я ввел при создании зеркального репозитория, используя «svnsync init» (пример из #https: // независимо от svn: // независимо)?Как изменить svn url в svnsync?

пытался запустить svnsync INIT снова с новым URL, но

svnsync init file:///<path_to_mirror> http:///<new_url> 
svnsync: Destination repository is already synchronizing from 'http:///<old_url>' 
+0

сделал вы попробуйте использовать svnsync с новым URL для последующей синхронизации х. Я чувствую, что это должно сработать. –

+0

попытался снова вызвать svnsync init с новым URL-адресом, но это не сработает - svnsync говорит, что зеркальный репозиторий синхронизирован со «старым» url – sdu

ответ

19

синхронизации: от URL хранится как revprop в зеркале репо. Если на машине с репозиторием зеркалом (моя ситуация), используйте svnlook инструмент для поиска и svnadmin изменить:

[email protected][~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url 
svn+ssh://svn.abc.com:1234/svn/[email protected][~]$ 

Вы увидите URL РЭПО, к которому ваше зеркало в настоящее время синхронизации , В приведенном выше примере основной URL-адрес репо заканчивается с ... /foo. У него может не быть новой строки в конце, поэтому может появиться приглашение вашей оболочки. Теперь вам нужно получить это в файл, так как svnadmin использует файл для ввода для изменения revprops.

[email protected][~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url > t.txt 
[email protected][~]$ 

Теперь редактировать t.txt изменить URL в основной репозиторий. Это может привести к появлению новой строки в конце t.txt и привести к сообщениям о непонятном/бессмысленном сообщении от svnsync. Так что избавиться от него:

[email protected][~]$ cat t.txt | tr -d '\n' > t2.txt 

Обратите внимание, что мы теперь имеем t2.txt который является продезинфицировать файл. Затем используйте svnadmin изменить revprop на содержание только что отредактированный и продезинфицировать файла:

[email protected][~]$ svnadmin setrevprop /path/to/mirror/repo -r0 svn:sync-from-url t2.txt 
[email protected][~]$ 

Примечание используется, что t2.txt не t.txt. Наконец, проверьте ваши изменения:

[email protected][~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url 
svn+ssh://svn.def.com:5678/svn/[email protected][~]$ 

Вы должны увидеть свой новый URL репо сразу после этого в командной строке, без перевода строки. В приведенном выше примере URL-адрес заканчивается на foo и сразу же следует приглашение оболочки [email protected] [~] $.

+0

Я выполнил следующие шаги и получил ошибку при попытке svnsync sync/repo/path svnsync: Репозиторий UUID '72fa8357-5795-f84a-b72d-10573eb4d6c2' не соответствует ожидаемому UUID 'a3f6904a-36ca-4011-b160-aab731c98da0' – popalka

+2

изменить файл db \ revprops \ 0 \ 0 и сменить svn: sync-from- uuid Недвижимость. теперь все нормально – popalka

13

Если вы используете учетную запись, используемый для запуска svnsync с вы можете просто использовать:

svn propset --revprop -r 0 svn:sync-from-url http://my.new/url url://to.my.repo 

Если вы следовали инструкциям в руководстве, и добавили предварительно Р-реквизит крюка, который отрицает всех, кроме svnsync пользователь должен изменить реверс rev, это должно сработать.

0

Svnsync хранит URL удаленного репозитория в свойствах ревизии первой ревизии зеркала репозитория. Таким образом, вы можете view текущей конфигурации хранилища URL на локальном зеркале, как это:

$ svn pg --revprop -r0 svn:sync-from-url file:///path/to/svn-mirror 

Это означает, что для изменения URL удаленного репозитория вы просто должны change the revision property.Например:

$ svn ps --revprop -r0 svn:sync-from-url https://svn.example.org/repo \ 
     file:///path/to/svn-mirror/ 

Пример вывода:

property 'svn:sync-from-url' set on repository revision 0 

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

  • Нет связанных вопросов^_^