1

有没有办法可以为 git/Mercurial 命令发送两种选择?

我想在 git 存储库和 Mercurial 存储库的历史记录中搜索特定的单词,比如“commit”。但是,我不确定它是如何写在提交消息“commit”或“com-mit”中的?所以,我想用命令发送这些选项。我知道如果我想搜索,我会输入:

在 git 中:

git log --grep="commit"

在水银中:

hg log --keyword commit

有什么帮助吗?

4

1 回答 1

4

使用 Mercurial 最灵活的方法是使用 revsets。对于您的示例:

hg log -r 'grep("\\b(com-mit|commit)\\b")'

在 Python 正则表达式语法中,\b表示单词边界,反斜杠需要转义。该(a|b)语法用于匹配一个或另一个。参数周围的单引号在那里,因此 shell 不会解释元字符本身。

您还可以通过将 revset 与 结合使用来简化正则表达式and

hg log -r 'grep("\\bcom-mit\\b") or grep("\\bcommit\\b")'

如果您不需要完全匹配单词(例如,如果您也想匹配“committer”和“committed”,而不仅仅是“commit”),您可以使用关键字 revsets:

hg log -r 'keyword("com-mit") or keyword("commit")'

通过使用andinstead of or,您可以找到匹配两者而不是其中之一的修订;此外,您可以使用reverse(...)以相反的顺序列出匹配项,例如:

hg log -r 'reverse(keyword("com-mit") or keyword("commit"))'
于 2015-08-23T12:18:48.597 回答