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 파일은 파일 및 차이의 구문 강조 표시에 사용할 언어를 정의하는 데 사용할 수 있습니다. 자세한 정보는 구문 강조 표시를 참조하세요.

사용자 정의 Merge 드라이버

Tier: Free, Premium, Ultimate Offering: Self-managed, GitLab Dedicated
  • GitLab 15.10에서 소개된 GitLab를 통해 사용자 정의 Merge 드라이버를 구성할 수 있는 기능.

GitLab의 Self-managed 인스턴스 관리자는 GitLab 구성 파일에서 사용자 정의 Merge 드라이버를 정의한 다음 Git .gitattributes 파일에서 사용할 수 있습니다. 사용자 정의 Merge 드라이버는 GitLab.com에서 지원되지 않습니다.

예를 들어, 빌드 파일 및 구성 파일과 같은 특정 파일을 Merge 중에 무시해야 하는 경우 사용자 정의 Merge 드라이버를 구성할 수 있습니다.

사용자 정의 Merge 드라이버 구성

다음 예시는 GitLab에서 사용자 정의 Merge 드라이버를 정의하고 사용하는 방법을 보여줍니다.

리눅스 패키지 (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"
    

이 예에서 Merge 시, Git은 driver 값을 실행할 명령어로 사용합니다. 여기서 우리는 true를 사용하여 인수 없이 항상 0이 아닌 반환 코드를 반환합니다. 이는 .gitattributes에서 지정된 파일에 대해 Merge이 아무것도 하지 않음을 의미합니다.

자체 Merge 드라이버를 사용하려면 driver의 값을 실행 파일로 변경합니다. 이 명령어가 어떻게 호출되는지에 대한 자세한 내용은 사용자 정의 Merge 드라이버의 Git 문서를 참조하세요.

사용자 정의 Merge 드라이버가 적용되는 파일을 .gitattributes를 사용하여 설정

.gitattributes 파일에서 사용자 정의 Merge 드라이버를 사용할 파일의 경로를 설정할 수 있습니다. 예를 들면:

config/* merge=foo

이 경우 config/ 폴더 아래의 모든 파일이 GitLab 구성에서 정의된 foo라는 사용자 정의 Merge 드라이버를 사용합니다.

리소스