【问题标题】:Mercurial revision/revset for unpushed changesets未推送变更集的 Mercurial 修订/修订
【发布时间】:2013-06-05 17:30:04
【问题描述】:

为包含未推送的变更集的 -r 选项指定修订/修订集的最佳方法是什么,这很有用,例如在本地克隆或在仅包含已推送的变更集的存储库中创建书签。

当您需要在工作中转而从事其他尚未准备好推进的事情时,通常需要这样做。

【问题讨论】:

    标签: mercurial


    【解决方案1】:

    有一些修订集可用于获取此信息:

    1. first(outgoing()) 将引用尚未推送到默认推送位置的第一个变更集。

    2. first(!public()) 将引用尚未推送到任何地方的第一个变更集。

    如果您想更新到这些变更集的父级以为您的新修复启动一个新的匿名分支,您可能希望将这些与 p1([set]) 谓词结合使用。

    此外,在开始修复工作之前,您可能希望将未完成工作的变更集的阶段设置为secret,以防止它们被意外推送。

    您可以使用hg phase --secret --force -r "!public()" 执行此操作,然后使用hg phase --draft -r "secret()" 将它们再次切换回来(尽管这会将所有秘密变更集更改为草稿,因此如果您使用,则需要更具体其他分支上的阶段)

    【讨论】:

      【解决方案2】:

      如果你想要revset(s),你必须使用outgoing([path])(或! outgoing([path])作为变更集规范。

      [path] 是存储库的 URL(或别名???),如果不是默认值

      【讨论】:

        【解决方案3】:

        如果我理解正确,您想要 git stash 的等价物,这是作为 mercurial 的扩展实现的。

        查看维基页面。 https://www.mercurial-scm.org/wiki/ShelveExtension

        编辑:我不得不提一下,我不使用这个工作流程,在你的情况下,我会创建一个“dev”分支并定期提交(甚至是 WIP 提交),当稳定时你可以合并到 master。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-30
          相关资源
          最近更新 更多