4

revsets 帮助提及

"x::y" DAG 范围,表示作为 x 的后代和 y 的祖先的所有变更集,包括 x 和 y 本身。如果省略了第一个端点,则相当于“ancestors(y)”,如果省略了第二个端点,则相当于“descendants(x)”。另一种语法是“x..y”。

"x:y" 修订号在 x 和 y 之间的所有变更集,包括两者。任何一个端点都可以省略,它们默认为 0 和小费。

"x % y" 作为 x 的祖先但不是 y 的祖先的变更集(即 ::x - ::y)。这是“only(x, y)”的简写符号(见下文)。第二个参数是可选的,如果省略,则等效于“only(x)”。

尚不清楚结果有何不同。一般来说,“x % y”返回我想选择的,但我想了解其他人。

4

1 回答 1

0

陈述之间的差异确实可能很微妙,存在“之间”和“范围”

例如,订购了线性修订 1 到 5(在新的虚拟仓库中),然后注意两者之间的区别1:5 5:1 1::5 5::1

5:1给出相同的1:5,两者之间的一切,不管哪个先

OTHO 根本不5::1给出任何修订,因为它们的顺序是颠倒的,所以祖先/后代都没有,而1::5 在这个例子中将给出相同的1:5

$ hg init tmptrial
$ cd tmptrial
$ echo 0 > file.txt
$ hg add file.txt
$ hg commit -m 'r0'
$ for i in {1..5} ; do echo $i > file.txt ; hg commit -m r$i ; done
$ hg log -r 1::5 --template "{desc}\n"
$ for range in 1::5 5::1 1:5 5:1 ; do echo -- $range -- ; hg log -r $range --template "{desc}\n" ; done

运行上面的例子并注意空输出5::1

于 2018-01-25T09:34:41.457 回答