Git 속성

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

GitLab은 리포지터리의 루트 디렉터리에있는 .gitattributes 파일에서 사용자 정의 Git 속성을 정의하는 것을 지원합니다. .gitattributes 파일을 사용하여 파일 처리 및 표시에 대한 변경 사항을 선언합니다. 다음과 같은 항목들이 있습니다.

인코딩 요구 사항

.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 드라이버

Tier: Free, Premium, Ultimate Offering: Self-Managed, GitLab Dedicated
  • 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 드라이버를 구성하는 방법은 설치 유형에 따라 다릅니다.

Linux 패키지 (Omnibus)
  1. /etc/gitlab/gitlab.rb 파일을 편집합니다.
  2. 다음과 유사한 구성을 추가합니다:

    gitaly['configuration'] = {
      # ...
      git: {
        # ...
        config: [
          # ...
          { key: "merge.foo.driver", value: "true" },
        ],
      },
    }
    
자체 컴파일 (소스)
  1. gitaly.toml 파일을 편집합니다.
  2. 다음과 유사한 구성을 추가합니다:

    [[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 드라이버를 사용합니다.

리소스