有没有办法可以为 git/Mercurial 命令发送两种选择?
我想在 git 存储库和 Mercurial 存储库的历史记录中搜索特定的单词,比如“commit”。但是,我不确定它是如何写在提交消息“commit”或“com-mit”中的?所以,我想用命令发送这些选项。我知道如果我想搜索,我会输入:
在 git 中:
git log --grep="commit"
在水银中:
hg log --keyword commit
有什么帮助吗?
使用 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")'
通过使用and
instead of or
,您可以找到匹配两者而不是其中之一的修订;此外,您可以使用reverse(...)
以相反的顺序列出匹配项,例如:
hg log -r 'reverse(keyword("com-mit") or keyword("commit"))'