본문으로 건너뛰기

© 2026 Molayo

GN헤드라인2026. 05. 16. 10:57

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

요약

git-sync는 로컬 체크아웃 과정 없이 소스 Git 리모트의 참조(ref)와 오브젝트를 타겟 리모트로 직접 스트리밍하는 CLI 도구입니다. 이 도구는 `upload-pack`과 `receive-pack` 경로를 활용하여 데이터를 전송하며, 메모리 사용량을 일정하게 유지합니다. 또한, 초기 시딩부터 지속적인 동기화까지 처리할 수 있으며, CI/CD 파이프라인 연동을 위한 계획(plan) 및 타입드 JSON 출력을 지원합니다.

핵심 포인트

  • 로컬 체크아웃 없이 Git 리모트 간 ref와 오브젝트를 직접 스트리밍하여 전송 가능
  • 전통적인 `upload-pack`과 `receive-pack` 경로를 활용하며, 메모리 사용량이 일정하게 유지됨
  • 초기 시딩부터 지속적 동기화까지 처리할 수 있으며, 푸시 전 미리보기(plan) 기능 제공
  • 강제 업데이트(`--force`), 삭제(`--prune`) 등 모든 ref 관리 액션을 지원하고 CI/CD 연동을 위한 타입드 JSON 출력을 제공함

로컬 클론 필요없이 소스 리모트에서 타겟 리모트로 ref와 오브젝트를 직접 스트리밍하며, 로컬 디스크에 저장소를 체크아웃하지 않음
Relay 전송 경로로 소스 upload-pack

팩 데이터를 타겟 receive-pack

으로 바로 흘려보내, 저장소 크기와 무관하게 메모리 사용량은 일정함

  • relay가 불가능한 경우(force, prune, delete 등)
    Materialized 폴백으로 인메모리 go-git

스토어에 오브젝트를 fetch 후 팩파일 인코딩 및 푸시, --materialized-max-objects

로 메모리 제한 가능
git-sync sync

하나로 빈 타겟 초기 시딩부터 지속적 동기화까지 처리하며, git-sync plan

으로 푸시 전 미리보기 가능
git-sync replicate

는 타겟 ref를 소스와 완전히 일치시키되, 로컬 materialize가 필요하면 실패 처리하는 엄격 모드

  • ref 생성, 업데이트,
    --force

강제 업데이트, --prune

삭제 등 모든 ref 관리 액션 지원

  • 모든 액션을 푸시 전에 계획하고
    타입드 JSON 출력을 제공해 CI/자동화 파이프라인에 바로 연결 가능
  • Go 라이브러리로도 임베딩 가능하며,
    Probe

, Plan

, Sync

, Replicate

안정 API 제공
단방향 전용, SSH 미지원(Smart HTTP/HTTPS만), 데몬/감시 기능 없이 원샷 실행 방식

  • MIT 라이선스

AI 자동 생성 콘텐츠

본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0