Skip to content

[#43] git merge-tree --stdin으로 branch 조합의 병합 결과를 수집한다#57

Merged
opficdev merged 5 commits into
developfrom
feat/#43
Jul 16, 2026
Merged

[#43] git merge-tree --stdin으로 branch 조합의 병합 결과를 수집한다#57
opficdev merged 5 commits into
developfrom
feat/#43

Conversation

@opficdev

Copy link
Copy Markdown
Owner

🔗 연관된 이슈

🎯 의도

  • 임시 worktree 생성과 삭제를 반복하던 branch 병합 검사를 git merge-tree --stdin 기반 수집으로 교체하여 최대 465개 branch 조합을 worktree와 index 변경 없이 검사하기 위한 구조 전환
  • issue #43의 초기 모든 조합을 한 Git process에서 처리 조건 대신 현재 확정된 원형 라운드별 Git process 1개 실행과 최대 min(4, availableParallelism())개 라운드 병렬 처리 적용

📝 작업 내용

📌 요약

  • branch 조합의 원형 비교 라운드 구성
  • git merge-tree --stdin --name-only --messages 출력 해석기 추가
  • 라운드 단위 병렬 수집과 조합별 실패 격리 도입
  • 임시 worktree 병합 경로를 git merge-tree 수집 경로로 교체

🔍 상세

  • 실제 branch 수에 따른 원형 라운드 생성
  • 홀수 branch 수의 내부 휴식 자리 처리와 라운드 내 branch 중복 방지
  • 입력 순서와 조합 방향에 관계없는 라운드 구성
  • 31개 branch 기준 31개 라운드와 465개 pair 구성
  • remote branch 일괄 fetch와 branch 이름의 commit OID 고정
  • git merge-tree --stdin 지원 여부 단일 확인
  • 라운드마다 spawn으로 Git process 1개를 생성하고 commit OID pair를 표준 입력으로 전달
  • NUL 구분 출력을 조각 단위로 해석하여 clean, confirmed_conflict, merged tree OID, conflict file, conflict type과 path 관계 수집
  • UTF-8 및 NUL 경계 분할 처리와 잘못되거나 잘린 출력에 대한 진단 오류 제공
  • Git process 실패 시 해당 라운드의 부분 결과 폐기와 제한된 stderr 기록
  • 최대 min(4, availableParallelism())개 라운드 병렬 처리
  • 실패 라운드의 재귀적 이분 분할과 단일 pair 실패의 merge_check_failed 격리
  • 최종 결과의 baseBranch를 포함한 branch 비교 조합을 구성한다 #42 pair 입력 순서 복원
  • 전체 pair 결과 중 baseBranch 포함 결과만 기존 GitMergeSignal로 변환
  • 기존 merge base, changed file, hunk, risk, AI, report 처리 흐름 유지
  • 기존 collectGitMergeSignal 호출 형태와 worktreeRoot 타입 호환성 유지
  • 임시 worktree 생성·병합·삭제 경로 제거
  • 활성 branch 사이 graph 집계는 branch 조합의 merge risk를 계산하고 충돌 그래프로 집계한다 #45 범위로 유지
  • npm run watch, 외부 서비스 호출, workflow dispatch, release 미실행

📸 영상 / 이미지 (Optional)

해당 없음

@opficdev opficdev self-assigned this Jul 16, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

이번 풀 리퀘스트는 개별 브랜치별로 임시 worktree를 생성하여 수행하던 가상 머지 방식을 git merge-tree --stdin을 활용한 일괄 라운드 기반 병렬 수집 방식으로 개선하여 성능을 최적화합니다. 리뷰에서는 git merge-tree 실행 시 -z 옵션이 누락되어 NUL 구분자 파싱이 정상적으로 동작하지 않는 치명적인 오류를 지적하였으며, 일관성을 위해 stdin 지원 여부 확인 함수에도 -z 옵션을 추가할 것을 제안했습니다.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread src/git/gitMergeTreeRoundCollector.ts
Comment thread src/git/gitMergeTreeCollector.ts
@opficdev
opficdev merged commit 05d40c6 into develop Jul 16, 2026
3 checks passed
@opficdev
opficdev deleted the feat/#43 branch July 16, 2026 02:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

git merge-tree --stdin으로 branch 조합의 병합 결과를 수집한다

1 participant