有什么区别:和::和%的mercurial revsets运算符

时间:2018-01-24 07:16:00

标签: mercurial mercurial-revsets

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”会返回我想要选择的内容,但我想了解其他内容。

1 个答案:

答案 0 :(得分:0)

这些陈述之间的差异确实可能很微妙,有一个"介于"之间。和"范围"

例如,订购线性修订1到5(在一个新的虚拟仓库中) 然后注意1:5 5:1 1::5 5::1

之间的区别

5:11: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

的空输出