2010-02-16 90 views
1

在我的Subversion版本庫中,我有標準/trunk,/branches/tags文件夾和一個標籤,比如/tags/tag1Subversion(和TortoiseSVN):是否可以直接從現有標籤創建標籤?

是否有可能籤/tags/tag1,使一些地方的變化,然後直接提交作爲另一個標籤,說/tags/tag2?我可以在不碰樹幹或任何分支的情況下做到這一點嗎?

另外,如果這通常可以使用顛覆,可以用TortoiseSVN來完成嗎?

編輯:

如果可以使用TortoiseSVN來完成,我認爲它可以通過命令行來完成。我需要使用哪些命令?

+0

看來,我的編輯答案在http://svnbook.red-bean.com/en/1.4/svn-book.html#svn.branchmerge.tags.mkcomplex – user200783 2010-02-16 11:30:06

+0

給出對於未來的讀者:在svn創建分支或標籤時沒有區別。作爲「文件夾」分支機構,標籤,中繼線都是相同的。所以從樹幹到分支的所有操作都將從標籤到分支標籤。這就是爲什麼你最好花一點時間開始一個關於如何建立你的開發樹(樹幹,分支,標籤是常用做法,但並不總是最好的方法)的svn項目。 – Manwe 2012-02-18 10:14:14

回答

3

是的,您可以這樣做:簽出標籤,然後從工作副本中選擇分支/標籤,然後在「創建存儲庫中的副本:」部分中選擇「工作副本」,然後在「 「字段輸入新標籤的網址。

但是,爲什麼你想這樣做呢?通常,標籤是代碼庫狀態的「只讀」快照,不應該被修改。

+0

爲什麼?我想對現有標籤下的代碼進行小小更改,然後使用(新)標籤來引用我更改的代碼。對於一個小小的改動,我覺得從標籤創建一個分支,進行更改然後標記分支過於複雜。 – user200783 2010-02-16 10:52:46

+0

順便說一句,我同意不應該修改標籤 - 這就是爲什麼我想將我的更改作爲新標籤提交,而不是在tags/tag1下重新提交。 – user200783 2010-02-16 10:53:27

+0

通常,您從分支或中繼線標記代碼庫,因此,爲了做出這些小改動,您需要修改幹線或分支的工作副本,並從中創建標記。但是,當然沒有一種「正確的方式」去做這件事,所以你的選擇是完全可以接受的。 – 2010-02-16 11:15:42

0

您可以創建從/tags/tag1/tags/tag2的分支。您可以在不觸摸樹幹或任何現有分支的情況下執行此操作。

我們把這個hotfix分支稱爲分支,因爲/trunk已經開始了,但是/tags/release-1.0中有些東西需要修復。所以我們將從/tags/release-1.0分支到/tags/release-1.0.1。我們將修復並提交給該標記。

0

Subversion基本上把所有的東西當作一個目錄結構來處理 - 標籤只是恰好在'標籤'目錄內的結構中的另一個文件夾。

因此,在技術上你可以檢查出tags目錄,一個標籤文件夾複製到一個新的文件夾,svn add新的文件夾,並提交 - 這將從根本上創建基於關閉舊文件的新標籤。然而,你不會得到舊標籤和新標籤之間的鏈接(哪一種是有道理的 - 標籤不應該與任何東西相關聯,它們只是快照)。

如果您想要更好的修訂版本,更好的方案是將舊標籤複製到分支中;進行更改,提交分支,然後將分支複製回新標籤。這將更準確地保存更改的歷史記錄。

1

從TortoiseSVN可以做到這一點。 轉到您在Windows資源管理器中本地修改的標記的位置。從TortoiseSVN上下文菜單中選擇「分支/標籤」。 現在選擇TO url到'svn:// server/project/tag2'之類的東西。 接下來,對於'從存儲庫創建副本',選擇'工作副本'選項

0

那麼您可以從標籤創建標籤,但如前所述標籤是「只讀」快照,所以更好1創建一個Trunc從早期的標籤中說出標籤1的「Update to Revision」,並給出Tag1的特定rev no,然後對Trunc進行更改並且無需trunc的svn update/commit簡單地從trunc中分支一個標籤並選擇工作副本並製作新標籤。不要忘記在練習結束時切換Trunc,以便與svn標籤保持連續性。

相關問題