피드로 돌아가기
git-sync - 로컬 체크아웃 없이 Git 리모트 간 ref를 직접 미러링하는 CLI 도구
GeekNewsGeekNews
DevOps

git-sync - 로컬 체크아웃 없이 Git 리모트 간 ref를 직접 미러링하는 CLI 도구

로컬 체크아웃 없는 Relay 기반 Git 리모트 간 ref 직접 미러링 구현

xguru2026년 5월 16일1intermediate

Context

기존 Git 미러링 방식의 로컬 디스크 체크아웃 필수 구조로 인한 저장소 크기 비례 리소스 소모 발생. 대규모 저장소 동기화 시 발생하는 디스크 I/O 병목과 메모리 오버헤드 해결 필요성 증대.

Technical Solution

  • 소스 upload-pack 데이터를 타겟 receive-pack으로 직접 연결하는 Relay 전송 경로 설계
  • 로컬 저장소 체크아웃 과정을 제거하여 저장소 크기와 무관한 일정 메모리 사용량 유지
  • Force, Prune 등 Relay 불가 작업 시 go-git 기반 인메모리 Materialized 폴백 메커니즘 적용
  • --materialized-max-objects 설정을 통한 인메모리 스토어의 엄격한 메모리 상한 제어
  • Probe, Plan, Sync, Replicate로 이어지는 단계적 API 설계를 통한 동기화 상태 정밀 제어
  • 타입드 JSON 출력 지원을 통한 CI/CD 파이프라인 연동 최적화

1. 대규모 데이터 전송 시 로컬 스토리지 의존성을 제거한 스트리밍 아키텍처 검토

2. 기본 경로(Fast path)와 예외 처리 경로(Fallback path)를 분리하여 효율성 확보

3. 인메모리 처리 시 최대 객체 수 제한을 통한 OOM(Out of Memory) 방지 전략 수립

4. 외부 도구 연동을 위한 표준화된 JSON Plan 출력 인터페이스 설계

원문 읽기