我的情況是我在主幹中有很多存儲庫。 我在兩個主幹FEATURE分支中都有一個回購(repoA)。svn如何用一個存儲庫的功能分支替換主幹
我只是想將我的repoA的所有代碼從FEATURE分支複製到樹枝分支並提交。
什麼是正確的方法來做到這一點? 我可以直接複製文件夾嗎?或者我做這樣的事情:
sandbox$ svn up -r ANOTHER_BRANCH
? 謝謝!
我的情況是我在主幹中有很多存儲庫。 我在兩個主幹FEATURE分支中都有一個回購(repoA)。svn如何用一個存儲庫的功能分支替換主幹
我只是想將我的repoA的所有代碼從FEATURE分支複製到樹枝分支並提交。
什麼是正確的方法來做到這一點? 我可以直接複製文件夾嗎?或者我做這樣的事情:
sandbox$ svn up -r ANOTHER_BRANCH
? 謝謝!
svn up
需要當前檢出URL,並更新它。如果是後備箱,它將成爲後備箱。
有兩個你在談論可能的事情:
第一個只會影響在您的機器上籤出的文件。如果其他人檢查出主幹,他們將獲得當前主幹,而不是功能分支。
第二個用特徵分支替換樹幹。現在,其他簽出代碼的人將看到功能分支上的相同代碼。
那麼,你想要做什麼?
我會假設你想改變你的系統中的代碼指向特性分支,這樣你就可以在特性分支工作:
$ 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
命令允許您執行稀疏結帳您可以在其中選擇您需要的蒼蠅。例如,我需要在項目foo
和bar
工作:
$ 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
命令。