Git, 20주년을 맞아 SHA-256, Reftables, UI 개선 등 대대적인 변화 시도
Git 20주년을 맞아 SHA-1 취약점(Vulnerability) 해결을 위한 SHA-256 지원 및 reftables 도입을 추진 중임
대용량 파일(Large Files) 처리를 위해 Large-object promisors 및 플러그 가능한 오브젝트 데이터베이스(Pluggable Object Databases) 도입 예정
사용자 인터페이스(UI) 개선을 위해 경쟁 프로젝트인 Jujutsu의 장점을 수용하여 새로운 서브 커맨드(Subcommands) 추가
커뮤니티에서는 Git의 복잡한 사용성(Complexity)에 대한 불만이 지속적으로 제기되고 있으며, UI 개선에 대한 기대가 높음
SHA-256 전환의 기술적 과제
Git은 SHA-1의 보안 취약점을 해결하기 위해 SHA-256 지원을 추가했지만, 생태계 지원 부족(Lack of Ecosystem Support)으로 인해 실제 사용은 미미한 상황이다. 특히, GitHub과 같은 주요 Git forge에서 SHA-256을 지원하지 않아 사용자 전환(User Migration)에 어려움이 있다. Git 3.0에서는 SHA-256을 기본값으로 설정하여 전환을 가속화할 예정이지만, 호환성 문제(Compatibility Issues) 발생 가능성이 존재한다. 또한, SHA-256으로의 전환은 단순히 기술적인 문제가 아니라, CI 시스템(CI Systems), 스크립트 등 다양한 도구들의 업데이트를 필요로 한다.
Reftables 도입의 성능 및 확장성 개선
Git은 참조(Reference)를 파일 시스템에 개별 파일로 저장하는 방식의 비효율성을 개선하기 위해 reftables을 도입한다. 파일 시스템의 제약(Filesystem Limitations)으로 인한 성능 저하, 대용량 저장소에서의 느린 작업 속도(Slow Operations), 동시성 문제 등을 해결하기 위함이다. Reftables은 바이너리 형식으로 참조를 저장하여 저장 공간 효율성(Storage Efficiency)을 높이고, 원자적 업데이트(Atomic Updates)를 지원하여 데이터 일관성(Data Consistency)을 보장한다. Git 3.0에서 기본값으로 설정될 예정이며, 스크립트 및 서버 측에서 Git을 사용하는 경우 참조 접근 방식(Reference Access Method)에 주의해야 한다.
대용량 파일 처리 기술: Promisors와 Object Database
Git은 대용량 바이너리 파일(Large Binary Files)을 효율적으로 처리하기 위해 Large-object promisors와 플러그 가능한 오브젝트 데이터베이스(Pluggable Object Databases)를 도입한다. Promisors는 대용량 파일을 별도의 저장소에 저장하고, CDN을 통해 제공하여 저장 공간 비용 절감(Storage Cost Reduction) 및 클론 속도 향상(Clone Speed Improvement)을 목표로 한다. 플러그 가능한 오브젝트 데이터베이스는 바이너리 파일에 특화된 새로운 저장 형식을 도입하여 변경 사항의 효율적인 관리(Efficient Change Management)를 가능하게 한다. Promisors는 Git 2.50에 처음 도입되었으며, 플러그 가능한 오브젝트 데이터베이스는 Git 2.53에서 인터페이스가 통합되었다.
UI 개선을 위한 Jujutsu의 영향
Git은 Jujutsu의 UI/UX 개선 사례를 통해 사용자 인터페이스(User Interface)의 문제점을 인식하고 개선을 시도한다. Jujutsu는 역사 수정(History Rewriting), 충돌 관리(Conflict Management) 등 Git의 불편한 부분을 개선하여 사용자 만족도를 높였다. Git은 Jujutsu의 장점을 수용하여 git history split 및 git history reword와 같은 새로운 서브 커맨드를 추가할 예정이다. 이는 Git의 사용성(Usability)을 향상시키고, 현대적인 워크플로우(Modern Workflows)를 지원하기 위한 노력의 일환이다.