[英]Subversion branching when trunk/branches buried in subtree
我的任務是按照以下方式組織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
目錄。 然后,我使用以下命令創建了一個中繼分支: $ svn copy svn+ssh://xxx@yyy.zzz/REPO_ROOT/DDD/software/trunk svn+ssh://xxx@yyy.zzz/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.
svn: E195012: Path '.' does not share common version control ancestry with the requested switch location.
如何切換到分支? (我第一次這樣做是因為我做錯了。)
問題來自分支的創建方式。 我首先創建了錯誤目錄,然后進行了svn復制。 這會導致將中繼目錄復制到錯誤修復中,而不僅僅是復制其內容,從而導致^/DDD/software/branches/error-fixing/trunk/<files>
而不是^/DDD/software/branches/error-fixing/<files>
。 在這里發現了細微的差別。 這就是干線和錯誤修復沒有共同祖先的原因,內容是不同的。
一旦我刪除了svn的錯誤修復並在未事先創建錯誤修復的情況下進行了svn復制,則svn開關可以正常工作。
在服務器上創建分支時,您剛剛將中繼的內容復制到了分支。
實際上,當您切換時,合並是在后台進行的,而不僅僅是某種指針。 由於分支是新分支,因此它沒有歷史記錄,因為未對它進行任何提交。
如果我沒記錯的話,您需要在本地檢出分支,進行修改,然后提交,然后切換到分支(在提交創建了歷史記錄之后)。
為了進行快速測試,請檢出,進行一些小的修改,然后提交並切換。 嚴厲,我不建議經常切換,尤其是分支! 您應該將分支合並到中繼中,測試中繼,然后創建標簽並在標簽上切換服務器,而不要在分支上切換服務器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.