【问题标题】:Tagging in Subversion - how do I make the decision about continuing to work on my trunk vs. the new tag?在 Subversion 中添加标签 - 我如何决定继续使用我的主干还是使用新标签?
【发布时间】:2011-02-22 04:29:46
【问题描述】:

我正在运行 Tortoise SVN 来管理一个项目。显然,关于标记的原则适用于 SVN 的任何实现,但在这个问题中,我将参考一些 TortoiseSVN 特定的对话框和消息。


我的工作目录和 subversion 存储库结构都有一个 Source 根目录和下面的 Trunk、Tags 和 Branches 目录。 (我不知道如何在不使用项目符号的情况下在 Markdown 中进行多级缩进层次结构,所以如果有人可以编辑和修复这个问题,我将不胜感激。)

我正在处理我的工作副本中的 Trunk 目录,它指向 repo 中的 Trunk 目录。我想应用标签“Release1”,所以我单击“Branch/tag...”菜单选项并将 repo 路径设置为我的 [repo_path/bla/Source/Tags/Release1”标签。此对话框为我提供了选项到“将我的工作副本切换到新的分支/标签”。

我了解如果未选中此选项,将在 /Tags 下创建新的“Release1”分支,但我的工作副本将保留在以前的“主干”路径上。如果我选​​中此选项(或使用Switch 命令)我知道我的工作副本将切换到“/Tags”下的新“Release1”分支。

我缺少一个概念的地方是如何做出这个决定。我似乎不想将我的工作目录切换到最近创建的标签,因为根据定义(?)我希望该标签成为我的代码在某个时间点的快照。如果我不切换工作目录,我将继续在 Trunk 上工作,当我准备好拍摄另一个快照时,我会制作另一个标签。等等……

我是否理解这一点,或者我在上一段中是否有错误地陈述了某些内容(例如,关于不想切换到标签的声明,因为该标签应该代表一个时间点快照)或以其他方式遗漏了有关如何进行此操作的内容决定?

【问题讨论】:

    标签: svn tortoisesvn tags svn-trunk


    【解决方案1】:

    在 Subversion 中,标签不是您放在修订版上的“标签”;它是某个时间点的主干(或分支或其他)的副本。作为一个复制的目录,你可以提交给它;但你不应该

    一旦你做了一个标签,你应该留在原来的地方(分支或主干)并在那里工作,不要切换到标签目录。如果你提交到一个标签目录,你会改变它的内容,然后它就不再作为一个“快照”有用了。

    当你创建一个分支时,通常你会想要切换到它,但是在创建分支之后你可能想留在主干中(例如,如果你碰巧注意到有一个尽快在主干中做的修复);这是你的决定。您以后随时可以切换。创建标签时,无需做出太多决定。留在你所在的分支。我想不出切换到标签会有任何用处的任何情况......

    【讨论】:

    • @Nicholas - 但是 SVN 的“标签”实现是通过标签实现的,对吗?实现标签的方式是将当前目录的任何内容复制到新的标签目录。但是鉴于此,我假设标记 is 是我实现我想要的时间点快照的正确方法,对吗?最后,如果(至少其中一个)目标是拍摄快照,在什么情况下有人想要切换到新创建的标签目录?
    • SVN 没有我所知道的“标签”概念,不知道你在说什么。 // 是的,标记是执行时间点快照的正确方法。 // 我不知道为什么有人会想要切换到新创建的标签,但如果你这样做了,请不要提交(技术上可能,通常不受欢迎)。不过,在创建标签很久之后切换到标签是很常见的,以获取该快照的代码(通常是版本化版本)。
    • 明白了,所以基本上我一直在用 Trunk 工作。同意?关于 SVN 没有标签概念,我认为我们在说同样的话。其他源代码管理工具中所谓的“标签”在 SVN 中称为标签。实现方式不同,但用于达到相同的效果。
    【解决方案2】:

    在 Subversion 中,技术上没有“分支”或“标签”之类的东西。对于 SVN,它们只是目录的副本。它们之所以特别,只是因为对待它们的方式。

    标签 = 复制项目,但复制后不要触摸它。您通常不想切换到标签,因为您(通常)不会在那里提交任何更改。

    分支 = 复制一个项目,并在那里做一些工作。通常,您在分支中所做的工作会在某个时候与主干合并。如果您要立即创建一个分支,您可能希望切换到该分支(选中该框)。

    注意 #1: 虽然 SVN 本身对主干/分支/标签没有任何特殊处理,但 TortoiseSVN 确实有一个 UI 提示来阻止提交标签。如果你签出一个标签(或制作一个标签并切换到它),做一些工作,然后尝试提交,TSVN 将显示一条警告消息。 TSVN 试图猜测你真正想要做什么。

    注意 #2: 时间点快照不一定需要标签。存储库的修订号会为您完成。

    【讨论】:

      【解决方案3】:

      让我们更简单:

      推荐的创建项目结构的方法:

      • svnRoot/projectName/trunk(实际开发线)
      • svnRoot/projectName/tags/Release_X.X.X(将标签视为标签,但它们只是副本)
      • svnRoot/projectName/branches/Release_X.X.X(可更新的副本,一个分支一个子项目)

      永远不要提交标签(你可以,但你不应该)。

      如果你需要在不破坏别人工作的情况下开发一些东西,创建一个分支,然后将你的分支与主干合并,但要小心:)

      【讨论】:

      • 如果你刚开始大家都说强烈推荐试试 GIT!
      猜你喜欢
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 2013-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多