정확한 코드 검색
Offering: GitLab.com, GitLab Self-Managed
이 기능은 제한된 가용성 상태입니다. 정확한 코드 검색을 사용하면 정확한 일치 및 정규 표현식 모드를 사용하여 모든 GitLab 또는 특정 프로젝트에서 코드를 검색할 수 있습니다. 정확한 코드 검색은 Zoekt를 기반으로 하며 기능이 활성화된 그룹에서 기본적으로 사용됩니다.
히스토리
- GitLab 15.9에서
index_code_with_zoekt및search_code_with_zoekt라는 플래그와 함께 베타로 도입되었습니다. 기본적으로 비활성화되어 있습니다. - GitLab 16.6에서 GitLab.com 및 GitLab Self-Managed에서 활성화되었습니다.
- GitLab 16.11에서
zoekt_cross_namespace_search라는 플래그와 함께 글로벌 코드 검색이 도입되었습니다. 기본적으로 비활성화되어 있습니다. - GitLab 17.1에서 기능 플래그
index_code_with_zoekt및search_code_with_zoekt가 제거되었습니다. - GitLab 18.6에서 베타에서 제한된 가용성으로 변경되었습니다.
- GitLab 18.7에서 기능 플래그
zoekt_cross_namespace_search가 제거되었습니다.
정확한 코드 검색을 사용하면 정확한 일치 및 정규 표현식 모드를 사용하여 모든 GitLab 또는 특정 프로젝트에서 코드를 검색할 수 있습니다.
정확한 코드 검색은 Zoekt를 기반으로 하며 기능이 활성화된 그룹에서 기본적으로 사용됩니다.
정확한 코드 검색 사용#
사전 요건:
- 정확한 코드 검색이 활성화되어 있어야 합니다:
- GitLab.com의 경우 정확한 코드 검색은 유료 구독에서 기본적으로 활성화됩니다.
- GitLab Self-Managed의 경우 관리자가 Zoekt를 설치하고 정확한 코드 검색을 활성화해야 합니다.
정확한 코드 검색을 사용하려면:
- 상단 표시줄에서 Search or go to를 선택합니다.
- 검색 상자에 검색어를 입력합니다.
- 왼쪽 사이드바에서 Code를 선택합니다.
프로젝트 또는 그룹에서도 정확한 코드 검색을 사용할 수 있습니다.
사용 가능한 범위#
범위는 검색 중인 데이터 유형을 설명합니다. 정확한 코드 검색에 사용할 수 있는 범위는 다음과 같습니다:
| 범위 | 글로벌 1 2 | 그룹 | 프로젝트 |
|---|---|---|---|
| 코드 | ❌ | ✅ | ✅ |
각주:
- 관리자는 글로벌 검색 범위를 비활성화할 수 있습니다.
GitLab 18.6 이전에서는 GitLab Self-Managed에서 글로벌 검색을 활성화하려면
관리자가
zoekt_cross_namespace_search기능 플래그도 활성화해야 했습니다. - GitLab.com에서는 글로벌 검색이 활성화되지 않습니다.
Zoekt 검색 API#
히스토리
- GitLab 16.9에서
zoekt_search_api라는 플래그와 함께 도입되었습니다. 기본적으로 활성화되어 있습니다. - GitLab 18.4에서 일반적으로 사용 가능하게 되었습니다. 기능 플래그
zoekt_search_api가 제거되었습니다.
Zoekt 검색 API를 사용하면 정확한 코드 검색을 위해 검색 API를 사용할 수 있습니다. 대신 고급 검색 또는 기본 검색을 사용하려면 검색 유형 지정을 참조하십시오.
검색 모드#
히스토리
- GitLab 16.8에서
zoekt_exact_search라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다. - GitLab 17.3에서 일반적으로 사용 가능하게 되었습니다. 기능 플래그
zoekt_exact_search가 제거되었습니다.
GitLab에는 두 가지 검색 모드가 있습니다:
- 정확한 일치 모드: 쿼리와 정확히 일치하는 결과를 반환합니다.
- 정규 표현식 모드: 정규 및 부울 표현식을 지원합니다.
기본적으로 정확한 일치 모드가 사용됩니다. 정규 표현식 모드로 전환하려면 검색 상자 오른쪽에서 Use regular expression ([regular-expression])을 선택합니다.
구문#
이 표는 정확한 일치 및 정규 표현식 모드에 대한 몇 가지 예시 쿼리를 보여줍니다.
| 쿼리 | 정확한 일치 모드 | 정규 표현식 모드 |
|---|---|---|
"foo" |
"foo" |
foo |
foo file:^doc/ |
/doc으로 시작하는 디렉토리의 foo |
/doc으로 시작하는 디렉토리의 foo |
"class foo" |
"class foo" |
class foo |
class foo |
class foo |
class 및 foo |
foo or bar |
foo or bar |
foo 또는 bar |
class Foo |
class Foo (대소문자 구분) |
class (대소문자 구분 없음) 및 Foo (대소문자 구분) |
class Foo case:yes |
class Foo (대소문자 구분) |
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 |
Ruby 소스 코드의 foo |
Ruby 소스 코드의 foo |
foo file:\.js$ |
.js로 끝나는 이름의 파일의 foo |
.js로 끝나는 이름의 파일의 foo |
foo.*bar |
foo.*bar (리터럴) |
foo.*bar (정규 표현식) |
sym:foo |
클래스, 메서드, 변수 이름 같은 심볼의 foo |
클래스, 메서드, 변수 이름 같은 심볼의 foo |
