# Git의 새로운 bundle-uri 토끼굴에 빠져들기

> Clean Markdown view of GeekNews topic #19938. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19938](https://news.hada.io/topic?id=19938)
- GeekNews Markdown: [https://news.hada.io/topic/19938.md](https://news.hada.io/topic/19938.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-03-25T09:31:01+09:00
- Updated: 2025-03-25T09:31:01+09:00
- Original source: [blog.gitbutler.com](https://blog.gitbutler.com/going-down-the-rabbit-hole-of-gits-new-bundle-uri)
- Points: 3
- Comments: 0

## Topic Body

- `bundle-uri`는 Git의 새 기능으로, 캐시된 파일을 다운로드해 프로젝트 데이터를 미리 채운 후 서버와의 복잡한 페치 과정을 줄임  
- 일반적으로 `git clone` 명령어는 서버와 협상 과정을 거쳐 필요한 데이터를 다운로드함 → 비효율적일 수 있음  
- `bundle-uri`는 CDN에서 캐시된 초기 데이터를 받아오고, 이후 서버에서 최신 상태만 업데이트하도록 함 → 시간 단축 가능  
  
### 클론 속도가 빨라지는가?  
#### **Yes? - 빠를 수 있다**  
- 로컬 파일 옵션을 사용하면 클론 속도가 매우 빨라짐  
- VM에서 마운트된 파일 시스템이나 클라우드 캐시에서 번들 파일을 사용하면 더 빠르게 동기화 가능  
  
#### **No? - 더 느릴 수 있다**  
- 동일한 데이터를 CDN에서 받아오면 빠를 것 같았으나, 오히려 더 느렸음  
- 실험 결과: 번들을 사용한 클론이 일반 클론보다 더 느림  
    - 일반 클론: 2분 36초  
    - 번들 사용 클론: 3분 20초  
- 번들에서 이미 받은 객체가 다시 다운로드되는 문제가 발생함  
  
#### **Maybe? - 그럴 수도 있다**  
- Git이 번들 파일에서 `refs/heads` (브랜치 참조)만 읽어서 문제가 발생  
- 나머지 참조는 무시되기 때문에 서버에서 추가로 데이터를 다운로드하게 됨  
- Git 코드를 수정해 모든 참조를 복사하도록 하면 클론 속도가 개선됨  
    - 수정 후 클론 시간: **2분 19초** (기존 2분 36초보다 빨라짐)  
    - 추가로 다운로드한 객체 수: 43,877개 (전체의 약 1%)  
  
### 수정 방법 및 패치 적용  
- Git의 `bundle-uri.c` 코드에서 `refs/heads` 외의 참조를 무시하는 부분을 수정  
- 수정 후 모든 참조를 복사하도록 변경 → 클론 속도 개선  
- 이 수정은 **6글자 변경**으로 이루어진 최소한의 패치였음  
  
### 이 기능을 사용해야 할까?  
#### **possibly - 아마 도움 될수도**  
- GitHub, GitLab 같은 플랫폼에서는 서버 CPU 부담을 줄일 수 있는 큰 장점이 있음  
  - 서버에서 직접 packfile을 계산하지 않고 CDN에서 처리 가능 → 서버 자원 절약  
- 개인 사용자도 유용할 수 있는 경우:  
  - 사내 Git 서버에서 대규모 클론을 반복해야 하는 경우  
  - CI/CD 시스템에서 반복적인 전체 클론 작업이 필요한 경우  
  
#### **현실적으로 강제될 가능성이 높음**  
- 최신 Git 프로토콜에서는 서버가 클라이언트에 번들 URL을 제공 가능  
- 서버가 번들 파일 URL을 제공하면 클라이언트가 자동으로 다운로드 후 동기화 진행  
- GitHub 등에서 이 기능이 활성화되면 사용자가 선택할 여지가 없음  
  
### 결론  
- 번들 파일을 사용하면 클론 속도가 더 빠를 수 있지만, Git의 처리 방식 때문에 초기에는 오히려 느려질 수 있음  
- Git의 코드를 수정해 참조 처리 방식을 개선하면 클론 속도가 향상됨  
- 앞으로 GitHub, GitLab 등에서 이 기능을 도입하면 클라이언트에서 자동으로 사용하게 될 가능성이 큼

## Comments



_No public comments on this page._
