如何比较远程存储库的状态?

时间:2013-05-28 09:00:13

标签: mercurial

我在BitBucket上有一个repo:

$ hg paths
default = https://bitbucket.org/mine/project
upstream = https://bitbucket.org/theirs/project

现在我想比较我的回购的(本地)状态和它的上游。使用git我只写git diff --stat upstream/master origin/master但hg似乎不接受远程分支名称作为参数:

$ hg diff --stat upstream/default default/default
default/default: No such file or directory
upstream/default: No such file or directory

我猜我可能会将其指定为revset,但我无法正确使用语法而无法找到任何示例。

问题Mercurial - compare local and remote repositories?似乎有关,但只显示了本地和远程状态之间的差异;我想看看远程状态和分叉的上游远程之间的区别。

3 个答案:

答案 0 :(得分:3)

找到了一种使用revsets的方法,虽然它仍然感觉过于复杂:

$ hg diff -r "remote('.', 'upstream') - remote('.', 'default')" 

并生成补丁:

$ hg export -v -g -r "remote('.', 'default') - remote('.', 'upstream')" -o %r-%m.patch

答案 1 :(得分:2)

  

问题Mercurial - 比较本地和远程存储库?   看似相关,但这只是显示本地和。之间的差异   远程状态;我想看看远程状态和   分叉的上游遥控器。

Mercurial不包含本地远程状态。它具有本地状态和远程状态,但不具有远程最后看起来像的本地内存。对于99%的用途,您会发现hg incoming upstreamhg outgoing upstream会告诉您如果进行推送或拉动会得到什么,这是问题的一般形式。

如果您在Mercurial中使用书签作为分支(Mercurial功能书签最接近于git分支的模拟),那么您可以将--bookmarks添加到incomingoutgoing行输出将告诉您本地featurebranchbookmark与远程featurebranchbookmark的区别。

答案 2 :(得分:0)

hg summary --remote形式提及问题hg summary --remote -R UPSTREAM-BUNDLE中的建议?

由于:

  

使用--remote选项,这将检查传入和传出更改的默认路径

即你可以使用上游,上游数据必须已经在某种程度上是本地的

  

-R - 存储库REPO存储库根目录或覆盖包文件的名称

你可以使用bundle欺骗命令(hg incoming ... --bundle的结果)而不是存储库

PS :从两个遥控器和两个头部的两个头部拉动可以更快的方式