2010-02-16 101 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标签保持连续性。

相关问题