리포지터리 일관성 검사
리포지터리 일관성 검사에 대해 설명합니다.
Gitaly는 다음 시점에 리포지터리 일관성 검사를 수행합니다. 리포지터리 검사를 트리거할 때. 미러링된 리포지터리에서 변경 사항을 가져올 때. 사용자가 리포지터리에 변경 사항을 푸시할 때. 이 일관성 검사는 리포지터리에 필요한 오브젝트가 모두 있는지, 그리고 그 오브젝트가 유효한지 확인합니다. 검사는 다음과 같이 분류합니다. 리포지터리가 손상되지 않았음을 확인하는 기본 검사. 여기에는 연결성 검사와 오브젝트 파싱 가능 여부 검사가 포함됩니다. Git의 과거 보안 관련 버그를 악용할 수 있는 오브젝트를 식별하는 보안 검사. 모든 오브젝트 메타데이터가 유효한지 확인하는 형식 검사. 예전 Git 버전이나 다른 Git 구현은 메타데이터가 유효하지 않은 오브젝트를 만들었을 수 있으나, 최신 버전은 이러한 형식 오류 오브젝트를 해석할 수 있습니다. 일관성 검사를 통과하지 못한 형식 오류 오브젝트를 제거하려면 리포지터리 히스토리를 다시 작성해야 하는데, 이는 대체로 불가능합니다. 따라서 Gitaly는 리포지터리 일관성에 악영향을 주지 않는 여러 형식 관련 일관성 검사를 기본적으로 비활성화 합니다. Gitaly는 Git 클라이언트의 알려진 취약점을 유발할 수 있는 오브젝트가 배포되지 않도록 기본 검사와 보안 관련 검사는 기본적으로 비활성화하지 않습니다. 이 때문에 악의적인 의도가 없는 프로젝트라도 해당 오브젝트가 포함된 리포지터리는 가져오기가 제한됩니다. 리포지터리 일관성 검사 재정의 # 일관성 검사를 통과하지 못하는 리포지터리를 처리해야 한다면 인스턴스 관리자는 일관성 검사를 재정의할 수 있습니다. Linux 패키지 설치본에서는 /etc/gitlab/gitlab.rb 를 편집하여 다음 키를 설정합니다. 아래 예시는 오래된 커밋의 잘못된 이메일 헤더를 허용하고 hasDotgit 및 gitmodulesUrl 일관성 검사를 비활성화합니다. ignored_blobs = "/etc/gitlab/instance_wide_ignored_git_blobs.txt" gitaly[ 'configuration' ] = { # ... git: { # ... config: [ # Allow bad email headers in old commits # (Populate a file with one unabbreviated SHA-1 per line. # See https://git-scm.com/docs/git-config#Documentation/git-config.txt-fsckskipList) { key: "fsck.skipList" , value: ignored_blobs }, { key: "fetch.fsck.skipList" , value: ignored_blobs }, { key: "receive.fsck.skipList" , value: ignored_blobs }, { key: "fsck.missingSpaceBeforeEmail" , value: "ignore" }, # Ignore specific consistency checks # See https