Подтвердить что ты не робот

Как изменить svn url в svnsync?

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

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

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

Ответ 1

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] [~] $.

Ответ 2

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

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

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

Ответ 3

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