
Git 프로젝트 릴리스 노트에 따르면 분산 버전 관리 시스템 Git 2.55가 공개됐다. 이번 버전은 리눅스 fsmonitor 데몬, 원격 저장소 통신 중 terminal control sequence 처리 제한, incremental MIDX 기반 저장소 유지관리, 대형 저장소 성능 최적화 등을 포함한다.
이번 릴리스에서 개발자가 체감할 변화 중 하나는 fsmonitor 데몬의 리눅스 지원이다. fsmonitor는 작업 트리의 파일 변경 여부를 추적해 Git 명령이 매번 전체 디렉터리 상태를 훑는 부담을 줄이는 기능이다. GitHub 해설은 그동안 내장 fsmonitor 데몬이 macOS와 Windows에서 제공됐고, Git 2.55에서 리눅스 구현이 추가됐다고 설명했다. 리눅스 구현은 inotify를 사용한다.
보안 측면에서는 원격 저장소와 통신할 때 sideband로 전달되는 터미널 제어 시퀀스가 기본적으로 대부분 비활성화됐다. Git 릴리스 노트는 ANSI 색상 이스케이프 시퀀스를 제외한 terminal control sequence를 기본적으로 제한한다고 밝혔다. 이는 원격 서버가 진행 상황 메시지에 커서 이동이나 화면 지우기 같은 제어문자를 섞어 터미널 표시를 조작할 가능성을 줄이는 변화다.
대형 저장소 유지관리 기능도 강화됐다. Git 2.55는 `git repack --write-midx=incremental`을 통해 multi-pack-index를 incremental 방식으로 쓸 수 있게 했다. 기존 전체 MIDX를 매번 다시 쓰는 대신 새 pack에 대한 레이어를 덧붙이는 방식이 가능해져, 대규모 저장소에서 유지관리 작업의 메타데이터 재작성 부담을 줄일 수 있다.
릴리스 노트는 partial clone과 filtered pack 워크플로에 영향을 주는 `git pack-objects --path-walk` 개선도 포함했다. GitHub 해설에 따르면 Git 2.55에서는 `blob:none`, `blob:limit`, `tree:0`, `object:type`, `sparse` 등 여러 필터와 path-walk 조합을 사용할 수 있다. 대형 저장소나 monorepo에서 필요한 객체만 다루는 흐름을 더 세밀하게 구성할 수 있다는 의미다.
사용자 명령도 여럿 추가됐다. `git log --graph` 계열에는 그래프 lane 수를 제한하는 옵션이 들어가 많은 병렬 브랜치를 가진 저장소에서 출력 폭을 줄일 수 있다. `git rev-list`와 `git log` 계열에는 범위 안에서 가장 오래된 커밋 일부를 고르는 `--max-count-oldest` 옵션이 추가됐다. `git push`는 fetch에서 쓰던 remote group 이름을 push 대상에도 사용할 수 있게 됐다.
GitHub는 이번 릴리스가 100명 이상의 기여자가 참여한 결과라고 설명했다. Git 2.55는 단일 기능의 대형 변화보다 대형 코드베이스 운영, 부분 클론, 저장소 유지관리, 터미널 안전성, 일상 명령의 사용성을 폭넓게 다듬은 릴리스에 가깝다. 기업 개발 조직과 오픈소스 프로젝트 운영자는 새 기능 자체뿐 아니라 CI 환경, 개발자 로컬 환경, 배포판 패키지 반영 시점을 함께 확인할 필요가 있다.
다만 Git 2.55가 공개됐다고 해서 모든 개발 환경에서 곧바로 같은 버전을 사용할 수 있는 것은 아니다. 운영체제 배포판, IDE, 호스팅 서비스, CI 이미지가 Git을 포함하는 방식에 따라 적용 시점은 달라진다. 대형 저장소 성능 최적화 옵션은 저장소 구조와 운영 정책에 따라 효과가 다를 수 있어, 실제 도입 전 테스트가 필요하다.
출처: Git Release Notes https://raw.githubusercontent.com/git/git/v2.55.0/Documentation/RelNotes/2.55.0.adoc
출처: GitHub Blog https://github.blog/open-source/git/highlights-from-git-2-55/
출처: GitHub Releases https://github.com/git/git/releases/tag/v2.55.0









