2015-06-26 67 views
0

我的情況是我在主幹中有很多存儲庫。 我在兩個主幹FEATURE分支中都有一個回購(repoA)。svn如何用一個存儲庫的功能分支替換主幹

我只是想將我的repoA的所有代碼從FEATURE分支複製到樹枝分支並提交。

什麼是正確的方法來做到這一點? 我可以直接複製文件夾嗎?或者我做這樣的事情:

sandbox$ svn up -r ANOTHER_BRANCH 

? 謝謝!

回答

0

svn up需要當前檢出URL,並更新它。如果是後備箱,它將成爲後備箱。

有兩個你在談論可能的事情:

  1. 你想從分支代碼替換您當前已簽出的客戶端目錄中的代碼。
  2. 你想用分支上的代碼替換服務器上的trunk。

第一個只會影響在您的機器上籤出的文件。如果其他人檢查出主幹,他們將獲得當前主幹,而不是功能分支。

第二個用特徵分支替換樹幹。現在,其他簽出代碼的人將看到功能分支上的相同代碼。

那麼,你想要做什麼?

我會假設你想改變你的系統中的代碼指向特性分支,這樣你就可以在特性分支工作:

$ svn switch $SERVER_URL/branches/another_branch 

很簡單。這將使用分支中的文件更新您的當前工​​作目錄,並將更改指向該分支的簽出URL。它也會保持你所做的改變,所以它不是一個乾淨的結帳。

如果您在出現主幹檢出並做了一些工作的情況下犯了錯誤,則會有所幫助,然後意識到您需要這些更改不是針對主幹,而是針對分支。我通常不鼓勵使用svn switch。當你有至少有250Gb空間的計算機時,沒有多少理由與多個分支和中繼共享一個工作目錄。我擔心混淆和混淆會導致忘記正在使用哪個分支或主幹,並檢查錯誤位置的更改。

即使真的很大的項目也不需要那麼長時間才能在Subversion中籤出,而且一旦你簽出了項目,你就再也不用這麼做了。簡單的更新就足夠了。所以,你不會節省太多時間或磁盤空間。

我所看到的是有人簽出$REPO_URL/trunk爲了在他們的項目$REPO_URL/trunk/foo上工作,並最終檢出了幾十個他們根本不需要的項目。

事實上,因爲我碰到了數十個項目玩水,我通常要檢查出整個主幹或分支,只是不希望所有的文件,直到我需要他們:

$ mkdir -p ~/workdir/repo_name 
$ cd ~/workdir/repo_name 
$ svn co --depth=immediates $SERVER_URL/repo_name/trunk 

這將簽出中繼線上的所有項目,但沒有任何文件。 --depth命令允許您執行稀疏結帳您可以在其中選擇您需要的蒼蠅。例如,我需要在項目foobar工作:

$ cd ~/workdir/repo_name/trunk 
$ svn up --set-depth=infinity foo bar 

我可以做同樣的事情上支foobar

$ cd ~/workdir/repo_name 
$ svn co --depth=immediates $SERVER_URL/repo_name/foobar 
$ cd foobar 
$ svn up --set-depth=infinity foo bar 

現在,我可以看看我的當前工作目錄,看看是什麼回購和分支我在,並知道我在正確的地方。唯一的問題是,自Subversion 1.7以來,如果我在需要一段時間處理的`bar中運行svn命令,我不能在foo中運行svn命令。

相關問題