2013-02-21 95 views
3

我對切換的概念感到困惑(使用烏龜svn)。我們是一個由3名開發人員組成的團隊,我在這裏是Dev2。烏龜svn的混淆 - 切換

首先,我嘗試使用以下步驟切換(可以說,目前正在對軀幹和希望開始在分行V1.0工作)

  1. 右鍵單擊/branches/v1.0
  2. 選擇TortoiseSVN的 - 開關
  3. 到路徑:/branches/v1.0
    • 頭修訂(檢查)
    • 開關深度:工作拷貝

請讓我知道如果我在上面做錯了什麼?

不過,在那之後我跳過了開關,然後我們的工作給了我們以下的輸出:

  1. 所有的開發者在樹幹工作,然後發展爲超過
  2. 創建一個標籤,V1.0
  3. 在標籤v1.0中發現bug,因此從標籤v1.0創建分支v1.0
  4. 需要新的功能以及Dev1(開發人員1)繼續工作在Dev2和Dev3正在分支v1.0工作的主幹
  5. DEV2分支V1.0編寫的代碼並提交
  6. DEV3獲得分支更新(有DEV1的更新),然後在分支V1.0編寫的代碼並提交
  7. DEV1獲得分支更新(有DEV2的更新和DEV3)
  8. DEV2和DEV3得到DEV1樹幹更新(更新了)

所有工作正常,沒有那麼開關是什麼開關的概念?

另外,如果我在交換機中在trunk中有未提交的文件會發生什麼?

回答

2

svn switch應該只是更新您的本地簽出以指向服務器上的新位置。例如如果有人在存儲庫中移動了文件夾。

任何未提交的文件都應該沒事 - 交換機只是對本地文件系統的更改。切換後,當您查看差異或類似時,它將指向新的存儲庫。

2

想象一下,如果你在幹樹幹工作,並突然意識到你應該一直在分支2.3的工作。你可以結帳分支2.3,但你會失去所有的工作。你可以嘗試複製它,但這可能需要很長時間。

轉換允許你轉換你的本地副本的基礎,而不會失去你的任何工作。您修改的文件仍將包含您的修改。您添加的文件仍將被添加。您刪除的文件仍將被刪除。

$ svn co $REPO/trunk/proj1 
[...work...work...work...] #Whoops! Should have been on Release 2.3 branch! 
# svn switch $REPO/branches/2.3/proj1 
[...work...work...work...] #Everything is fine and dandy! 

有些人使用開關切換他們的工作副本,而無需做另一個結賬。例如,我完成了我的工作proj1,現在我在Release 2.3分支上有一些工作。我只需切換到該分支並節省時間,因爲我不必重新下載所有內容。另外,我節省了空間!

我高度不鼓勵這種想法,因爲您可能很容易混淆您的工作目錄代表什麼。我已經看到了一些複雜的提示來提取分支信息並在提示中顯示它。但是,我在我的項目和分支(或主幹)之後命名我的結帳,併爲每個項目使用單獨的工作目錄。

速度不應該是一個問題。花費五到十分鐘的時間來完成一個非常大的Subversion項目 - 只需要足夠的時間來喝一杯咖啡。在這個千兆字節磁盤大小的時代,也不應該佔用太多的空間。使用svn switch不應該是一種常見現象。

一次,如果託管存儲庫的服務器發生更改,您有時會切換。但是,現在有一個特殊的svn relocate命令只是用於這一目的:

$ svn co svn://repo/proj1 # We were using svnserve 
$ svn relocate svn://repo http://repo/svn #Now we're using Apache https 
$ svn relocate http://repo/svn/proj1  #Alternative to the above. 
+0

TortoiseSVN的醫生說是'之開關可以代替'checkout'的但只是似乎很奇怪我。我們在這裏做的是在分支機構/標籤/幹線級別結帳。如果我需要添加實驗性功能,我從trunk創建一個分支,然後在分支文件夾中執行「更新」並處理那些文件。是的,我正在創建所有文件的重複副本,但空間很便宜,我從不會對我的工作副本指向的位置感到困惑。除了殺死更多的數據之外,你是否發現這樣做的缺點?我沒有看到它明確提倡,所以我想知道。 – SiegeX 2014-10-24 22:46:38

+0

我像你一樣爲每個分支使用單獨的工作目錄。當我們擁有10Mb磁盤並且空間很高時,我可以看到很多使用開關。然而,當一臺PC擁有125Gb的空間時,被認爲是小型的,擁有多個工作目錄並不是問題。即使是最大的項目也很少佔用超過10Mb的空間。可能發生的問題是二進制文件可能相當大。我們有一個產生約10千兆字節編譯代碼的項目。在這種情況下,清理編譯好的代碼。 – 2014-10-27 21:03:51