svn - 颠覆(SVN)中的标签实际上是什么? SVN 内置了哪些标签工具? (与 Clearca

Subversion (SVN) 中的标签到底是什么? Subversion 真正提供了哪些内置功能来有效地使用它们?

我问是因为我想将某个版本的文件集合标记为标签。这将使发布命名更有意义。我还想准确地检索带有该标签的那些文件,不多也不少,以便在某个版本中从这些文件构建软件。

在 ClearCase 中,标签可能是文件的属性,我相信。我有一个令人担忧的印象,即标签实际上并不是 Subversion 的任何特殊或核心,而是一个任意概念,只是一个文件夹,其中包含某个修订版的文件副本,这是真的吗?如果是这样,它就没有 ClearCase 中的等价物那么有用了。

Subversion 被宣传为将标签作为一项功能,而实际上该工具似乎并没有真正的概念核心,那么为什么说它是一项功能呢?它似乎没有在文献中被广泛描述,至少足以帮助我解决我的问题。

最佳答案

I get the worrying impression that tags aren't really anything special or core to Subversion, but instead they are an arbitrary concept, just a folder with a copy of the files at a certain revision, is this true? If so, it's not so much useful as the equivalent in, say, ClearCase.

这是绝对正确的。而且,分支机构也是如此。分支也只是一个用于创建分支的目录。

但是,仅仅因为这样做并不意味着它们毫无用处。标签通常用于在特定时间及时拍摄存储库的快照。例如,我想进行一次构建,并标记该构建中使用的文件。稍后,当我们决定发布时,我想用我的发布号标记那些完全相同的文件。 Subversion 的标记方法与在 ClearCase 中一样有效。

事实上,Subversion 中的标记比 ClearCase 中的标记要好很多。在 ClearCase 中,我首先必须创建标签类型,然后将该标签类型应用于我要标记的每个文件的版本。如果您要标记 10,000 个文件,则可能需要 20 分钟左右的时间。在 Subversion 中,标记是即时的。标记 10,000 个文件只需不到一秒钟。标记 100,000 或 1,000,000 个文件不需要更多时间。

在 Subversion 中,您只需列出 tags 目录的内容即可获得所有标签的列表。这样做会给你一个实际标签的列表。在 ClearCase 中,您只能执行 lstype -type lbtype 来为您提供标签类型,但这并不一定意味着任何这些标签实际上都在任何文件上。

在 Subversion 中,标签和分支通常有不同的 namespace 。在 ClearCase 中,它们共享相同的 namespace ,因此您通常必须做一些事情来区分标记和标签。标准是标签大写,标签小写。

在 Subversion 中,您还可以查看应用标签的时间和应用者。在 Subversion 中,标签和分支有不同的命名空间。而且,因为标签只是目录,所以您可以无限灵活地使用标签:

  • 一些网站有一个tags 目录,以及一个用于obsolete_tags 的特殊目录。如果不再需要标签,可以将其移至过时目录。这意味着在标签目录中列出标签只列出相关标签。但是,开发人员仍然可以看到过时的标签。
  • 一些网站使用不同的目录来放置构建标签和发布标签。这样,如果您试图查看所有各种发布标签的列表,您就不会看到数以千计的构建标签。
  • 有些网站针对不同的客户或版本类型有不同的目录。这样,您就可以讨论 Acme 的 3.4 版本与 Vegco 的 3.4 版本。

ClearCase 标签的一大优势是可以锁定 ClearCase 标签类型,因此如果标签类型的所有者不解锁标签类型,就无法移动或应用它们。然而,Subversion 中有许多预提交钩子(Hook)脚本,它们或多或少可以做同样的事情。我有一个允许您创建标签但不能修改它的标签。

其他钩子(Hook)脚本走得更远。 Subversion 文件和目录可以设置属性。我见过允许创建该标记的人在目录上放置一个“锁定标记”属性以防止它被修改的钩子(Hook)。删除“lock-tag”属性允许修改标签。这允许 Subversion 标签模仿 ClearCase 中的行为。

在 Subversion 中,分支和标记对开发人员来说非常明显,并且比 ClearCase 中的对应部分更容易应用和使用。许多其他版本控制系统已经效仿 Subversion 对标签和分支所做的工作,因为它使整个系统比 ClearCase、CVS 和旧版本控制系统中的旧系统更可见,其中标签和分支只是附加在单个文件上的属性.

关于svn - 颠覆(SVN)中的标签实际上是什么? SVN 内置了哪些标签工具? (与 Clearcase 相比),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7996211/

相关文章:

oracle - PLS-00103 : Encountered the symbol "EXCEP

visual-c++ - 为什么没有定义 PCTSTR 但定义了 LPCTSTR?

sql - LAST_VALUE() 行在无限制的前面和无限制的后面之间

vim - 在vim中,如何查看我当前所在的#ifdef宏?

visual-c++ - 错误 C2664 : 'sprintf' : cannot convert

ruby-on-rails - 根据当前语言环境在 Rails 中显示小时格式(上午/下午或下午)

php - php preg匹配中的 "*"和 "?"有什么区别?

objective-c - Xcode - 将 CGRect 转换为 ID?

sql - 如何从 SQL Server 获取数据库列表?

django - 在管理员中对 list_editable 字段进行自定义验证