Git 속성
GitLab은 리포지터리의 루트 디렉터리에있는 .gitattributes
파일에서 사용자 정의 Git 속성을 정의하는 것을 지원합니다. .gitattributes
파일을 사용하여 파일 처리 및 표시에 대한 변경 사항을 선언합니다. 다음과 같은 항목들이 있습니다.
- diffs에서 생성 된 파일을 숨기기
- 사용자 정의 Merge 드라이버 작성
- 파일을 읽기 전용으로 표시하기 위한 독점 잠금 파일 작성
- diffs에서 문법 강조 변경
- Git LFS로 이진 파일 처리 선언
- 리포지터리에 사용된 언어 선언
인코딩 요구 사항
.gitattributes
파일은 반드시 UTF-8로 인코딩되어야 하며, 바이트 순서 표시 (BOM)을 포함해서는 안 됩니다. 다른 인코딩이 사용 된 경우 파일의 내용은 무시됩니다.
혼합 파일 인코딩 지원
GitLab은 파일의 인코딩을 자동으로 감지하려고 시도하지만, ISO-8859-1
과 같이 다른 유형이 확실할 때를 제외하고는 기본적으로 UTF-8로 설정합니다. 잘못된 인코딩 감지는 텍스트에 일부 문자가 표시되지 않는 결과를 낳을 수 있습니다. Git은 이러한 경우를 처리할 수 있는 내장 지원이 있으며, 리포지터리 자체에 대해 지정된 인코딩과 UTF-8 간에 파일을 자동으로 변환합니다. .gitattributes
파일에서 working-tree-encoding
속성을 사용하여 혼합 파일 인코딩에 대한 지원을 구성합니다.
예시:
*.xhtml text working-tree-encoding=ISO-8859-1
이 예제 구성을 사용하면 Git은 로컬 트리에서 모든 .xhtml
파일을 ISO-8859-1 인코딩으로 유지하지만, 리포지터리에 커밋할 때는 UTF-8로 변환합니다. GitLab은 올바르게 인코딩된 UTF-8만 볼 수 있기 때문에 파일을 정확하게 렌더링합니다.
기존 리포지터리에이 구성을 적용하는 경우 로컬 사본이 올바른 인코딩을 갖추고 있지만 리포지터리에는 그렇지 않은 경우, 파일을 다루어 다시 커밋해야 할 수 있습니다. 리포지터리 전체에 대해 이 작업을 수행하려면 git add --renormalize .
를 실행합니다.
자세한 내용은 working-tree-encoding을 참조하십시오.
문법 강조
.gitattributes
파일을 사용하여 파일 및 diffs의 문법을 강조할 때 어떤 언어를 사용할지 정의할 수 있습니다. 자세한 내용은 Syntax highlighting을 참조하십시오.
사용자 정의 Merge 드라이버
- GitLab 15.10에서 소개된 GitLab의 기능으로 GitLab을 통해 사용자 정의 Merge 드라이버를 구성할 수 있습니다.
GitLab Self-Managed형 인스턴스 관리자는 GitLab 구성 파일에서 사용자 정의 Merge 드라이버를 정의한 다음, Git .gitattributes
파일에서 사용자 정의 Merge 드라이버를 사용할 수 있습니다. 사용자 정의 Merge 드라이버는 GitLab.com에서는 지원되지 않습니다.
사용자 정의 Merge 드라이버는 충돌 해결에 대한 고급 제어를 제공하는 Git의 기능입니다. 사용자 정의 Merge 드라이버는 비 무의미한 Merge 충돌의 경우에만 호출되므로 어떤 파일을 Merge하지 않는 신뢰할 수 있는 방법은 아닙니다.
사용자 정의 Merge 드라이버 구성
다음 예제는 GitLab에서 사용자 정의 Merge 드라이버를 정의하고 사용하는 방법을 보여줍니다.
사용자 정의 Merge 드라이버를 구성하는 방법은 설치 유형에 따라 다릅니다.
-
/etc/gitlab/gitlab.rb
파일을 편집합니다. -
다음과 유사한 구성을 추가합니다:
gitaly['configuration'] = { # ... git: { # ... config: [ # ... { key: "merge.foo.driver", value: "true" }, ], }, }
-
gitaly.toml
파일을 편집합니다. -
다음과 유사한 구성을 추가합니다:
[[git.config]] key = "merge.foo.driver" value = "true"
이 예제에서 Git은 Merge시 driver
값을 실행할 명령으로 사용합니다. 이 경우에는 매개 변수가없는 true
를 사용하므로 항상 0이 아닌 반환 코드를 반환합니다. 이는 .gitattributes
에 지정된 파일에 대해 Merge이 아무것도 수행하지 않음을 의미합니다.
사용자 고유의 Merge 드라이버를 사용하려면 driver
의 값을 실행 가능 파일을 가리키도록 교체하십시오. 이 명령이 어떻게 호출되는지에 대한 자세한 내용은 custom merge drivers에 대한 Git 설명서를 참조하십시오.
.gitattributes
를 사용하여 사용자 정의 Merge 드라이버를 적용할 파일 설정
.gitattributes
파일에서 사용자 정의 Merge 드라이버를 적용하려는 파일 경로를 설정할 수 있습니다. 예시:
config/* merge=foo
이 경우 config/
폴더 아래의 모든 파일은 GitLab 구성에서 정의된 foo
라는 사용자 정의 Merge 드라이버를 사용합니다.