한국정보기술진흥원
한국정보기술신문
thumbnail

정보기술 ·

Git 2.52 릴리스...3.0 버전 준비 본격화, 성능 대폭 개선

발행일
읽는 시간3분 59초

디렉토리 단위 변경 추적 속도 향상과 새 명령어 추가

[한국정보기술신문] 분산 버전 관리 시스템 Git이 2.52 버전을 지난 11월 17일 공식 출시했다. 이번 릴리스는 2026년 말 출시 예정인 Git 3.0을 위한 준비 작업을 본격화하는 동시에 대규모 저장소에서의 성능을 크게 개선한 것이 특징이다.

Git 프로젝트는 94명 이상의 기여자가 참여한 이번 업데이트에서 디렉토리 단위 변경 추적 성능 개선, 새로운 명령어 추가, SHA-256 해시 전환 준비 등 다양한 기능을 선보였다. 특히 대형 저장소를 운영하는 구글이나 마이크로소프트 같은 기업들의 개발 환경에 큰 도움이 될 것으로 전망된다.

디렉토리 단위 변경 추적 성능 대폭 향상

이번 릴리스의 가장 주목할 만한 기능은 디렉토리 전체에 대한 변경 사항을 추적하는 새로운 고성능 방식이다. 기존에는 디렉토리 내 각 파일에 대해 개별적으로 커밋 기록을 조회해야 했지만, 새로운 트리 수준 분석 방식은 전체 트리에 대한 마지막 수정 정보를 한 번에 계산한다. 이를 통해 대규모 저장소에서 디렉토리 단위 히스토리 조회 시간이 크게 단축됐다.

GitLab과 GitHub 같은 Git 호스팅 서비스들은 파일 트리 보기에서 각 파일을 마지막으로 수정한 커밋 정보를 표시하는데, 기존 방식으로는 각 파일마다 별도의 명령을 실행해야 했다. 새로운 방식은 이러한 정보를 훨씬 빠르게 추출할 수 있어 사용자 경험이 개선될 전망이다.

새로운 명령어와 기능 추가

Git 2.52는 여러 새로운 명령어를 도입했다. git last-modified 명령어는 주어진 경로를 마지막으로 수정한 가장 가까운 조상 커밋을 찾아준다. 이는 특정 파일이나 디렉토리의 최근 변경 이력을 빠르게 파악하는 데 유용하다.

새로 추가된 git repo 하위 명령어는 저장소의 다양한 특성 정보를 제공한다. git repo structure 명령은 저장소의 구조 정보를 보여주며, 객체 형식과 참조 형식 목록, 기본 저장소 통계 등을 생성한다. 이를 통해 개발자들은 저장소의 상태를 더 쉽게 파악할 수 있다.

git refs 명령에도 두 개의 새로운 하위 명령이 추가됐다. git refs list는 git for-each-ref의 별칭으로 동작하며, git refs exists는 git show-ref exists와 유사한 기능을 제공한다. 이러한 명령들은 스크립팅 작업에서 저장소의 참조를 다루는 작업을 통합하고 단순화한다.

Git 3.0 준비 작업 진행

Git 2.52는 2026년 말 출시 예정인 Git 3.0을 위한 중요한 준비 작업을 포함하고 있다. 가장 주목할 만한 변화는 SHA-1 해시에서 SHA-256 해시로의 전환이다. 이번 릴리스에는 SHA-1과 SHA-256 간 상호 운용성 작업의 기초가 마련됐다. 향후 릴리스에서는 한 해시 알고리즘을 사용하는 저장소에서 다른 해시 알고리즘을 사용하는 저장소로 푸시와 풀이 가능해질 전망이다.

또한 Git 3.0에서는 새로운 저장소의 기본 브랜치 이름이 master에서 main으로 변경된다. Git 2.52에는 이러한 변경을 사용자에게 안내하는 새로운 힌트가 추가됐으며, 필요한 경우 브랜치 이름을 master로 변경하는 방법도 안내한다.

Rust 통합 시작

