2011-05-12 78 views
19

我有一些使用git-svn作爲SVN倉庫克隆創建的git項目。我們已經將我們的SVN存儲庫遷移到新的提供商,所以URL現在已經改變。我如何更新我的git克隆的遠程SVN URL?如何使用git-svn來切換svn倉庫?

一種可能性是我從新的SVN存儲庫重新克隆,但我不想這樣做,因爲整個歷史過程可能需要幾天的時間。

提出這個問題的另一種方法是,git會在哪裏存儲關於您正在使用的遠程SVN存儲庫位置的信息?即當你輸入'git svn info'時,URL信息來自哪裏?

+3

[混帳SVN的可能重複:什麼是等價於\'SVN開關 - 重新定位\'?](http://stackoverflow.com/questions/268736/git-svn-whats-the-equivalent-to-svn-switch-relocate) – svick 2013-05-22 18:23:44

+0

可能重複[git-svn:相當於\ 'svn開關--relocate \'?](https://stackoverflow.com/questions/268736/git-svn-whats-the-equivalent-to-svn-switch-relocate) – Fritz 2017-07-10 14:48:58

回答

21

我發現在GIT維基頁面,回答正是我的問題:

https://git.wiki.kernel.org/index.php/GitSvnSwitch

  • 編輯在的.git/config中的SVN-遠程URL網址指向新域名
  • 運行git svn fetch - 這需要從svn獲取至少一個新版本!
  • 變化SVN-遠程URL回到原來的URL
  • 運行混帳SVN變基-l做局部底墊(與排在與上次讀取操作的變化)
  • 變化SVN-遠程URL回新的url
  • 運行git svn rebase現在應該可以再次運行!

這隻會工作,如果git svn fetch步驟實際上取回 任何東西! (我花了一段時間發現......我不得不把在虛擬 修訂我們的SVN倉庫來做到這一點!)

+0

你使用哪一個? – 2014-06-09 19:03:04

+1

現在,該頁面上的某些鏈接已死亡。另外,如果你可以把實際的解決方案放在這裏,而不僅僅是鏈接,那將是很好的。 – GergelyPolonkai 2016-01-06 08:37:48

+0

你可以(應該)也接受你自己的答案。 – peterh 2016-04-01 07:52:11

5

same url [1],但有一個更新的解決方案,它變得更加容易。

裏面.git/config,在[svn-remote]部分,設置rewriteRoot URL,並設置url網址:

[svn-remote "svn"] 
    url   = https://new.svn-server.net/svn/root 
    rewriteRoot = https://old.svn-server.net/svn/root 

同樣可以通過可靠地完成git config ...指南:

$ git config --local --replace-all svn-remote.<name>.rewriteRoot `git config --local --get svn-remote.<name>.url` 
$ git config --local --replace-all svn-remote.<name>.url <new_url> 

然後,它只是工作,對我來說,即使沒有新的服務器修訂版本,我也不必做任何虛擬修訂。有趣的是,git svn info報告同樣的舊的URL,但新的URL爲存儲庫根:

$ git svn info 
Path: . 
URL: <old-url> 
Repository Root: <new-url> 

[1] https://git.wiki.kernel.org/index.php/GitSvnSwitch

+0

這對我來說很好 – 2017-03-27 02:46:37