2015-08-23 29 views
1

有沒有辦法讓我可以爲git/Mercurial命令發送兩個選擇?如何限制Git/Mercurial日誌到其日誌至少包含兩個字符串中的一個的提交?

我想搜索特定單詞的git存儲庫和Mercurial存儲庫的歷史記錄,說「提交」。但是,我不確定它是如何寫入提交消息「commit」或「com-mit」的?所以,我想用這個命令發送這些選項。我知道,如果我想搜索,我要鍵入:

在混帳:

git log --grep="commit" 

在善變:

hg log --keyword commit 

任何幫助嗎?

回答

4

使用Mercurial最靈活的方法是使用revsets。對於你的例子:

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

在Python正則表達式的語法,\b指示文字邊界,並且反斜槓需要轉義。 (a|b)語法用於匹配一個或另一個。圍繞參數的單引號是在那裏,以便shell不會解釋元字符本身。

您也可以通過合併revsets與and簡化正則表達式:

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

如果您不需要完全一致的話(例如,如果你想「提交者」和「承諾」也相匹配,不只是「承諾」),你可以使用關鍵字revsets:

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

通過使用and,而不是or,你可以找到同時匹配,而不是他們的一個版本;此外,您還可以使用reverse(...)按相反順序列出匹配項,例如:

hg log -r 'reverse(keyword("com-mit") or keyword("commit"))' 
相關問題