Mercurial相当于git grep

时间:2014-12-12 15:01:09

标签: mercurial grep

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

3 个答案:

答案 0 :(得分:8)

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

有关详细信息,请参阅filesets documentation。简而言之,这将打印与给定正则表达式匹配的所有跟踪文件,而不是二进制文件(不包含NUL字节)。

答案 1 :(得分:1)

将此别名添加到~/.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/

答案 2 :(得分:0)

Kevins 答案的升级: 遗憾的是,hg files "set:grep(regex_goes_here) and not binary()" 只返回文件,但不允许像 git grep 那样进入找到的行。

所以我创建了一个别名。将以下行放入您的 ~/.bashrc

alias hggrep='f(){
  FILES_HG=$(hg files "set:grep(\"$1\") and not binary()")
  for file_grep in $FILES_HG; do
    grep --color -Hn "$1" "$file_grep"
  done
  unset -f f
}
f'

像这样使用:hggrep foobar