2013-05-21 159 views
5

背景:DynDNS現在開始需要每月登錄一次以保持其免費帳戶的活躍(以前只需每月更新一次您的IP地址)。我相信遲早我會忘記這樣做,失去我的賬戶。如何將svn網址重定向到其他網域?

我使用mysvn.dyndns.org訪問我的服務器上的Subversion版本庫,它可以(現在)也可以通過svn.mydomain.com聯繫到。不幸的是,大多數項目還提到了也位於mysvn.dyndns.org的外部項目,我並不想完成所有項目(> 100)並更改外部項目,因爲這可能需要幾個小時,而且很容易出錯。

有什麼辦法可以配置Windows或Subversion/TortoiseSVN客戶端將一個域重定向到另一個域?

如:

https://mysvn.dyndns.org/svn/blablub

應該被重定向到

https://svn.mydomain.com/svn/blablub

我知道我可以添加一個條目到主機重定向到一個IP地址,但我寧願重定向到域名。

+0

什麼版本的svn客戶端和服務器? – explunit

+0

這並不回答你的具體問題,但我可以建議一種替代方法嗎?假設你使用的svn 1.5或更高版本支持[外部相對URL](http://svnbook.red-bean.com/en/1.7/svn.advanced.externals.html),按照其中一種方法[這裏](http://stackoverflow.com/questions/204616/how-to-migrate-all-urls-in-svnexternals-properties-across-a-repository)將所有外部變爲相對將解決更基本的問題。 – explunit

+0

@explunit:這是一個有趣的方法。不幸的是,它不適用於所有的項目,因爲它們並不都與外部存儲在同一個存儲庫中。但大多數是。請添加此答案作爲答案,即使它不回答我提到的問題,也可能獲得賞金。 – dummzeuch

回答

0

顯然沒有解決方案像我想的那樣容易。我最終編寫了一個基於版本洞察源代碼的小型Delphi程序,它將簽出的所有項目的外部變成指定目錄的子目錄並提交這些更改。然後我使用svn relocate命令來重新定位項目本身。

@rem calls svn relocate for all directories 
@echo off 

for /d %%i in (*) do call :HandleDir %%i 
pause 
goto :eof 

:HandleDir 
echo *** handling dir %1 

svn relocate --ignore-externals https://mysvn.dyndns.org/svn/ https://svn.mydomain.com/svn/ %1 
goto :eof 
5

你(真的)詢問2個相關的問題:

  • 我也可以把somename.domain.comanothername.somedomain.com
  • SVN客戶端可以使用舊名稱,但與新主機intecat嗎?

而簡短的回答將是

  • 沒有

更長的版本

對於舊主機重定向到你,可以使用至少兩個新變化(具有相同的最終結果)

  • 在DNS級別和CNAME記錄,該記錄將別名新名稱新:

somename.domain.com. IN CNAME anothername.somedomain.com

上somename的要求將數據回答anothername

  • 在Apache的配置主機的位置somename你可以添加重定向到別名Apache的

:它只能在瀏覽器的層面上工作 - 當你嘗試使用此重定向的位置爲目標對任何Subversion的命令,你會得到錯誤「庫移動,請重新定位」,你必須移居所有舊資源都添加到新網址中。

所有外部定義好消息被寫成源回購中的svn的屬性,你可以得到這些外部組件列表(值)和更新使用新值,而這個操作(理論上)可以在工作副本獲得的外部

svn propset svn:externals --target FILE在批次定義新的外部的根目錄中自動

svn propget -R svn:externals . > FILE

+0

因此,1我需要訪問域名爲dyndns.org的DNS?還是我誤解了一些東西? – dummzeuch

+0

@dummzeuch - 不,您必須有權訪問區域'mydomain.com',以便添加到域名RRs'svn IN CNAME mysvn.dyndns.org'中,但是在它之後閱讀p.2 - 它不會解決問題訪問svn客戶端 –

1

我可以建議一個ALTERNA te的方法?

假設您使用svn 1.5或更高版本,其中supports relative URLs用於外部,在this question之後的其中一種方法將所有外部版本更改爲相對版本將解決更基本的問題。

如果它們不是全部相對URL,則可以使用類似的腳本將它們從server1更改爲server2。這在服務器遷移過程中經常進行。假設你保持良好狀態backups,這可能會讓你一次性解決所有的痛苦,而不是推遲一段時間。

相關問題