revsets帮助提及
“x :: y”DAG范围,表示作为x后代的所有变更集 和y的祖先,包括x和y本身。如果是第一个 端点被省略,这相当于“祖先(y)”,如果 第二个被遗漏它相当于“后代(x)”。一个 替代语法是“x..y”。
“x:y”所有变更集的修订号都介于x和y之间 包括的。可以省略任一端点,它们默认为0和tip。
“x%y”作为x的祖先但不是y的祖先的变更集 (即:: x - :: y)。这是“only(x,y)”的简写符号(见 下面)。第二个参数是可选的,如果省略,则是 相当于“只有(x)”。
目前尚不清楚结果的区别。一般来说,“x%y”会返回我想要选择的内容,但我想了解其他内容。
答案 0 :(得分: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