Git 속성
GitLab은 리포지터리의 루트 디렉터리에 있는 .gitattributes
파일에서 사용자 정의 Git 속성을 정의하는 것을 지원합니다. .gitattributes
파일을 사용하여 파일 처리 및 표시에 대한 변경 사항을 선언합니다. 예를 들면 다음과 같습니다:
- 차이에서 생성된 파일 축소화(merge_requests/changes.md#collapse-generated-files).
- 사용자 정의 Merge 드라이버 생성.
- 파일을 읽기 전용으로 표시하기 위해 독점 잠금 파일 생성.
- 차이에서 구문 강조 표시 변경.
- 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
파일은 파일 및 차이의 구문 강조 표시에 사용할 언어를 정의하는 데 사용할 수 있습니다. 자세한 정보는 구문 강조 표시를 참조하세요.
사용자 정의 Merge 드라이버
- GitLab 15.10에서 소개된 GitLab를 통해 사용자 정의 Merge 드라이버를 구성할 수 있는 기능.
GitLab의 Self-managed 인스턴스 관리자는 GitLab 구성 파일에서 사용자 정의 Merge 드라이버를 정의한 다음 Git .gitattributes
파일에서 사용할 수 있습니다. 사용자 정의 Merge 드라이버는 GitLab.com에서 지원되지 않습니다.
예를 들어, 빌드 파일 및 구성 파일과 같은 특정 파일을 Merge 중에 무시해야 하는 경우 사용자 정의 Merge 드라이버를 구성할 수 있습니다.
사용자 정의 Merge 드라이버 구성
다음 예시는 GitLab에서 사용자 정의 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"
이 예에서 Merge 시, Git은 driver
값을 실행할 명령어로 사용합니다. 여기서 우리는 true
를 사용하여 인수 없이 항상 0이 아닌 반환 코드를 반환합니다. 이는 .gitattributes
에서 지정된 파일에 대해 Merge이 아무것도 하지 않음을 의미합니다.
자체 Merge 드라이버를 사용하려면 driver
의 값을 실행 파일로 변경합니다. 이 명령어가 어떻게 호출되는지에 대한 자세한 내용은 사용자 정의 Merge 드라이버의 Git 문서를 참조하세요.
사용자 정의 Merge 드라이버가 적용되는 파일을 .gitattributes
를 사용하여 설정
.gitattributes
파일에서 사용자 정의 Merge 드라이버를 사용할 파일의 경로를 설정할 수 있습니다. 예를 들면:
config/* merge=foo
이 경우 config/
폴더 아래의 모든 파일이 GitLab 구성에서 정의된 foo
라는 사용자 정의 Merge 드라이버를 사용합니다.
리소스
- Git 속성에 대한 공식 Git 문서