2015-09-04 56 views
1

主幹/分支我一直在負責工作的組織爲SVN倉庫分支如下:顛覆時埋在樹

REPO_ROOT 
    |-AAA 
    |-BBB 
    |-DDD 
     |-D1 
     |-D2 
     |-software 
      |-branches 
      |-tags 
      |-trunk 
    |-YYY 
    |-ZZZ 

我在^/DDD/software/trunk工作居多。現在我想創建一個分支來在^/DDD/software/branches/error-fixing處做一些錯誤修正。

首先我創建並提交了不存在的^/DDD/software/branches/error-fixing目錄。然後我使用以下命令創建了一個trunk分支:$ svn copy svn+ssh://[email protected]/REPO_ROOT/DDD/software/trunk svn+ssh://[email protected]/REPO_ROOT/DDD/software/branches/error-fixing -m "Branching from trunk to error-fixing"

現在我需要切換到正確的分支。我在trunk裏面,使用命令$ svn switch "^/DDD/software/branches/error-fixing" .,但是這樣做失敗svn: E195012: Path '.' does not share common version control ancestry with the requested switch location.

如何切換到分支? (第一次我這樣做,所以我可能做錯了什麼。)

回答

2

問題來自分支的創建方式。我第一次創建了錯誤目錄,然後做了svn副本。這會導致將主幹目錄複製到錯誤修復中,而不僅僅是其內容,導致^/DDD/software/branches/error-fixing/trunk/<files>而不是^/DDD/software/branches/error-fixing/<files>。發現了關於微妙差異here。這就是爲什麼幹線和錯誤修復不具有共同的祖先,其內容不同。

一旦我svn刪除錯誤修復,並做了svn複製沒有事先創建錯誤修復,svn開關工作正常。

1

當您在服務器上創建分支時,您剛剛將樹幹的內容複製到分支。

實際上,當你切換時,在後臺進行合併,它不僅僅是某種指針。由於分支是新的,因此沒有歷史記錄,因爲沒有提交。

如果我沒有弄錯,你需要在本地簽出分支,進行修改,然後提交然後切換到分支(在提交創建歷史記錄之後)。

對於快速測試,結帳,做了一個小的修改,提交然後切換。堅強,我不建議經常切換,特別是分支機構!您應該將分支合併到主幹中,測試主幹,然後創建標記並在標記上切換服務器,而不是在分支上。

+0

我發現問題出在哪裏,不過謝謝你! (在回答中公佈了更正。) – Daniel