【问题标题】:How can I mark a group of changes/changesets in SVN, Hg, or Git如何在 SVN、Hg 或 Git 中标记一组更改/变更集
【发布时间】:2010-05-23 23:42:43
【问题描述】:

我想用标签标记任意一组提交/变更集。

  • 提交 1 *标记 1
  • 提交 2 *标记 2
  • 提交 3
  • 提交 4 *标记 1
  • 提交 5 *标记 2

目标是轻松定位特定标记的所有更改,并将该分组直接保留在 VCS 中,而不是像错误跟踪系统这样的外部系统。

标记的位置和顺序需要是任意的,并且应该能够处理已提交/未提交和已推送/未推送的更改。

在 SVN 中,我知道的最好方法是编辑提交注释并添加一些特殊文本,您可以搜索例如“**标记 1”。或者只是进行虚假编辑并提交它,并使用其提交说明列出所有包含的修订。

SVN 有更好的解决方案吗? Hg 或 Git 是否有同等或更好的解决方案?

【问题讨论】:

    标签: svn git version-control mercurial


    【解决方案1】:

    Git 没有特殊的元数据,除了提交注释和日期,或标签。

    所以你有三个选择:

    这两个选项不适用于已推送的提交。

    第三个选择是将数据与这些提交相关联,就像一张票一样。请参阅 ticgit,例如将工单错误跟踪集成到您的 git 存储库。

    【讨论】:

    • ticgit 看起来很有趣,谢谢。我喜欢使用分支来存储对变更集的引用的伪变更的想法。
    【解决方案2】:

    在 mercurial 中你会使用标签:

    hg tag -r REVISIONNUMBER "MARK 1"
    

    在您提到的所有三个系统中,您将无法注释“未提交的......更改”。

    听起来如果您完全理解 git 或 mercurial 中的分支选项,您可能会放弃“注释组”的概念,这就是分支的作用。

    http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/

    【讨论】:

    • +1 用于从帖子中提取“注释组”的想法。
    • 您的回答显得居高临下,但我认为并非如此。未提交的更改意味着能够向已标记的现有组添加新更改。对于我的要求,分支是不合适的解决方案,除非您更改问题(您已更改),否则 afaik mercurial 或任何标签都不符合问题的目标。
    • 我向您保证,居高临下不是目标,但“未提交”在版本控制领域具有非常具体的含义,我仍然不清楚您的意思。建议我改变你的问题是荒谬的;我只是在您的每个项目符号列表项目之前添加了一个空格字符,所以它会是一个项目符号列表。
    • 我的意思不是从字面上改变我的问题——我的意思是比喻——可能是在你回答的第一条评论的上下文中。无论如何,感谢您花时间回答问题。感谢您的帮助。
    【解决方案3】:

    对于 SVN,您可以使用“SVN 属性”或提交日志消息。 Check out this answer to a similar problemfeature request thread。 如果您使用修订属性,要查找具有特定值的修订,您需要遍历所有修订,这在您的情况下可能是关于性能的问题 如果你使用提交日志,你可以使用 svn log 并解析输出。

    Ref: svn book Properties section

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      • 1970-01-01
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      • 2011-01-29
      相关资源
      最近更新 更多