1

git/Mercurial コマンドの 2 つの選択肢を送信する方法はありますか?

git リポジトリと Mercurial リポジトリの履歴から、「commit」などの特定の単語を検索したいと考えています。しかし、コミットメッセージ「commit」または「com-mit」にどのように書かれているのかわかりません。したがって、これらのオプションをコマンドで送信したいと思います。検索したい場合は、次のように入力します。

git で:

git log --grep="commit"

水銀で:

hg log --keyword commit

何か助けはありますか?

4

1 に答える 1

4

Mercurial でこれを行う最も柔軟な方法は、revset を使用することです。あなたの例:

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

Python 正規表現構文で\bは、単語の境界を示し、バックスラッシュをエスケープする必要があります。構文は、(a|b)どちらかを照合するために使用されます。引数を一重引用符で囲んでいるのは、シェルがメタ文字自体を解釈しないようにするためです。

revset をand次のように組み合わせることで、正規表現を単純化することもできます。

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

単語を正確に一致させる必要がない場合 (たとえば、「commit」だけでなく「committer」と「committed」も一致させたい場合)、キーワード revsets を使用できます。

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

andの代わりにを使用するとor、一方ではなく両方に一致するリビジョンを見つけることができます。reverse(...)また、逆の順序で一致をリストするために使用することもできます。

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