问题 Mercurial相当于git grep


有没有相当于 git grep 在Mercurial?也就是说,仅在工作副本中搜索文本,在Mercurial跟踪的文件中。 (hg grep 搜索存储库历史记录。)


5111
2017-12-12 15:01


起源

grep -r 是我所知道的最接近的(或类似的 ack 等等。)。 - Etan Reisner
是的,不幸的是,它包含了Mercurial未跟踪的所有文件(这就是它的作用 git grep 方便)。 - Matt R
ack 避免 .hg 文件,但是。您可以从中获取跟踪文件列表 hg 把那些传递给 grep 明确地(假设你没有太多)。 - Etan Reisner


答案:


hg files "set:grep(regex_goes_here) and not binary()"

看到 文件集文档 了解更多信息。简而言之,这将打印与给定正则表达式匹配的所有跟踪文件,而不是二进制文件(不包含NUL字节)。


8
2017-12-12 15:56



这是否需要最小版本的Mercurial或特定扩展名?我无法得到 hg files 在v2.6.3上工作(unknown command 'files') - Matt R
@马特: 耸 它的 记录下来工作,所以我认为它是最新的稳定版本...... - Kevin
@Matt:我已经确定你可以使用了 hg locate 在旧版本的hg下以同样的方式。 - Kevin
Mercurial 3.2是必需的。该 WhatsNew页面 说:“文件:添加新命令统一定位和清单功能”。 - sschuberth


添加此别名到 ~/.hgrc

[alias]
grepcwd = ! $HG grep -r 'reverse(::.)' "$1" .

然后用 hg grepcwd foobar 你会用同样的方式 git grep foobar

原始来源: http://www.emilsit.net/blog/archives/git-is-more-usable-than-mercurial/


1
2018-04-26 16:08