svn:标签和修订号参考之间的差异

时间:2009-10-30 22:02:18

标签: svn tags

这是与What do you use the svn tags directory for anyways?相似但不完全相同的问题;这里有一些我想要理解的细微之处。

除了以下功能外:

  • 引用具有名称的文件树的特定状态,而不是数字
  • 通过更改特定的/subtree/tags/{tag_name}目录
  • 来修改名称 - 号码关联(但保留其历史记录)
  • 使用svn switch将您的工作副本更新为特定代码

您还可以/应该对标签做什么?

如果所有标记都是在特定的存储库修订版中拍摄特定子树根的快照,那么从技术上讲,您可以:

  • 使用/subtree/trunksubtree/branches ,不用 /subtree/tags目录
  • /subtree/trunk目录上创建属性,例如tag:Release_1.0 = 309tag:Release_1.1 = 496

并且您将拥有一个名称 - 数字映射,其中包含修订历史记录,工具程序可以读取....现在,svn工具集使用/subtree/tags/约定来处理一些事情

是否有任何理由将文件放入/subtree/tags/目录中 目录中的所有来自同一版本的主干?

4 个答案:

答案 0 :(得分:3)

  

是否有任何理由将文件放入/ subtree / tags /目录,而这些文件并非全部来自同一版本的主干?

是的,当然。

假设修订版R被标记为版本1.0,并且每个人都高兴地在行李箱上进行攻击。现在支持标识1.0中的特定错误已经在修订版(R + n)中的文件foo.cpp中修复,修复是一个独立的错误,不需要对其他文件进行任何更改。他们现在可以做的是创建一个版本1.1,它是1.0(以前是版本R)的副本,除了foo.cpp,他们使用修订版(R + n),所以他们在1.1中有这个修复。

答案 1 :(得分:1)

标签不维护名称/数字映射。存储库修订号是全局的,因此每当您更改任何文件时,无论其是否在trunk / branches / tags上,该数字都将递增。标记的值是因为你没有提交它(按照惯例;这不是由SVN强制执行的),标记的树将始终与标记它时相同,即使你得到了HEAD修订版当你拉下标签目录时。

答案 2 :(得分:0)

最初不是

我想说你正在准确理解svn是如何工作的。标签,分支和目录没有什么神奇之处。它是svn中的所有单一集成机制。

但稍后...... 调整哪个文件被哪个标记覆盖是正常的过程。想象一下发布。虽然该版本最初可能会获得单个存储库版本的标记,但关键修复,撤消功能和其他正常发布工程活动自然会导致标记根据需要向前和向后移动。

答案 3 :(得分:0)

Subversion中的标记是文件的集合。这是一个惯例,不再是。基本上,Subversion人员编写了一种制作廉价拷贝的方法,将其用于分支,然后决定不是为标签实现第二种机制,而是他们已经完全足够的东西并且重新使用这个概念对于用户来说意味着更少的东西。学习并减少工具制造者必须与之交互的东西。