- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Mercurial/TortoiseHg 中,给出以下示例,将修订版“G” merge 到存储库 A 而不采用 D、E 和 F 的最简单方法是什么(假设 G 不依赖于 D、E 或 F)。
Repo A: A - B - C
Repo B (Clone of A) A - B - C - D - E - F - G
补丁是最好的选择吗?
最佳答案
汤法是对的。您所描述的不是“merge ”(或“推”或“拉”);而是“merge ”(或“推”或“拉”)。这是“ cherry-pick ”。推或拉将所有变更集从一个存储库移动到另一个存储库中尚未存在的变更集。 “merge ”需要两个“头”,并将它们 merge 为一个新的变更集,该变更集是两者的组合。
如果您确实需要将 G 移过去,但又无法忍受那里有 D、E、F,您应该从存储库 A 中“hg 导出”G,然后在存储库 A 中“hg 导入”它。Transplant extension是导出/导入的包装器,具有一些细节,有助于避免多次移动相同的变更集。
但是,一般使用导入/导出、移植和 cherry-pick 的缺点是,如果没有其祖先,您就无法真正移动 G,因为在 Mercurial 中,变更集的 name 是它的“hashid”,其中包括其父代的 hashids。不同的父级(G 的新父级将是 C 而不是 F)意味着不同的 hashid,因此它不再是 G —— 它是 G 的工作,但名称上是一个新的变更集。
将 G 作为新的东西,让我们称之为 G'(Gee prime),对于某些用途来说并不是什么大问题,但对于其他用途来说它是一个大皮塔饼。当仓库 B 很快得到一个新的变更集 H 时,您想要将其移动到其父变更集上,该变更集将从 G 更改为 G',它们具有不同的哈希值。这意味着 H 将作为 H' 移动——接下来有 100 个变更集,所有内容都会有不同的哈希值,因为你无法忍受存储库 A 中存在 D、E、F。
如果/当您想将内容从存储库 A 移动到存储库 B(与之前移动的方向相反)时,事情会变得更加困惑。如果您尝试从 A 到 B 进行简单的“hg Push”,您将得到 G'(和 H' 以及后续后代),这将是您在存储库 B 中已有的变更集的重复项。
那么,你有什么选择?
hg update C
。如果 G 不依赖或不需要变更集 D、E 和 F,那么它不应该是他们的 child 。如果您首先更新到 C,您将得到如下图:
A - B - C - D - E - F
\
G
那么,这个问题的完整答案就是 hg push -r G ../repoA
并且 G 会干净地移动,保持相同的 hashid,而 D、E 和 F 不会不要随它去。
更新:
正如评论中所指出的。对于现代 Mercurials,hgraft
命令是实现此目的的完美方法。
关于mercurial - 如何在 Mercurial 中挑选单个版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1670076/
我即将将主干中的某些修订合并到发布分支中。我用 mergeinfo 检查了有多少修订符合合并条件,结果是 42。尽管检查每个修订日志并决定是否应该合并它绝对是可能的并且不太难。然后,我将使用 Tort
我有 5 个文件夹,每个文件夹包含大小为 10KB、500KB、1MB、5MB 和 30MB 的“n”个文件。现在我需要从这些文件夹中选择正好 15000 个文件并将它们放入一个新文件夹中,这样我就可
嗨,我已经成功解析了一个以公里为单位的距离的 XML 文件。但结果我得到了源距离列表,但列表中的最后一个元素包含列表中所有其他元素的总和。如何获取列表中的最后元素 一些源代码: for(int s=0
我正在尝试修剪它,它存储在一个名为 $line 的变量中。 [2012-06-18 10:37:09,026 (there is a lot of text after this, i just cu
我正在使用 Python Selenium 绑定(bind)并测试网络服务器。我试图断言文本“回归”和“回归测试”的存在。有谁知道如何做吗?这是我在检查我感兴趣的元素时看到的内容: Regressi
我是一名优秀的程序员,十分优秀!