Git

ort merge strategy

헬로우월드 2023. 6. 28. 17:20

🔍 ort Merge 전략이란?

ort는 Git 2.34 (2021년 11월 출시)부터 기본 병합 전략으로 채택된 신형 merge 전략입니다.
이 전략은 기존의 recursive 전략논리적으로 동일하지만 훨씬 빠르게 수행하기 위해 완전히 새롭게 재작성된 merge 엔진입니다.

📌 이름의 유래

  • Optimized
  • Recursive
  • Tree merge
    → 줄여서 ort (발음: 오트)

 

1. 🎯 도입 배경: 왜 recursive를 대체했는가?

기존의 recursive merge 전략은 다음과 같은 문제점이 있었습니다:

문제점 설명
성능 저하 대형 리포지토리(예: 리눅스 커널) merge 시, merge에 수 분 이상 소요
메모리 비효율 트리 비교를 재귀적으로 수행 → call stack 깊이 증가 및 객체 재사용 어려움
merge 충돌 처리 복잡성 전략적으로는 우수하지만 구현 복잡성 탓에 최적화가 어려움

 

2. ⚙️ ort 전략의 내부 구조

ortrecursive와 논리적으로 동등한 merge 알고리즘을 사용하지만, 데이터 접근 방식과 메모리 처리 로직을 전면 재설계했습니다.

✅ 주요 최적화 요소:

① Flattened Tree Walk (트리 평탄화)

  • recursive는 트리를 재귀적으로 순회하면서 비교
  • ort는 Git의 tree diff 알고리즘을 사용해 전체 경로를 한 번에 평탄화하고 병합

② Entry Map 사용

  • 각 파일의 경로를 키로, base, ours, theirs의 Blob 객체를 값으로 가지는 O(1) 해시 테이블 구성
    → 반복 트리 탐색 없이 즉시 비교 가능

③ merge 정책 적용 분리

  • merge 로직을 “데이터 수집 → merge 정책 적용 → 출력 생성”의 3단계로 분리
    → 코드 유지보수성 및 병렬 처리 가능성 향상

④ Conflict Marker 최적화

  • 충돌 발생 시 생성되는 conflict marker (<<<<<<<, =======, >>>>>>>)의 처리를 전담하는 stream 처리 유닛 설계
    → 줄 단위 처리 효율 증가

 

3. ⚡ 성능 비교

🧪 Git 공식 벤치마크 (Linus Torvalds 발표 기준)

리포지토리 recursive 시간 ort 시간 향상률
Linux 커널 약 45초 약 5초 🔼 9배 이상
대형 모노레포 수 분 이상 수 초 🔼 수십 배

🔍 ort 전략은 특히 merge 시 충돌 없는 파일 수가 많은 경우 압도적인 성능을 보여줍니다.

 

4. ✅ merge 결과의 정확성

"merge 결과는 recursive와 100% 동일하게 보장한다."
— Junio Hamano, Git 메인테이너

  • merge 결과는 완전히 동일하지만, 구현만 최적화됨
  • 테스트는 Git 자체의 2만 개 이상의 테스트 케이스를 통과함

 

5. 💡 명령어 사용 예시

기본 사용 (Git 2.34 이상은 자동 적용)

git merge feature-branch
# Merge made by the 'ort' strategy.

 

명시적 사용

git merge -s ort feature-branch

 

비교 목적으로 recursive 사용

git merge -s recursive feature-branch

 

6. 🔄 ort vs recursive 비교 요약

항목 recursive 전략 ort 전략 (기본값)
merge 알고리즘 구조 재귀적 탐색 (deep tree walk) 평탄화된 엔트리 기반 매핑 (flat entry map)
성능 느림 (재귀 탐색, 중복 처리 많음) 빠름 (최대 9배 이상)
메모리 사용량 높음 효율적
충돌 처리 지원 (복잡한 코드) 지원 (더 명확하고 빠른 처리)
Git 기본 전략 Git 2.33 이하 Git 2.34 이상 (기본)

 

7. 🧠 ort 전략이 실무에서 가지는 의미

장점 설명
🧪 CI 속도 향상 대형 리포지토리 merge 속도 극적 향상
🤖 자동 병합에 최적 conflict 없는 다중 브랜치 merge 시 큰 효과
📉 merge 충돌 줄이기 tree-based entry 관리로 더 나은 충돌 감지
🔒 안정성 보장 기존 merge 전략과 결과 동일 + 테스트 커버리지가 매우 높음

 

✅ 결론

  • ort는 Git merge 전략의 최신이자 최고의 기본 전략입니다.
  • 결과의 일관성은 유지하면서도, 속도와 자원 사용을 획기적으로 개선하였습니다.
  • 실무에서 merge가 빈번한 대형 프로젝트에서 반드시 알아야 할 전략입니다.