簡體   English   中英

如何使用版本控制標簽?

[英]How do I use version control tags?

我開發了一種宣傳冊網站模板,我的大多數客戶網站都以此為基礎。 模板和派生站點一起存儲在 Subversion 存儲庫中。 前沿(但穩定)代碼位於/trunk 每個網站都有自己的分支,使定制更容易。 現在我即將發布 2.0 版本,我覺得我需要接受標簽。

據我了解,應該標記重要的版本。 標簽只是一個指向特定版本的指針,永遠不應該被修改。 所以假設我的模板有一個 2.0 版的標簽,並且主干中已經有新代碼。 如果我想創建一個基於 2.0 代碼的新分支,我該怎么做 go 呢?

我是否分支/tags/2.0 這不可能。 我將在哪里提交我的更改? 我不得不故意繞開我的分支的祖先。 我是否必須手動查找/tags/2.0對應的主干修訂,然后在主干中分支該修訂? 這似乎……很麻煩。 我相信直到最近 Subversion 甚至都沒有存儲這些信息!

顯然,我缺少一些基本的東西。 快速了解標簽的實際使用方式(而不是它們用途)會有所幫助。 謝謝。

編輯:在我說“分支/tags/2.0 ”的地方,我的意思是“簽出/tags/2.0 ”。 但那個錯誤也是我問題的答案。 出於某種原因,我從未想過復制標簽。 愚蠢,對吧? 但在我看來,標簽是“最終的”。

順便說一句,我完全明白標簽只是一種約定。 我感到困惑的是約定本身,而不是它的底層實現。

始終從主干創建分支,除非您想從過去的某個點(過去的標簽、分支或舊主干修訂)進行分支。
此外,您不能輕易地將任何內容提交到標簽上; 至少 TortoiseSVN 客戶端會通過消息保護您。

我將前沿(但穩定)放入/trunk。 當一個版本的功能完成后,我將 /trunk 復制到 /branches/Foobar-1.2.3.X。 我立即將 /branches/Foobar-1.2.3.X 復制到 /tags/Foobar-1.2.3.0 (這使以后的差異更容易,我可以將 /branches/Foobar-1.2.3.X 差異到 /tags/Foobar-1.2。 3.0 看看我的分支發生了什么變化,因為到那時 /trunk 可能會有所不同)。 最終開發繼續在 /branches/Foobar-1.2.3.X 中的功能進行,當我發布版本時,我復制到 /tags/Foobar-1.2.3.1、/tags/Foobar-1.2.3.2 等。我的構建系統是旨在僅從 /tags/Foobar-???? 中提取代碼。

這也適用於“特殊”分支:/branches/Foobar-WhizzBangFeature-1.2.X

是的,使用svn copy在存儲庫的/branch文件夾中為您要分支的版本創建一個分支。

例如:

/branch
/tags
  /1.0
  /2.0
/trunk

然后對於 2.0 上的分支:

/branch
  /something2.0
/tags
  /1.0
  /2.0
/trunk

您在 /branches(或存儲分支的任何位置)下制作標簽目錄的副本(使用 'svn copy'),可能使用 2.0-hotfix 或類似於分支名稱的名稱(與標簽名稱不同)。

它很簡單。 SVN 並沒有真正的標簽和分支,只有目錄和文件。 這完全取決於您的政策。

可能更自然的方法是先創建 2.0 分支,穩定分支中的代碼,然后從分支創建標簽。

我假設您使用的是 Tortoise SVN。 假設您有以下情況:

/trunk
/braches
   /branch1
   /branch2
/tags
   /1.0
   /2.0

那么你需要做的就是:

  • 打開烏龜回購瀏覽器
  • go 到根目錄並展開內容,這樣你就可以看到你在做什么
  • select /tag/2.0 文件夾
  • 按住 Ctrl 鍵將其復制到 /branches 文件夾
  • 重命名新文件夾(或不重命名)

就是這樣。 然后,您需要查看 /branches/tag/2.0 (或您所稱的任何名稱)來處理它。

您需要做的是始終將 SVN 視為簡單的文件系統。 您在該文件系統中賦予事物的名稱和含義取決於您。 例如,您不能編輯“標簽”這一事實只是一種約定——底層文件系統並不關心您是否編輯它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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