Как изменить URL-адрес SVN в SVNSync? - PullRequest
18 голосов
/ 11 ноября 2010

Как я могу изменить (переместить) URL-адрес subversion, который я ввел при создании зеркального хранилища с помощью "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>'

Ответы [ 3 ]

21 голосов
/ 30 ноября 2010

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

user@q.r[~]$ 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.

user@q.r[~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url > t.txt

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

user@q.r[~]$ cat t.txt | tr -d '\n' > t2.txt

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

user@q.r[~]$ svnadmin setrevprop /path/to/mirror/repo -r0 svn:sync-from-url t2.txt

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

user@q.r[~]$ svnlook pg --revprop -r0 /path/to/mirror/repo svn:sync-from-url
svn+ssh://svn.def.com:5678/svn/foo

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

14 голосов
/ 16 июня 2011

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

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

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

0 голосов
/ 28 июля 2017

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
...