Housekeeping
Git 저장소 하우스키핑 작업을 구성하고 관리하는 방법을 설명합니다.
GitLab은 Git 저장소에서 하우스키핑 작업을 지원하고 자동화하여 가능한 한 효율적으로 서비스를 제공할 수 있도록 합니다. 하우스키핑 작업에는 다음이 포함됩니다: Git 객체와 리비전 압축. 도달할 수 없는 객체 제거. 잠금 파일과 같은 오래된 데이터 제거. 성능을 향상시키는 데이터 구조 유지 관리. 포크 간의 객체 중복 제거를 개선하기 위한 객체 풀 업데이트. Warning GitLab이 제어하는 Git 저장소에서 하우스키핑을 수행하기 위해 수동으로 Git 명령을 실행하지 마세요. 그렇게 하면 저장소가 손상되고 데이터 손실이 발생할 수 있습니다. 하우스키핑 전략 # Gitaly는 두 가지 방식으로 Git 저장소에서 하우스키핑 작업을 수행할 수 있습니다: 즉각적 하우스키핑 은 저장소 상태에 관계없이 특정 하우스키핑 작업을 실행합니다. 휴리스틱 하우스키핑 은 저장소 상태에 따라 실행해야 할 하우스키핑 작업을 결정하는 일련의 휴리스틱을 기반으로 하우스키핑 작업을 실행합니다. 즉각적 하우스키핑 # "즉각적" 하우스키핑 전략은 저장소 상태에 관계없이 저장소에서 하우스키핑 작업을 실행합니다. 이것이 수동 트리거 및 푸시 기반 트리거에서 사용하는 기본 전략입니다. 즉각적 하우스키핑 전략은 GitLab 애플리케이션에 의해 제어됩니다. 하우스키핑 작업을 실행시킨 트리거에 따라 GitLab은 Gitaly에 특정 하우스키핑 작업을 수행하도록 요청합니다. Gitaly는 저장소가 최적화된 상태에 있더라도 이러한 작업을 수행합니다. 결과적으로 이 전략은 하우스키핑 작업 수행이 느릴 수 있는 대형 저장소에서 비효율적일 수 있습니다. 휴리스틱 하우스키핑 # 히스토리 GitLab 14.9에서 수동 트리거 및 optimized_housekeeping 이라는 플래그 와 함께 푸시 기반 트리거에 대해 도입 되었습니다. 기본적으로 활성화되어 있습니다. GitLab 14.10에서 GitLab.com에서 활성화 되었습니다. GitLab 15.8에서 일반적으로 사용 가능 해졌습니다. 기능 플래그 optimized_housekeeping 이 제거되었습니다. 휴리스틱(또는 "기회주의적") 하우스키핑 전략은 저장소 상태를 분석하고 하나 이상의 데이터 구조가 충분히 최적화되지 않은 경우에만 하우스키핑 작업을 실행합니다. 이것이 예약된 하우스키핑 에서 사용하는 전략입니다. 휴리스틱 하우스키핑은 실행해야 할 작업을 결정하기 위해 다음 정보를 사용합니다: 느슨하고 오래된 객체의 수. 이미 압축된 객체를 포함하는 팩 파일의 수. 느슨한 참조의 수. 커밋 그래프의 존재 여부. 분석된 데이터 구조를 최적화해야 하는지 여부의 결정은 저장소의 크기에 따라 달라집니다: 모든 객체의 총 크기가 클수록 객체가 더 자주 리팩됩니다. 총 참조 수가 많을수록 참조가 덜 자주 리팩됩니다. Gitaly는 데이터 구조가 커질수록 최적화에 더 많은 시간이 걸리는 사실을 상쇄하기 위해 이를 수행합니다. 특히 많은 트래픽을 받는 대형 모노레포에서 너무 자주 최적화하는 것을 피하는 것이 중요합니다. Gitaly에 저장
