정확한 코드 검색

Tier: Premium, Ultimate Offering: GitLab.com, Self-Managed Status: Beta
  • GitLab 15.9에 도입되었으며 기본적으로 비활성화된 index_code_with_zoektsearch_code_with_zoekt라는 플래그로 제공됩니다.
이 기능의 가용성은 피처 플래그로 제어됩니다. 자세한 정보는 히스토리를 참조하십시오. 이 기능은 테스트용으로 제공되지만 프로덕션 사용 준비가 되지는 않았습니다.
caution
이 기능은 베타 단계이며 사전 통보 없이 변경될 수 있습니다. 자세한 정보는 epic 9404를 참조하십시오.

정확한 코드 검색을 사용하면 정규 표현식 및 정확한 일치 모드를 사용하여 모든 GitLab 또는 특정 프로젝트에서 코드를 검색할 수 있습니다.

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

Zoekt 검색 API

  • GitLab 16.9에 도입되었으며 기본적으로 활성화된 zoekt_search_api라는 플래그로 제공됩니다.
이 기능의 가용성은 피처 플래그로 제어됩니다. 자세한 정보는 히스토리를 참조하십시오. 이 기능은 테스트용으로 제공되지만 프로덕션 사용 준비가 되지는 않았습니다.

Zoekt 검색 API를 사용하면 정확한 코드 검색을 위해 검색 API를 사용할 수 있습니다. 이 기능이 비활성화되면 대신 고급 검색 또는 기본 검색이 사용됩니다.

기본적으로 Zoekt 검색 API는 GitLab.com에서 비활성화되어 있어 변경 사항이 발생하지 않도록 합니다. 이 기능에 대한 액세스를 요청하려면 GitLab에 문의하십시오.

글로벌 코드 검색

  • GitLab 16.11에 도입되었으며 기본적으로 비활성화된 zoekt_cross_namespace_search라는 플래그로 제공됩니다.
이 기능의 가용성은 피처 플래그로 제어됩니다. 자세한 정보는 히스토리를 참조하십시오. 이 기능은 테스트용으로 제공되지만 프로덕션 사용 준비가 되지는 않았습니다.

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

대규모의 GitLab 인스턴스에서는 글로벌 코드 검색이 잘 수행되지 않습니다. 이 기능이 20,000개 이상의 프로젝트를 갖는 인스턴스에서 활성화되면 검색에 시간이 초과될 수 있습니다.

검색 모드

  • GitLab 16.8에 도입되었으며 기본적으로 비활성화된 zoekt_exact_search라는 플래그로 제공됩니다.
이 기능의 가용성은 피처 플래그로 제어됩니다. 자세한 정보는 히스토리를 참조하십시오. 이 기능은 테스트용으로 제공되지만 프로덕션 사용 준비가 되지는 않았습니다.

zoekt_exact_search가 활성화되면 두 가지 검색 모드 간에 전환할 수 있습니다:

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

zoekt_exact_search가 비활성화되면 기본적으로 정규 표현식 모드가 사용됩니다.

구문

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

쿼리 정규 표현식 모드 정확한 일치 모드
"foo" foo "foo"
foo file:^doc/ /doc로 시작하는 디렉터리의 foo /doc로 시작하는 디렉터리의 foo
"class foo" class foo "class foo"
class foo classfoo class foo
foo or bar foo 또는 bar foo or bar
class Foo class (대소문자 무시) 및 Foo (대소문자 구분) class Foo (대소문자 무시)
class Foo case:yes classFoo (모두 대소문자 구분) class Foo (대소문자 구분)
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 (정규 표현식) 없음