【问题标题】:Merge tip from an unrelated repository with Mercurial将来自不相关存储库的提示与 Mercurial 合并
【发布时间】:2009-09-02 14:36:20
【问题描述】:

我有两个不相关的存储库“公共”和“开发”:

prj/
  public/
  develop/

'develop' 有很多提交,因为这里是我工作的地方。甚至可能有多个头 有时我想发布开发存储库的快照。

从公用文件夹我可以这样做:

>hg pull -f ../develop
>hg merge
>hg commit -m "alpha2"

但这也会将完整的变更集历史从“开发”拉到“公共”(这不是我想要的)。

我还可以从“public”中删除所有文件,“.hg”子文件夹除外。 然后手动复制'develop'目录中的所有文件并执行

>hg commit -m "alpha2"

但随后我必须“添加”新文件、“删除”过时文件并再次“重命名”移动的文件。

使用带有提交的-A 选项会盲目地添加/删除所有文件,即使它们在“开发”存储库中不受控制。

必须有更有效的方法来做到这一点;-)

【问题讨论】:

    标签: mercurial merge


    【解决方案1】:

    我建议你只是回顾一下完整的历史,但如果你因为某种原因不能忍受,那么你可以做以下任何事情:

    1. 使用ConcatenatingChangesets 将所有变更集从develop 加入到公共的单个结果变更集-或-
    2. 公开删除所有文件,在开发中创建一个“hg 存档”,然后公开展开它——这只会让您获得受控文件-或
    3. 在开发中使用“hg manifest”来驱动 xargs 以仅移动您想要的文件-或-
    4. 在开发中执行“hg diff -r last-changeset-in-public -r tip”,然后在公共中使用“hg import”应用生成的差异,您将在公开

    其中任何一个都应该做同样的事情,但它们都有点丑陋,因为一般来说,扔掉历史很难做到。

    【讨论】:

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