2010-11-11 108 views
16

如何使用「svnsync init」(例如從#https://無論是svn://什麼)創建鏡像存儲庫時,我可以更改(重新定位)一個subversion url?如何在svnsync中更改svn url?

試圖運行svnsync的新的網址重新初始化,但

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

做您嘗試使用svnsync的與後續同步的新網址。我的直覺是它應該起作用。 – 2010-11-11 15:46:21

+0

確實嘗試再次調用svnsync初始化與新的url,但這是行不通的 - svnsync說,鏡像庫與「舊」url同步 – sdu 2010-11-11 20:59:16

回答

19

同步,從URL被存儲爲鏡回購一個版本屬性。如果與鏡庫(我的情況)的機器上,使用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到你的鏡子正在同步。在上例中,主回購網址以... /foo結尾。它最後可能沒有換行符,因此可能會出現shell提示符。現在,您需要將其轉換爲文件,因爲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的的版本屬性更改爲剛剛編輯和消毒文件的內容:

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

你應該可以看到你的新的回購網址緊接着shell提示符下,沒有換行。在上面的例子中,URL以foo結尾,緊接着shell提示符[email protected] [〜] $。

+0

我按照此步驟並嘗試時得到錯誤 svnsync sync/repo/path svnsync:Repository UUID'72fa8357-5795-f84a-b72d-10573eb4d6c2'與預期的UUID不符'a3f6904a-36ca-4011-b160-aab731c98da0' – popalka 2011-05-14 08:36:55

+2

修改文件db \ revprops \ 0 \ 0並更改svn:sync-from- uuid 屬性。現在一切都好 – popalka 2011-05-14 09:15:59

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當前配置的存儲庫網址上的本地鏡像是這樣的:

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

這意味着改變你只需要change the revision property遠程存儲庫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