Git 2.52는 Git 역사상 처음으로 선택적으로 Rust 코드를 사용할 수 있게 됐다. WITH_RUST 빌드 플래그를 활성화하면 가변 폭 정수의 인코딩과 디코딩에 Rust 구현을 사용한다. 현재는 일부 유틸리티 기능에만 적용되지만, 이는 향후 Git의 더 많은 부분을 Rust로 재작성하기 위한 인프라를 구축하는 것이다.

Rust 지원은 Git 3.0까지는 선택 사항으로 유지되지만, Git 3.0부터는 필수 요구 사항이 될 예정이다. 이를 통해 Git의 성능과 안정성이 더욱 향상될 것으로 기대된다.

유지보수 기능 개선

Git 2.52는 저장소 유지보수 기능도 크게 개선했다. 새로운 기하학적 유지보수 작업은 패키지 파일을 검사하고 필요할 때 재패키징을 수행한다. 이는 느린 전체 재패키징과 도달할 수 없는 객체를 절대 정리하지 않는 증분 재패키징 전략 사이의 중간 지점을 제공한다.

git maintenance 명령은 모든 것을 처음부터 다시 빌드하는 유지보수 작업을 피하도록 업데이트됐다. 이를 통해 대규모 저장소의 유지보수 효율성이 크게 향상됐다.

기타 개선 사항

이번 릴리스에는 다양한 추가 개선 사항도 포함됐다. git send-email 명령은 이제 이미 보낸 이메일을 IMAP 폴더에 저장할 수 있다. 경로명을 값으로 받는 설정 변수에 대해 값 앞에 optional을 붙여 선택 사항으로 표시할 수 있게 됐다.

commitGraph.changedPaths 설정 변수가 추가되어 git commit-graph 명령의 changed-paths 인수를 기본적으로 활성화할 수 있다. git stash pop과 apply 명령이 index 인수로 호출된 것처럼 동작하도록 하는 stash.index 설정 변수에 대한 지원도 추가됐다.

Bloom 필터 지원도 확장되어 더 많은 경로 지정 패턴을 지원하게 됐다. 이를 통해 와일드카드와 비와일드카드 구성 요소가 혼합된 경우 경로 범위 순회가 더 빠르게 진행된다.

git push와 git fetch 같은 주요 명령의 성능도 개선됐다. 이러한 최적화는 원격 작업이 빈번한 분산 팀에서 오버헤드를 줄이는 데 도움이 된다.

보안 강화

Git 2.52는 보안 측면에서도 진전을 이뤘다. SHA-256 채택을 진행하면서 SHA-1을 단계적으로 폐지하고 있다. 이는 업계 전반의 변화에 부합하며, Git 3.0으로의 원활한 전환을 준비하고 있다. 레거시 시스템을 위한 하위 호환성도 유지되어 업그레이드가 원활하게 진행될 수 있다.

git fast-import 명령에는 signed-commits와 signed-tags 옵션이 추가되어 가져오기 시 서명된 데이터를 처리하는 방법을 사용자가 제어할 수 있게 됐다. 향후 릴리스에서는 여전히 유효한 커밋 서명만 유지하고 서명이 무효화된 데이터를 다시 서명하는 기능이 추가될 예정이다.

업계 반응

Git 메인테이너 Junio C. Hamano는 릴리스 노트에서 이번 변경 사항들이 확장성과 사용성에 대한 오랜 문제점들을 해결한다고 밝혔다. GitLab과 GitHub의 개발팀은 이번 업데이트가 DevOps 팀이 마찰 없이 확장할 수 있도록 지원한다고 평가했다.

소셜 미디어에서도 이번 릴리스에 대한 긍정적인 반응이 이어지고 있다. 개발자들은 특히 성능 개선과 Git 3.0을 위한 준비 작업에 주목하고 있다. 대규모 저장소를 관리하는 기업들에게는 디렉토리 단위 변경 추적 성능 개선이 가장 큰 혜택으로 평가받고 있다.

Git 2.52에 대한 자세한 정보는 공식 웹사이트에서 확인할 수 있으며, 소스 코드 형태로 다운로드할 수 있다. Git은 소스 코드 변경 사항을 추적하고 프로젝트를 협업으로 관리하는 데 널리 사용되는 오픈소스 분산 버전 관리 시스템으로, 전 세계 수백만 개발자들이 사용하고 있다.

한국정보기술신문 정보기술분과 김지원 기자 news@kitpa.org