我有一些使用git-svn作爲SVN倉庫克隆創建的git項目。我們已經將我們的SVN存儲庫遷移到新的提供商,所以URL現在已經改變。我如何更新我的git克隆的遠程SVN URL?如何使用git-svn來切換svn倉庫?
一種可能性是我從新的SVN存儲庫重新克隆,但我不想這樣做,因爲整個歷史過程可能需要幾天的時間。
提出這個問題的另一種方法是,git會在哪裏存儲關於您正在使用的遠程SVN存儲庫位置的信息?即當你輸入'git svn info'時,URL信息來自哪裏?
我有一些使用git-svn作爲SVN倉庫克隆創建的git項目。我們已經將我們的SVN存儲庫遷移到新的提供商,所以URL現在已經改變。我如何更新我的git克隆的遠程SVN URL?如何使用git-svn來切換svn倉庫?
一種可能性是我從新的SVN存儲庫重新克隆,但我不想這樣做,因爲整個歷史過程可能需要幾天的時間。
提出這個問題的另一種方法是,git會在哪裏存儲關於您正在使用的遠程SVN存儲庫位置的信息?即當你輸入'git svn info'時,URL信息來自哪裏?
我發現在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倉庫來做到這一點!)
你使用哪一個? – 2014-06-09 19:03:04
現在,該頁面上的某些鏈接已死亡。另外,如果你可以把實際的解決方案放在這裏,而不僅僅是鏈接,那將是很好的。 – GergelyPolonkai 2016-01-06 08:37:48
你可以(應該)也接受你自己的答案。 – peterh 2016-04-01 07:52:11
繼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>
這對我來說很好 – 2017-03-27 02:46:37
[混帳SVN的可能重複:什麼是等價於\'SVN開關 - 重新定位\'?](http://stackoverflow.com/questions/268736/git-svn-whats-the-equivalent-to-svn-switch-relocate) – svick 2013-05-22 18:23:44
可能重複[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