2012-11-29 2 views
2

두 개의 Gitolite 리포지토리에 여러 개의 git 프로젝트가 있습니다. Gitolite 레포에 포함 된 소스를 검색하여 키워드를 검색 할 수 있습니까?Gitolite repos에서 소스를 검색하는 방법?

저는 모든 git 프로젝트를 로컬에서 먼저 수동으로 복제하지 않고도 키워드를 검색 할 수 있기를 원합니다. Jenkins가 만든 프로젝트의 경우 소스는 검색 할 수있는 디렉토리에 노출됩니다. 그러나 그들 모두가 현재이 방법으로 건설되지는 않습니다.

  • 자식 명령
  • 사용자 ID

을하고, 자식 명령을 수행 할 수있는 경우 결정 : 차단 Gitolite 그냥 authorization layer입니다

답변

0

.

검색 기능 자체와 아무 관련이 없습니다.

Elasticsearch과 같이 git repo에서 검색 자체를 구현하려면 다른 앱이 필요합니다.
"Searching a git repository with ElasticSearch"을 참조하십시오.

그런 다음 gitolite와 연결할 수 있습니다 (gitolite 액세스 규칙에 따라 검색을 허용하거나 검색 결과를 필터링 할 수 있음).

+0

감사하지만, (내 대답을 참조) REPO가있는 컴퓨터에서 소스를 검색 할 수있는 방법이 것 같습니다. –

+0

@CincinnatiJoe 사실,하지만 그것은 순수한 자식 검색이며 Gitolite와는 아무런 관련이 없습니다. 내 대답은 당신의 질문의 Gitolite 쪽을 다룹니다. 순수한 자식 검색을 위해서는'git grep' (http://stackoverflow.com/questions/2928584/how-to-grep-search-committed-code-in-the-git-history)을 추천하고 * 않습니다. * .git을 그렸다. – VonC

+0

git grep이 복제 한 프로젝트를 검색하는 데 얼마나 유용한 지 확인했습니다. 하지만 제 질문은 먼저 로컬로 모든 것을 복제하지 않고도 repo의 모든 프로젝트를 검색하는 방법이었습니다. 방금 찾은 방법은 repo 시스템에 로그인하여 repo의 각 프로젝트에 대해 반복적으로 git grep을 사용하는 것입니다. repo 시스템을 사용하지 않는 다른/더 좋은 방법이 있다면, 나는 그것을 듣고 싶습니다 (그리고 자주 필요하지 않을 수도 있기 때문에 별도의 서비스를 설치하는 것을 포함하지 않습니다). –

1

내가 이메일로 보낸 이전 동료가이 작업을 수행 할 수있는 방법을 알고있었습니다. 저장소가 저장된 컴퓨터에서 프로젝트가 들어있는 저장소 디렉토리로 cd합니다. 개별 프로젝트의 .git 디렉토리 안에서 HEAD 또는 지점에 "git grep"을 사용할 수 있습니다. 프로젝트 DIRS의 디렉토리에서 루프를 사용하여 모든 DIRS를 검색하려면

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 
0

을, 당신을 항상 "grep"명령을 작성할 수 있습니다. 결국 'symbolic-ref'를 실행할 수 있다면, grep은 무엇입니까?

허용되는 문자에 대한 gitolite의 제한 사항은 임의의 정규식에서 압착을 가할 수 있다는 한 가지 문제가 있습니다. (만약 누군가 정말로, 정말로이 이것을 원한다 - 그리고 나는 그들이 메일 링리스트에서 물어 보는 것을 의미한다. 그리고 적어도 2 명 이상의 사람들이 "그래, 우리가 원한다!"라고 말하며, 나는 프로그램에 제한없는 인수가 있어야합니다. 이 코드는 'git-annex'브랜치에서 빠져 나오기를 기다리고 있지만 지금까지는 테스트에 대한 애정을 갖지 못하고있다.

여러 프로젝트를 검색 할 수도 있습니다. 당신이로 CD 및 실행 '자식과 함께 제공 각각의 repo에 대해 다음

gitolite list-phy-repos | gitolite access % $GL_USER W any | grep -v DENIED | cut -f1 

및 예를 들어, 당신이 시작할 수는 사용자가 액세스 읽기 모든 프로젝트를 검색 할 수 있도록하는 복잡성 그렙 '

다음 단계는 방금 모든의 repos에 액세스 할 수있는 사람이 될 일이 있기 때문에 /이 (검색하지 검색 할의 repos의 목록이 될 것입니다, 그리고 당신이 원하는 정말 아니다 !). 이것은 효과적으로 디자인하기가 조금 더 어려워집니다.어떤 종류의 그룹 이름을 사용하여 conf 파일 자체에서 검색 가능한 repos를 표시하는 것이 더 쉬울 수도 있습니다. grep 명령은 특수 그룹의 구성원 자격을 추가 제약 조건으로 쉽게 확인할 수 있습니다. 검색 서비스 제안을

Sitaram는