当此名称包含短划线时,为什么mercurial会报告不完整的标记名称?

时间:2014-08-20 09:50:10

标签: mercurial

我注意到Mercurial没有报告完整标记的名称,它是作为update命令的参数给出的,如果标记不存在且名称中包含破折号。这有什么合理的理由吗?

$ hg init test_repo && cd test_repo && hg up 'some-tag-with-dashes'
abort: unknown revision 'some'!

Mercurial版本2.9.2

我在https://bz.mercurial-scm.org/show_bug.cgi?id=4339

提出了这个问题

2 个答案:

答案 0 :(得分:1)

这实际上有点古怪。发生了什么是第一个hg将您的字符串查找为标记,然后是分支名称,然后将其解析为revset。 revset解析得很好,但随后它会查找一个名为&#34的标签;有些"所以它可以对它进行设置算术,然后以这种方式失败。

我们应该可以做得更好,并且我会根据自己的想法更新提交给我的bug

答案 1 :(得分:0)

我刚检查过,似乎只有在some-tag-with-dashes 不存在时才会出现错误。错误消息可以明显改进,但它按预期工作:

$ hg init
$ touch file; hg add file; hg commit -m "add file"

$ hg tag some-tag-with-dashes
$ hg up some-tag-with-dashes
0 files updated, 0 files merged, 1 files removed, 0 files unresolved

$ hg up some-other-tag-with-dashes
abort: unknown revision 'some'!

执行hg tags时是否会显示您的代码:

$ hg tags 
tip                                1:00acd65cf970
some-tag-with-dashes               0:8a895a220fa5