在幾個Gitolite存儲庫中有一堆git項目。有沒有辦法在Gitolite倉庫中搜索包含關鍵字的源代碼?在Gitolite倉庫搜索源的方法?
我希望能夠搜索所有關鍵字git的項目,而無需手動克隆他們中的每一個當地第一。對於由Jenkins構建的項目,源代碼將顯示在可以搜索的目錄中。但並非所有這些都是以這種方式建造的。
在幾個Gitolite存儲庫中有一堆git項目。有沒有辦法在Gitolite倉庫中搜索包含關鍵字的源代碼?在Gitolite倉庫搜索源的方法?
我希望能夠搜索所有關鍵字git的項目,而無需手動克隆他們中的每一個當地第一。對於由Jenkins構建的項目,源代碼將顯示在可以搜索的目錄中。但並非所有這些都是以這種方式建造的。
Gitolite只是一個authorization layer,其攔截:
,並且決定如果git的命令被允許繼續進行。
它無關,與搜索功能本身。
你需要另一個應用程序實現了搜索本身在你的git倉庫,像Elasticsearch。
見 「Searching a git repository with ElasticSearch」。
然後,您可以將其耦合與gitolite(爲了讓搜索或過濾的搜索結果,這取決於gitolite訪問規則)。
,我通過電子郵件發送遇到以前的同事知道的方式來做到這一點。在存儲回購站的機器上,cd進入包含項目的存儲庫目錄。在單個項目的.git目錄中,可以在HEAD或分支上使用「git grep」。在所有迪爾斯搜索,使用一個循環從項目迪爾斯的DIR:
for x in *; do
cd $x
git grep "MyString" HEAD
cd ..
done
有更多的選擇,包括一個包含每個匹配項目的名稱的例子:
for x in *; do
cd $x
git grep -i "mystring" HEAD -- '*.java' | sed "s|\(.*\)|$x-->\1|"
cd ..
done
嗯,你總是可以創建一個「grep」命令。畢竟,如果你可以運行'symbolic-ref',什麼是grep?
一個問題將是gitolite對允許的字符限制將使供應任意正則表達式的壓接。 (如果真的有人,真的想要這個 - 我的意思是他們要求在郵件列表中,至少有更多的人在說「是的,我們想要它!」),我可以創建一種方法來允許一些程序擁有無限制的參數。這個代碼只是等待從'git-annex'分支中被取消,但到目前爲止沒有對測試的熱愛)。
你甚至可以讓它搜索多個項目。例如,爲了使搜索用戶有讀訪問所有的項目,你可以用這個啓動:
gitolite list-phy-repos | gitolite access % $GL_USER W any | grep -v DENIED | cut -f1
,然後與你進入這個目錄並運行「混帳出現各回購grep」可以
在複雜的下一階段將是您想要搜索/搜索不到(因爲你恰好是誰有權訪問所有回購的傢伙回購的列表,這不是真的是你想要的!)。這有點難以有效設計。使用某種類型的組名可能更容易在conf文件中標記可搜索的回購站。 grep命令可以輕鬆檢查該特殊組中的成員資格,作爲附加約束。
Sitaram
感謝您的搜索服務的建議,但它看起來像有一種方法可以從具有回購(見我的回答)機器搜索的來源。 –
@CincinnatiJoe真實,但它純粹是一個git搜索,並且與Gitolite無關。我的回答解決了你問題的Gitolite方面。對於純粹的git搜索,我會推薦'git grep'(* http://stackoverflow.com/questions/2928584/how-to-grep-search-committed-code-in-the-git-history),而* not *刷新'.git'。 – VonC
我看到git grep對搜索一個已克隆的項目是非常有用的。但我的問題是如何搜索回購中的所有項目,而無需首先在本地克隆所有項目。我剛剛發現要這樣做的方式是登錄到回購機器,並在回購中的每個項目的循環中使用git grep。如果有不同的/更好的方式不涉及到回購機器,我很樂意聽到它(並且不涉及安裝單獨的服務,因爲這可能不經常需要)。 –