【问题标题】:Mercurial: shelving committed filesMercurial:搁置提交的文件
【发布时间】:2013-01-15 15:33:01
【问题描述】:

我有两个存储库,开发和测试。在开发中,自上次推动测试以来,我已经做出了几次提交。但是,现在我想搁置所有这些提交,进行不同的更改,将其推送到测试,然后取回这些提交。搁置仅适用于未提交的文件。

我该怎么办?以相反的顺序退出或回滚或恢复每个提交?重命名开发,将测试克隆到开发,进行更改,推送到测试,推送到重命名的开发,删除开发,重命名重命名的开发回开发?

最干净/最简单的方法是什么?

【问题讨论】:

  • 这可能看起来很奇怪,但在我们当前的设置下,我需要“dev”在构建过程的某些部分保持“dev”,因此重命名建议。

标签: mercurial tortoisehg shelve


【解决方案1】:

为了让其他读者清楚:实际的 HG shelve 命令不是这种情况的正确方法;它不适用于已经提交的更改,但在这种情况下也没有必要使用。

您可以这样做:

  1. dev 中,更新到您不想推送到 testing 的提交之前的版本。
  2. dev 中进行所需的更改并提交。这将创建一个新的头部(这也将是新的提示)。
  3. 推送到测试
  4. dev 中,将提示与包含您避免推送的更改的另一个头合并,然后提交。

原始建议(在这种情况下无法实施):

  1. 将 dev 克隆到新的 repo 并更新到提交之前的版本(或者只是克隆测试)
  2. 进行您想要的更改,提交并推送到测试和开发
  3. 丢弃克隆
  4. 将测试从测试拉到开发中,并在闲暇时合并头部,再次建立一个头部

【讨论】:

  • 这听起来不错,除了我需要在构建过程中将“dev”称为“dev”。 IE。我需要它暂时看起来好像我从未进行过这些提交,而是仅进行了今天的提交。然后,构建过程会自动将更改推送到测试。此外,如果没有任何更改,我认为它不会运行其余的构建过程。
  • 是否可以做 1. 但将 dev(而不是克隆)更新到预提交版本,然后以某种方式稍后从克隆中拉回更改?
  • @Kev:我明白了。构建服务器如何选择要构建的内容?它使用tip吗?
  • 是的,总是给小费,并使用hg statushg in 来检查是否有任何问题
  • @Kev:更新了答案。您将为新更改创建一个新头,然后与前一个头(包含您之前的提交)合并以继续工作。
【解决方案2】:

另一个工作流可能是:使用 MQ 扩展

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    相关资源
    最近更新 更多