2

我在 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的问题- 比较本地和远程存储库?看起来相关,但这只是显示本地和远程状态之间的差异;我想看看远程状态和它派生出来的上游远程之间的区别。

4

3 回答 3

4

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

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

并生成补丁:

$ hg export -v -g -r "remote('.', 'default') - remote('.', 'upstream')" -o %r-%m.patch
于 2013-05-29T14:27:11.127 回答
2

Mercurial 的问题 - 比较本地和远程存储库?看起来相关,但这只是显示本地和远程状态之间的差异;我想看看远程状态和它派生出来的上游远程之间的区别。

Mercurial 不包括本地远程状态。它具有本地状态和远程状态,但没有远程上次外观的本地内存。对于 99% 的用途,你会找到hg incoming upstreamhg outgoing upstream告诉你如果你进行推或拉,你会得到什么,这是问题的一般形式。

如果您在 Mercurial 中使用书签作为分支(Mercurial 功能书签是最接近 git 分支的模拟),那么您可以添加--bookmarksincomingandoutgoing行,输出将告诉您 localfeaturebranchbookmark与 remote的不同之处featurebranchbookmark

于 2013-05-28T15:49:33.697 回答
0

hg summary --remote在表格 中提到的问题中建议 hg summary --remote -R UPSTREAM-BUNDLE

因为:

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

即您可以针对上游使用,上游数据必须以某种方式已经是本地的

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

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

PS:两个遥控器的 2 次拉动和两个头的差异可能是更快的方式

于 2013-05-28T10:38:02.590 回答