InfoGrab Docs

리포지터리 일관성 검사

리포지터리 일관성 검사에 대해 설명합니다.

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: [ # 이전 커밋에서 잘못된 이메일 헤더 허용 # (SHA-1 완전 표기법을 줄당 하나씩 포함한 파일을 채웁니다. # 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" }, # 특정 일관성 검사 무시 # https://git-scm.com/docs/git-fsck.html#_fsck_messages 참조 { key: "fsck.hasD