我有一个包含2个遥控器的Mercurial(Hg)存储库,我们称之为default
和upstream
。
我已从两个遥控器中取出并想知道哪些提交/分支来自远程调用default
,哪些提交/分支来自远程调用upstream
。我如何在Hg中实现这一目标?
理想情况下,我想使用hg log
命令,就像我使用我更熟悉的git log --describe --all
命令一样。
hg log
命令的模板是否等同于git log --describe
?
注意:我已经知道使用hg out <remote>
向我展示我感兴趣的遥控器上没有提供的提交集,但我希望能有更多视觉效果。
答案 0 :(得分:3)
如果标准HG工作流程没有发生巨大变化(在另一个扩展名remotenames中假设),则默认样式下,您可以将Remote Branches Extension添加到Mercurial
答案 1 :(得分:1)
我已从两个遥控器中取出并想知道哪些提交/分支来自远程调用
default
,哪些提交/分支来自远程调用upstream
。我如何在Hg中实现这一目标?
一般来说,你不能。 (但请参见下文和Lazy Badger's suggested extension。)
Git实际上也没做到这一点。尽管如此,你可以如你所说:
...使用git log --describe --all命令...
这并没有告诉您谁向您提交了提交。相反,它告诉你你的哪些参考是&#34;最接近&#34;到了将要描述的提交(&#34;最接近&#34;以模糊的手动方式定义)。 Mercur不会做的是,在您的存储库中创建特定的引用 - 远程跟踪名称,如remote1/branch
和remote2/branch
- 记住哪个提交由名称{分别在remote1和remote2上{1}}。
如果两个遥控器中只有一个首先具有那些提交,那么只有一个这样的引用可以是#34;最接近的&#34;。 Git会选择那个,然后你可以推断谁有提交,谁没有提交。如果两个遥控器都有提交,它会失败,或者可能会失败:你得到一个任意的引用(根据你的基本目标,这可能就足够了)。
现在,你可以做某事。具体来说,在这种情况下的问题是Mercurial的分支名称是全局的,并且提交永久地粘贴到它们所在的分支上。如果您连接到remote1并接收一些提交,它们拥有它们拥有的任何哈希ID和分支名称,并且您的Mercurial将它们存储在您的存储库中相同的哈希ID并使用相同的名称 - 现在Mercurial(如Git)会忘记源,因为那些现在是你的提交。
但是你做知道刚进入的任何提交(如果有的话)来自remote1,而不是remote2。此外,如果任何提交 进入,他们将增加本地修订ID号(branch
)。您可以在某处保存新号码甚至整个范围。 所有的那些提交在那个范围内,&#34;旧提示+ 1&#34;到#34;新提示&#34;包容性,来自remote1。
对remote2重复此操作:任何到达的新提交都来自它们。
(还有另一种选择,但它很激烈:你可以使用转换扩展来更改提交的分支名称。如果你这样做,不过,你如果你想要的那样,你必须复制,即移植或改造提交,以便稍后将它们移动到原始分支。还有其他更好的扩展,但不像转换,它们不与Mercurial一起分发。)