정확한 코드 검색

Tier: 프리미엄, 얼티메이트 Offering: GitLab.com, Self-managed Status: 베타
  • 신규 도입으로, 기본으로 비활성화된 index_code_with_zoektsearch_code_with_zoekt라는 플래그를 사용하는 베타 기능이었습니다.
  • GitLab 16.6에서 GitLab.com에서 활성화됨.
  • GitLab 17.1에서 index_code_with_zoektsearch_code_with_zoekt 플래그가 제거됨.
caution
이 기능은 베타 상태이며 변경될 수 있습니다. 자세한 정보는 에픽 9404을 참조하십시오.

정확한 코드 검색을 통해 GitLab 전체 또는 특정 프로젝트에서 코드를 정확히 일치 및 정규식 모드로 검색할 수 있습니다.

정확한 코드 검색은 Zoekt에서 제공되며, 해당 기능이 활성화된 그룹에서 기본으로 사용됩니다.

정확한 코드 검색 활성화

Zoekt 검색 API

  • GitLab 16.9zoekt_search_api라는 플래그로 도입되었으며, 기본적으로 활성화됩니다.
이 기능의 사용 가능 여부는 피처 플래그로 제어됩니다. 자세한 정보는 이력을 참조하십시오. 이 기능은 테스트용으로 제공되지만 프로덕션 환경에서 사용하기에 적합하지는 않습니다.

Zoekt 검색 API를 사용하면 검색 API를 사용하여 코드를 정확하게 검색할 수 있습니다. 고급 검색 또는 기본 검색을 대신 사용하려면 검색 유형 지정을 참조하십시오.

기본적으로 Zoekt 검색 API는 GitLab.com에서 비활성화되어 있어 중단 사항을 방지하고 있습니다. 이 기능에 액세스하려면 GitLab에 문의하십시오.

전역 코드 검색

  • GitLab 16.11zoekt_cross_namespace_search라는 플래그로 도입되었으며, 기본적으로 비활성화됩니다.
이 기능의 사용 가능 여부는 피처 플래그로 제어됩니다. 자세한 정보는 이력을 참조하십시오. 이 기능은 테스트용으로 제공되지만 프로덕션 환경에서 사용하기에 적합하지는 않습니다.

이 기능을 사용하여 GitLab 인스턴스 전체에서 코드를 검색합니다.

대형 GitLab 인스턴스에서 전역 코드 검색이 잘 작동하지 않습니다. 이 기능이 20,000개 이상의 프로젝트를 가진 인스턴스에 대해 활성화되면 검색 시간이 초과될 수 있습니다.

검색 모드

  • GitLab 16.8zoekt_exact_search라는 플래그로 도입되었으며, 기본적으로 비활성화됩니다.
  • GitLab 17.3에 플래그 zoekt_exact_search가 제거되어 정식으로 사용하게 되었습니다.

GitLab에는 두 가지 검색 모드가 있습니다:

  • 정확한 일치 모드: 쿼리와 정확히 일치하는 결과를 반환합니다.
  • 정규식 모드: 정규식 및 부울 표현식을 지원합니다.

기본적으로 정확한 일치 모드가 사용됩니다. 정규식 모드로 전환하려면 검색 상자 오른쪽에서 정규식 사용 ()을 선택하십시오.

구문

이 표는 정확한 일치 및 정규식 모드에 대한 몇 가지 예제 쿼리를 보여줍니다.

쿼리 정확한 일치 모드 정규식 모드
"foo" "foo" foo
foo file:^doc/ /doc로 시작하는 디렉터리에 있는 foo /doc로 시작하는 디렉터리에 있는 foo
"class foo" "class foo" class foo
class foo class foo classfoo
foo or bar foo or bar foo 또는 bar
class Foo class Foo (대소문자 무시) class (대소문자 무시) 및 Foo (대소문자 구분)
class Foo case:yes class Foo (대소문자 구분) classFoo (모두 대소문자 구분)
foo -bar foo -bar foo지만 bar아님
foo file:js js를 포함하는 파일에서 foo js를 포함하는 파일에서 foo
foo -file:test test가 포함되지 않은 파일에서 foo test가 포함되지 않은 파일에서 foo
foo lang:ruby 루비 소스 코드에서 foo 루비 소스 코드에서 foo
foo file:\.js$ .js로 끝나는 파일에서 foo .js로 끝나는 파일에서 foo
foo.*bar 없음 foo.*bar (정규식)
sym:foo 클래스, 메소드 및 변수 이름과 같은 기호에 포함된 foo 클래스, 메소드 및 변수 이름과 같은 기호에 포함된 foo

알려진 문제점

  • 20_000개 미만의 트리그램을 가진 1MB 미만의 파일만 검색할 수 있습니다. 자세한 내용은 이슈 455073를 참조하십시오.
  • 프로젝트의 기본 브랜치에서만 정확한 코드 검색을 사용할 수 있습니다. 자세한 내용은 이슈 403307를 참조하십시오.