Как изменить URL-адрес svn в svnsync?

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

попытался снова запустить svnsync init с новым URL-адресом, но

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

person sdu    schedule 11.11.2010    source источник
comment
Вы пытались использовать svnsync с новым URL-адресом для последующей синхронизации. Мое внутреннее ощущение, что это должно сработать.   -  person Version Control Buddy    schedule 11.11.2010
comment
пытался снова вызвать svnsync init с новым URL-адресом, но это не работает - svnsync говорит, что зеркальный репозиторий синхронизирован со старым URL-адресом   -  person sdu    schedule 11.11.2010


Ответы (3)


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/foo

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

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

Теперь отредактируйте 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

Обратите внимание, что используется 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/foo

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

person Bob Denny    schedule 29.11.2010
comment
Я выполнил следующие шаги и получил сообщение об ошибке при попытке svnsync sync /repo/path svnsync: UUID репозитория «72fa8357-5795-f84a-b72d-10573eb4d6c2» не соответствует ожидаемому UUID «a3f6904a-36ca-4011-b160-aab731c98da0» - person qwazer; 14.05.2011
comment
измените файл db\revprops\0\0 и измените свойство svn:sync-from-uuid. теперь все в порядке - person qwazer; 14.05.2011

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

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

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

person 8DH    schedule 16.06.2011

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

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

Это означает, что для изменения URL-адреса удаленного репозитория вам просто нужно изменить свойство ревизии. Например:

$ 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
person maxschlepzig    schedule 28.07.2017