2012-01-14 48 views
10

在我推送到远程存储库之前,我希望看到我本地存储库的头部和我所推送的存储库的头部之间的整合差异。我知道这样做的最佳方式是远程存储库hg clone,获取头部的修订版,然后在我的头部和该修订版本之间做一个差异。但这是非常耗时的。有没有快速的方法?如何查看本地资源库头和远程资源库头的差异?

+2

如果您推送的头部不是您当前版本的祖先的存储库,是不是您可能做了一件非常错误的标记? – geoffspear 2012-01-14 15:15:00

+1

远程存储库的头部是我当地负责人的祖先。我想在这个脑袋和我的当地脑袋之间找到差异。所以也许我只想要一个hg命令来打印远程仓库的头版本。然后我可以手动比较该版本。 – jhourback 2012-01-15 20:58:38

回答

11

如果您正在寻找一种方法来获取您所做的所有不在远程存储库中的更改。

$ hg outgoing -p 

-p是可选的,在补丁的形式报告,否则以同样的方式一个hg log报告。无论是否有其他人将任何内容推送到远程存储库,这只是您的更改。

如果您正在寻找在远程仓库,你没有改变,那么你使用

$ hg incoming 

同样有一个-p形式,如果你想要它。


这些都不是你所要求的,但我怀疑你实际上并不想这样做。

如果您确实想要更改与其他人创建的远程回购中的新头之间存在差异,那么您需要撤消其更改。

hg pull 
hg heads      # find revision number of new head 
hg diff -r 124992   # or whatever the revision number is. 
22

除了

$ hg outgoing -p 

我正常使用的,我会喜欢你指向revision sets。这是一种查询语言,您可以使用hg diff(以及可让您指定更改集的所有其他命令)。所以,你可以通过

$ hg log -r "outgoing()" -p 

实现hg outgoing -p,你可以得到第一个传出变更的家长和最后传出变更之间的差异与

$ hg diff -r "p1(first(outgoing()))" -r "last(outgoing())" 

最后,remotebranch extension可以维护有关本地信息远程分支,以便您不需要使用网络查找此信息。它可以让你使用

$ hg log -r "not pushed()" 

找到传出变更集,但它的速度更快,因为没有涉及网络往返。