subversion (SVN)中的标签到底是什么?Subversion真正提供了哪些内置功能来有效地利用它们?
我之所以这样问,是因为我想将某个版本的文件集合标记为标签。这将使版本命名更有意义。我也想准确地检索那些带有该标签的文件,不多也不少,以便在某个版本中从这些文件中构建软件。
我相信,在ClearCase中,标签很可能是文件的属性。我得到了令人担忧的印象,标签并不是Subversion的真正特殊或核心,而是一个任意的概念,只是一个文件夹,其中包含某个版本的文件的副本,这是真的吗?如果是这样的话,它就没有ClearCase中的等价物有用了。
Subversion被宣传为将标签作为一种功能,当工具看起来并没有真正的核心概念时,为什么要说它是一种功能呢?它似乎没有在文献中被广泛地写到,至少足以帮助我解决我的问题。
发布于 2011-11-03 22:50:59
我得到了一个令人担忧的印象,标签对于Subversion来说并不是什么特别或核心的东西,相反,它们是一个任意的概念,只是一个文件夹,其中包含某个版本的文件的副本,这是真的吗?如果是这样的话,它就没有ClearCase中的等价物有用了。
这是完全正确的。分支也是如此。分支也只是一个用于创建分支的目录。
然而,仅仅因为它是这样做的并不意味着它们是无用的。标签通常用于在特定时刻拍摄存储库的快照。例如,我想做一个构建,并标记该构建中使用的文件。稍后,当我们决定发布时,我想用我的版本号来标记那些完全相同的文件。Subversion的标记方法和在ClearCase中一样好用。
事实上,Subversion中的标记比ClearCase中的标记要好得多。在ClearCase中,我首先必须创建标签类型,然后将该标签类型应用于我想要标记的每个文件的版本。如果要标记10,000个文件,可能需要20分钟左右。在Subversion中,标记是即时的。标记10,000个文件只需不到一秒钟的时间。标记100,000或1,000,000个文件不需要更多时间。
在Subversion中,您只需列出tags目录的内容,即可获得所有标记的列表。这样做会给出一个实际标签的列表。在ClearCase中,您只能执行一个lstype -type lbtype,它为您提供标签类型,但这并不意味着这些标签中的任何一个实际上都在任何文件上。
在Subversion中,标记和分支通常具有不同的名称空间。在ClearCase中,它们共享相同的名称空间,因此您通常需要做一些工作来区分标签和标签。标准是标签是大写的,标签是小写的。
在Subversion中,您还可以看到何时以及由谁应用了标记。在Subversion中,标记和分支具有不同的名称空间。而且,因为标记仅仅是目录,所以可以用于标记的灵活性是无限的:
tags目录,还有一个用于obsolete_tags的特殊目录。如果不再需要某个标签,可以将其移动到废弃目录中。这意味着在标签目录中列出标签只列出相关的标签。然而,开发人员仍然可以看到过时的标签。ClearCase标签的最大优点是可以锁定ClearCase标签类型,因此如果标签类型的所有者没有解锁标签类型,则无法移动或应用这些标签类型。然而,Subversion中有许多预提交钩子脚本可以做或多或少相同的事情。我有一个允许你创建一个标签,但不能修改它。
其他钩子脚本走得更远。Subversion文件和目录可以设置属性。我见过允许创建该标记的人在目录上放置"lock- tag“属性的钩子,以防止其被修改。"lock- tag“属性允许修改标签。这允许Subversion标记模拟ClearCase中的行为。
在Subversion中,分支和标记对开发人员非常可见,并且比ClearCase中的相应部分更容易应用和使用。许多其他版本控制系统已经模仿了Subversion对标记和分支所做的工作,因为它使整个系统比ClearCase、CVS和旧版本控制系统中的旧系统更明显,在旧版本控制系统中,标记和分支仅仅是附加在单个文件上的属性。
发布于 2011-11-03 22:33:01
您说得对,标签对于Subversion来说并不是什么特别的东西,只是对于开发人员或在脚本中,它们可以被以某种特殊的方式处理。
实际上,我在这里看到的Subversion here的特性是分支和标记是廉价的(恒定时间)操作。作为硬链接的复制操作意味着这不是本身的标签功能。来自here
Subversion没有用于分支或标记的特殊命令,而是使用所谓的“廉价副本”。廉价副本类似于Unix中的硬链接,这意味着不是在存储库中创建完整副本,而是创建指向特定树/修订的内部链接。因此,分支和标记的创建速度非常快,并且几乎不占用存储库中的额外空间。
发布于 2011-11-03 22:39:50
subversion (SVN)中的标签到底是什么?
特定位置下某个修订版(RO,按照约定)上的存储库副本
以及Subversion真正提供了哪些内置功能来高效地使用它们?
没有什么特别的-标签(只是在任何VCS中)只是一些存储库快照的标签,带有永久且易于使用的名称
我想将某个版本的文件集合标记为标记。这将使版本命名更有意义。我也想准确地检索那些带有该标签的文件,不多也不少,以便在某个版本中从这些文件中构建软件。
好吧,它的标签是
对于Subversion来说,
标签并不是什么特别或核心的东西,而是一个任意的概念,只是一个文件夹,其中包含某个版本的文件的副本,这是真的吗?
可以,作为svn-repo的分支机构和所有其他physical部分
Subversion被宣传为将标签作为一个功能,当它看起来并不是该工具的核心概念时,那么为什么说它是一个功能呢?
“廉价拷贝”,适用于标签和分支,是功能。当您必须分支|标记多to存储库时,易于识别
https://stackoverflow.com/questions/7996211
复制相似问题