簡體   English   中英

當樹干/分支掩埋在子樹中時,Subversion分支

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM