InfoGrab DocsInfoGrab Docs

Git 속성

요약

GitLab은 리포지터리 루트 디렉터리의 .gitattributes 파일에서 사용자 정의 Git 속성을 정의하는 기능을 지원합니다. .gitattributes 파일은 UTF-8로 인코딩되어야 하며 Byte Order Mark를 포함해서는 안 됩니다.

GitLab은 리포지터리 루트 디렉터리의 .gitattributes 파일에서 사용자 정의 Git 속성을 정의하는 기능을 지원합니다. .gitattributes 파일을 사용하면 다음과 같이 파일 처리 및 표시 방식의 변경을 선언할 수 있습니다:

인코딩 요구 사항#

.gitattributes 파일은 UTF-8로 인코딩되어야 하며 Byte Order Mark를 포함해서는 안 됩니다. 다른 인코딩을 사용하면 파일의 콘텐츠가 무시됩니다.

혼합 파일 인코딩 지원#

GitLab은 파일의 인코딩을 자동으로 감지하려고 시도하지만, 탐지기가 다른 유형(ISO-8859-1 등)이라고 확신하지 않는 한 UTF-8을 기본값으로 사용합니다. 인코딩 감지가 잘못되면 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 파일을 사용하면 파일과 diff의 구문을 강조 표시할 때 어떤 언어를 사용할지 정의할 수 있습니다. 자세한 내용은 구문 강조 표시를 참고합니다.

사용자 정의 머지 드라이버#

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

사용자 정의 머지 드라이버는 충돌 해결을 세밀하게 제어할 수 있는 Git 기능입니다. 사용자 정의 머지 드라이버는 단순하지 않은 머지 충돌이 발생한 경우에만 호출되므로, 특정 파일이 머지되지 않도록 막는 수단으로는 신뢰할 수 없습니다.

사용자 정의 머지 드라이버 구성#

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

사용자 정의 머지 드라이버를 구성하는 방법은 설치 유형에 따라 다릅니다.

  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은 driver 값을 실행할 명령어로 사용합니다. 예시에서는 인수 없이 true를 사용하므로 항상 0이 아닌 반환 코드를 돌려줍니다. 즉 .gitattributes에 지정된 파일에 대해서는 머지가 아무 동작도 하지 않습니다.

직접 만든 머지 드라이버를 사용하려면 driver의 값을 실행 파일을 가리키도록 바꿉니다. 이 명령어가 호출되는 방식에 대한 자세한 내용은 사용자 정의 머지 드라이버에 대한 Git 문서를 참고합니다.

사용자 정의 머지 드라이버가 적용되는 파일을 설정하는 .gitattributes 사용#

.gitattributes 파일에서 사용자 정의 머지 드라이버와 함께 사용할 파일의 경로를 설정할 수 있습니다. 예시는 다음과 같습니다:

config/* merge=foo

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

리소스#

Git 속성

GitLab v19.5
Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed, GitLab Dedicated
원문 보기

요약

GitLab은 리포지터리 루트 디렉터리의 .gitattributes 파일에서 사용자 정의 Git 속성을 정의하는 기능을 지원합니다. .gitattributes 파일은 UTF-8로 인코딩되어야 하며 Byte Order Mark를 포함해서는 안 됩니다.

GitLab은 리포지터리 루트 디렉터리의 .gitattributes 파일에서 사용자 정의 Git 속성을 정의하는 기능을 지원합니다. .gitattributes 파일을 사용하면 다음과 같이 파일 처리 및 표시 방식의 변경을 선언할 수 있습니다:

인코딩 요구 사항#

.gitattributes 파일은 UTF-8로 인코딩되어야 하며 Byte Order Mark를 포함해서는 안 됩니다. 다른 인코딩을 사용하면 파일의 콘텐츠가 무시됩니다.

혼합 파일 인코딩 지원#

GitLab은 파일의 인코딩을 자동으로 감지하려고 시도하지만, 탐지기가 다른 유형(ISO-8859-1 등)이라고 확신하지 않는 한 UTF-8을 기본값으로 사용합니다. 인코딩 감지가 잘못되면 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 파일을 사용하면 파일과 diff의 구문을 강조 표시할 때 어떤 언어를 사용할지 정의할 수 있습니다. 자세한 내용은 구문 강조 표시를 참고합니다.

사용자 정의 머지 드라이버#

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

사용자 정의 머지 드라이버는 충돌 해결을 세밀하게 제어할 수 있는 Git 기능입니다. 사용자 정의 머지 드라이버는 단순하지 않은 머지 충돌이 발생한 경우에만 호출되므로, 특정 파일이 머지되지 않도록 막는 수단으로는 신뢰할 수 없습니다.

사용자 정의 머지 드라이버 구성#

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

사용자 정의 머지 드라이버를 구성하는 방법은 설치 유형에 따라 다릅니다.

  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은 driver 값을 실행할 명령어로 사용합니다. 예시에서는 인수 없이 true를 사용하므로 항상 0이 아닌 반환 코드를 돌려줍니다. 즉 .gitattributes에 지정된 파일에 대해서는 머지가 아무 동작도 하지 않습니다.

직접 만든 머지 드라이버를 사용하려면 driver의 값을 실행 파일을 가리키도록 바꿉니다. 이 명령어가 호출되는 방식에 대한 자세한 내용은 사용자 정의 머지 드라이버에 대한 Git 문서를 참고합니다.

사용자 정의 머지 드라이버가 적용되는 파일을 설정하는 .gitattributes 사용#

.gitattributes 파일에서 사용자 정의 머지 드라이버와 함께 사용할 파일의 경로를 설정할 수 있습니다. 예시는 다음과 같습니다:

config/* merge=foo

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

리소스#