Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Mercurial需要与服务器对话,以列出传出(非推送)提交?_Mercurial_Dvcs - Fatal编程技术网

为什么Mercurial需要与服务器对话,以列出传出(非推送)提交?

为什么Mercurial需要与服务器对话,以列出传出(非推送)提交?,mercurial,dvcs,Mercurial,Dvcs,当我键入hg outgoing时,会得到如下响应: comparing with ssh://server:1234/path/to/repo 以及通过网络进行通信时的延迟 为什么需要这种网络流量?Mercurial是否有一些基本的功能,这意味着它无法记住哪些提交已被推送,哪些未被推送 是否有其他命令可以提供类似的信息,而无需通过网络进行通信?mercurial存储库可能会与多个其他存储库连接。因此,我想它需要确保没有从您的存储库中推送的更改没有从另一个存储库中到达。由于Mercurial是一

当我键入
hg outgoing
时,会得到如下响应:

comparing with ssh://server:1234/path/to/repo
以及通过网络进行通信时的延迟

为什么需要这种网络流量?Mercurial是否有一些基本的功能,这意味着它无法记住哪些提交已被推送,哪些未被推送


是否有其他命令可以提供类似的信息,而无需通过网络进行通信?

mercurial存储库可能会与多个其他存储库连接。因此,我想它需要确保没有从您的存储库中推送的更改没有从另一个存储库中到达。

由于Mercurial是一个分布式系统,您的更改可以通过多种方式从本地repo传输到远程repo

例如:

  • 有人可以从您那里提取更改,然后将这些更改推送到远程回购
  • 实际上,你可以使用任何你拥有的操作系统复制你的本地回购协议,Mercurial完全不会意识到这一点。然后,您可以将此副本中的更改推送到远程回购
但是,如果您有Mercurial 2.1或更高版本,您可以使用
hg-phase
来确定推送了哪些变更集。假设您没有使用
hg-phase
更改任何变更集的状态,则阶段为
draft
secret
的变更集未被推送,而阶段为
public
的变更集已被推送。使用

$ hg log -r "not public()"
查看未发布的变更集

它不会抓住我上面给出的两个例子,但是如果您只想知道哪些变更集没有被推动,它可能就足够了


查看或查看
hg help phases
,了解如何使用阶段的说明。

如果不询问远程存储库,它不可能知道哪些变更集位于哪个远程存储库中。如果您将更改从本地repo拉到另一个repo,然后从该repo推送到您的服务器,该怎么办?