Mercurial (Hg) 可以告诉我分支或提交的远程位置吗?
Can Mercurial (Hg) show me what remote a branch or a commit is from?
我有一个带有 2 个遥控器的 Mercurial (Hg) 存储库,我们称它们为 default
和 upstream
。
我已经从两个遥控器中拉出,想知道哪个 commits/branches 来自名为 default
的遥控器,哪个 commits/branches 来自名为 upstream
的遥控器。我如何在 Hg 中实现这一点?
理想情况下,我想像使用我更熟悉的 git log --describe --all
命令一样使用 hg log
命令。
hg log
命令是否有一个模板等同于git log --describe
?
注意:我已经知道使用 hg out <remote>
向我展示哪些提交集在我感兴趣的遥控器上不可用,但我希望得到一些东西更直观一些。
I have pulled from both remotes and would like to know which commits/branches came from the remote called default
and which commits/branches came from the remote called upstream
. How do I achieve this in Hg?
一般来说,你不能。 (但见下文,和。)
Git 实际上也没有这样做。尽管如此,你可以,正如你所说:
... use the git log --describe --all command ...
这不会告诉您谁向您提交了提交。相反,它会告诉您 您的哪些引用 是 "closest" 到要描述的提交("closest" 以模糊的 handwave-y 方式定义)。 Git 所做的,而 Mercurial 没有,是在您的存储库中创建特定的引用——远程跟踪名称,如 remote1/branch
和 remote2/branch
——记住哪个提交是由分别在 remote1 和 remote2 上命名 branch
。
前提是两个遥控器中的一个 有 那些首先提交,只有一个这样的引用可以是 "closest"。 Git 将选择那个,您可以从中推断出谁有提交,谁没有。如果两个遥控器都有提交,它会失败,或者可能会失败:你得到一个任意引用(根据你的基本目标,这可能就足够了)。
现在,您可以做某事。具体来说,这种情况下的问题是 Mercurial 的分支名称是全局的,并且提交永久地粘附到它们所在的分支。如果您连接到 remote1 并收到一些提交,它们将具有它们所拥有的任何哈希 ID 和分支名称,并且您的 Mercurial 将它们存储在您的存储库中,使用相同的哈希 ID 并使用相同的名称——现在是 Mercurial(例如 Git ) 忘记了来源,因为那些现在是 你的 提交。
但是您确实知道刚刚进来的任何提交(如果有的话)都来自remote1,而不是remote2。此外,如果有任何提交 did 进来,它们将增加本地修订 ID 号 (-r -n tip
)。您可以在某处保存该新数字,甚至整个跨度。 该范围内的所有 提交,"old tip + 1" 到 "new tip" 都来自 remote1。
对 remote2 重复此操作:到达的任何新提交都来自它们。
(还有另一种选择,但它很激进:您可以使用 Convert 扩展来 更改 提交的分支名称。但是,如果您这样做,你被那些在另一个分支上的提交所困:你必须复制,即嫁接或变基,提交,以便稍后将它们移动到它们的原始分支,如果你愿意的话。有额外的,更好的扩展,但是与 Convert 不同,它们不随 Mercurial 一起分发。)
标准 HG 工作流程没有巨大变化(假设在另一个扩展中,remotenames), in default style, you can add Remote Branches Extension 到你的 Mercurial
我有一个带有 2 个遥控器的 Mercurial (Hg) 存储库,我们称它们为 default
和 upstream
。
我已经从两个遥控器中拉出,想知道哪个 commits/branches 来自名为 default
的遥控器,哪个 commits/branches 来自名为 upstream
的遥控器。我如何在 Hg 中实现这一点?
理想情况下,我想像使用我更熟悉的 git log --describe --all
命令一样使用 hg log
命令。
hg log
命令是否有一个模板等同于git log --describe
?
注意:我已经知道使用 hg out <remote>
向我展示哪些提交集在我感兴趣的遥控器上不可用,但我希望得到一些东西更直观一些。
I have pulled from both remotes and would like to know which commits/branches came from the remote called
default
and which commits/branches came from the remote calledupstream
. How do I achieve this in Hg?
一般来说,你不能。 (但见下文,和
Git 实际上也没有这样做。尽管如此,你可以,正如你所说:
... use the git log --describe --all command ...
这不会告诉您谁向您提交了提交。相反,它会告诉您 您的哪些引用 是 "closest" 到要描述的提交("closest" 以模糊的 handwave-y 方式定义)。 Git 所做的,而 Mercurial 没有,是在您的存储库中创建特定的引用——远程跟踪名称,如 remote1/branch
和 remote2/branch
——记住哪个提交是由分别在 remote1 和 remote2 上命名 branch
。
前提是两个遥控器中的一个 有 那些首先提交,只有一个这样的引用可以是 "closest"。 Git 将选择那个,您可以从中推断出谁有提交,谁没有。如果两个遥控器都有提交,它会失败,或者可能会失败:你得到一个任意引用(根据你的基本目标,这可能就足够了)。
现在,您可以做某事。具体来说,这种情况下的问题是 Mercurial 的分支名称是全局的,并且提交永久地粘附到它们所在的分支。如果您连接到 remote1 并收到一些提交,它们将具有它们所拥有的任何哈希 ID 和分支名称,并且您的 Mercurial 将它们存储在您的存储库中,使用相同的哈希 ID 并使用相同的名称——现在是 Mercurial(例如 Git ) 忘记了来源,因为那些现在是 你的 提交。
但是您确实知道刚刚进来的任何提交(如果有的话)都来自remote1,而不是remote2。此外,如果有任何提交 did 进来,它们将增加本地修订 ID 号 (-r -n tip
)。您可以在某处保存该新数字,甚至整个跨度。 该范围内的所有 提交,"old tip + 1" 到 "new tip" 都来自 remote1。
对 remote2 重复此操作:到达的任何新提交都来自它们。
(还有另一种选择,但它很激进:您可以使用 Convert 扩展来 更改 提交的分支名称。但是,如果您这样做,你被那些在另一个分支上的提交所困:你必须复制,即嫁接或变基,提交,以便稍后将它们移动到它们的原始分支,如果你愿意的话。有额外的,更好的扩展,但是与 Convert 不同,它们不随 Mercurial 一起分发。)
标准 HG 工作流程没有巨大变化(假设在另一个扩展中,remotenames), in default style, you can add Remote Branches Extension 到你的 Mercurial