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

Gra*_*and 9 mercurial dvcs

当我打字时hg outgoing,我收到这样的回复:

comparing with ssh://server:1234/path/to/repo
Run Code Online (Sandbox Code Playgroud)

和通过网络通信时的延迟.

为什么这种网络流量是必要的?Mercurial是否有一些基本的东西,这意味着它无法记住哪些提交被推送,哪些没有?

是否有替代命令可以在不通过网络进行通信的情况下为我提供类似的信息?

Ste*_*aye 14

由于Mercurial是一个分布式系统,因此您可以通过多种方式将更改从本地存储库转移到远程存储库.

例如:

  • 有人可以从您那里提取更改,然后将这些更改推送到远程仓库
  • 你实际上可以使用你拥有的任何操作系统复制你的本地仓库,Mercurial完全没有意识到这一点.然后,您可以将此副本中的更改推送到远程仓库.

但是,如果您有Mercurial 2.1或更高版本,则可以使用它hg phase来确定已推送的更改集.假设您不使用hg phase更改任何变更集的状态,则表示具有draftsecret未被推送的变更集以及具有相位的变更集public.使用

$ hg log -r "not public()"
Run Code Online (Sandbox Code Playgroud)

查看未发布的变更集.

它不会抓住我上面给出的两个例子,但如果你只是想知道你没有推动哪些变更集,它可能会很好.

查看此处或查看hg help phases有关如何使用阶段的说明.