제품 코드 변경 없음. 병합 · pull · rebase · cherry-pick · revert 를 길마다 새 저장소에서
파일 비교 탭을 미리 열지 않고 MergeHub 만으로 끝까지 갔다.
- 다섯 길 모두 커밋(rebase 끝)까지 · 줄끝 · BOM 바뀐 파일 0 · 충돌 표식 0 · class 이름 검사 0
- 7차 A-1 · A-2 · B-1, 8차 A-1 · B-1 · B-2 다시 안 남 · F-1 병합 · pull 본문 26개
- 새로 걸린 것(9차): cherry-pick 마지막 저장 뒤 요약 "내 쪽 대비" 가 실제 기준(이력에서 고른 커밋)과 다름,
한 번 다른 브랜치 커밋이 기준으로 잡힘(따로 재니 재현 안 됨)
- 8차 전부 끝
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
충돌 탭 파일 단위 Accept 는 소스에 주석이 안 남고, 병합 커밋 본문은 비어 있었고,
Git 탭 로그는 끄면 사라져 누가 어느 파일을 어떻게 풀었는지 남는 곳이 없었다(사용자 요청).
- MergeResolutionLog: 기록 파일(첫 줄 MERGE_HEAD) 읽기 · 쓰기, 본문 만들기, 메시지에 붙이기
- GitService: 병합 중일 때만 .git/MERGEHUB_RESOLUTIONS 에 적고, CommitMerge 가 본문을 붙인다.
병합 커밋 · 작업 취소 · 새로고침 때 쓸모없는 기록을 치운다
- 충돌 탭 Accept Mine/Theirs/Both · [Save] · Save & Commit · 파일 남기기/지우기 · 머지 주석 자동이 적는다
- Git 탭 메시지 칸에 본문을 미리 채우고, 풀 때마다 새로 채운다(사람이 고치면 두고 커밋 때 붙임)
- 하네스 MergeSaveTest 183건(21건 추가), 22벌 1,094건 통과
확인: 병합 "충돌 해결 26개 · 김승준"(줄 단위 7 · Theirs 15 · 남기기 1 · 지우기 1 · 주석 자동 2),
pull 26개, Accept Mine 기록 뒤 [작업 취소] 로 기록 파일 없음. 줄끝 · BOM 0/33, 회귀 없음.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
제품 코드 변경 없음. doc/web/index.html 이 6차에서 멈춰 있었다.
- 매뉴얼: 창 크기 조절 · 이름 창 잠금 · 폴더 끌어다 놓기 차례 · 작업별 네 칸 제목과 머리 글 ·
MERGED 줄 번호(결과 파일 번호) · pull · rebase · cherry-pick · revert 가 같은 길 · 빈 cherry-pick 안내
- "알아 둘 한계": 7차 · 8차에서 사라진 네 줄을 빼고, 파일 단위 Accept 의 줄끝 · 스냅 한계를 넣음
- 남은 일: 7차에서 고친 것 · 8차에서 고친 것 두 표 + 8차에 남은 것(E-1)
- 숫자: 하네스 22벌 1,073건 · 로컬 커밋 94 · 문서 기준일 2026-09-16
- 발행된 아티팩트도 같은 내용으로 갱신(버전 7)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
MergeHub 코드 변경 없음. 플랫폼 셸 창을 고치고 배포했다(플랫폼 커밋 9baf4b2).
사용자 결정(2026-09-16): 첫 Win+↓ 를 두 번 누르기 복원과 같게 · 덮는 창을 창 가운데로 · 1px 테두리는 그대로.
- 첫 Win+↓ 2400×1350@(266,266)(화면 밖 16px) → 2048×1222@(256,153) = 작업 영역 80% · 가운데
- 이름 창 어긋남: 최대화 창 세로 36px → 0 (보통 크기 창은 그대로 0)
- 스냅은 최소 크기(1280×720 DIP) 때문에 화면 반쪽이 될 수 없다 - 고치지 않고 적어 둠
- 화면 잠금은 재지 않았다(잠그면 사람이 직접 풀어야 해 확인이 멈춘다)
- PlacementTest 37건 통과 · 배포본으로 다시 재서 같은 값
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
제품 코드 변경 없음. 시험 저장소 생성기에서 '상대 쪽 작업' 커밋만 작성자를 박지훈으로 두고
MergeHub 와 git 이 같은 일을 하게 해 견줬다.
- MergeHub cherry-pick: 작성자 박지훈 <jihoon@localhost> · 커밋한 사람 시험 <test@localhost>
- git cherry-pick: 같음
- MergeHub revert: 작성자 · 커밋한 사람 모두 시험
- git revert: 같음
- 이력 목록에도 '상대 쪽 작업 dddd515 · 박지훈' 으로 보인다
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
제품 코드 변경 없음. 시험 저장소 생성기(scratchpad C1Repo)에 feature/revert 갈래를 더해
revert 충돌 16개를 만들고 MergeHub 만으로 [Revert] 부터 커밋까지 갔다.
- 머리 "revert 진행 중" · 끝내기 단추 [커밋] · 네 칸 REMOTE "되돌리는 커밋 c579a81 내 쪽 작업"
- 로그 "101행 Theirs(커밋 c579a81) 반영" · 진행 줄 "충돌 정리 끝 - [커밋] 으로 revert 를 끝냅니다"
- 커밋 acefbcd 'Revert "내 쪽 작업"' 부모 하나 · 워킹트리 Clean · REVERT_HEAD 없음
- 바뀐 파일 36개 · 줄끝 · BOM 바뀐 파일 0 · 충돌 표식 0 · class 이름 검사 0
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
네 칸 MERGED 칸 번호가 정렬할 때 정해진 채 굳어 있었다. 고른 줄 · 머지 주석으로 결과가 늘어도
다시 매기지 않아 끝 번호가 3363 인데 상태바는 총 3369줄이었다.
- 사용자 결정(2026-09-16): 결과 파일 번호로 맞춘다 - 상태바 · [이동] 칸 · 코드 검사와 같은 기준
- MergedNumbering.Assign - 결과에 들어가는 줄만 1부터 센다
- 줄을 만들 때와 요약을 그릴 때마다 다시 매긴다(고르기 · 편집 · 되돌리기 · 주석 끼우기 뒤)
- LOCAL (Mine) 칸은 내 파일 번호 그대로
- 하네스 MergeSaveTest 162건(번호 7건), 18벌 928건 통과
확인: MERGED 끝 번호 3363 → 3369, 상태바 총 3369줄 · [이동] 3369 · 저장된 파일 3369줄과 같다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
이미 들어 있는 커밋을 cherry-pick 하면 [커밋] 이 켜졌고, 누르면 로그에
"[cherry-pick 커밋] 실패: No changes; nothing to commit." 만 남았다. 진행 줄도 그대로였다.
- GitService.HasStagedChanges() 를 두고 적용 로그 · 커밋 앞 막음에 쓴다
- GitWorkspace.PendingHasChanges 를 상태로 들고, 진행 줄이 그 값을 본다
- CanFinishOperation 은 cherry-pick · revert 에서 커밋할 것이 있어야 켜진다
- 병합 커밋은 트리가 같아도 정상이라 걸지 않는다
- 하네스 MergeSaveTest 155건(진행 줄 7건), 18벌 921건 통과
확인: HEAD 커밋을 다시 cherry-pick → [커밋] 꺼짐 · "가져올 변경이 없습니다 - [작업 취소] 로 끝냅니다" ·
[작업 취소] 로 빠져나옴. 충돌 24건짜리 보통 cherry-pick 은 그대로 커밋까지(원래 메시지).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rebase · cherry-pick 에서 마지막 충돌을 [Save] 하면 파일 비교 탭이 "남은 차이 6줄" 로 떨어져
충돌 탭("충돌 정리 끝 - [계속] 으로 rebase 를 이어 갑니다")과 다른 말을 했다.
- OperationLabels.ResolvedSummary / BaseHeader 로 옮기고 작업별 글을 붙였다
- MergeSavePlan 의 병합 전용 함수 둘을 걷어냈다
- 화면은 IsMergeInProgress 대신 IsOperationInProgress · OperationState.Kind 를 본다
- 하네스 MergeSaveTest 148건(작업별 16건), 18벌 914건 통과
확인: rebase "충돌 정리 끝 · [계속] 으로 rebase 를 이어 갑니다 · 올릴 자리 대비 올린 변경 6줄" · 제목 "올릴 자리",
cherry-pick "… [커밋] 으로 cherry-pick 을 끝냅니다", 병합은 예전 글 그대로.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
파일 비교 탭을 처음 여는 것이 [3분할로 열기] 면 고른 파일 대신 첫 충돌 파일이 보였고,
그 화면을 [Save] 하면 고른 파일에 그 내용이 써졌다(Unit47 이 Unit15 내용으로 스테이징).
- 읽기: 읽는 사이 파일 · 커밋이 바뀌면 버리고, 화면이 지금 고른 파일과 다르면 한 번 더 읽는다
- 쓰기: 저장 · Save & Commit · 파일 지우기/남기기가 화면에 실린 파일과 다르면 아무것도 쓰지 않는다
- 하네스 MergeSaveTest 15건 추가(140건), 18벌 906건 통과
확인: 병합 · pull · rebase · cherry-pick 네 길 모두 고른 파일이 열리고 저장이 그 파일에만 감.
병합은 파일 비교 탭을 미리 열지 않고 끝까지 - 커밋 3ba6314, 줄끝 · BOM 0/33, class 이름 검사 0.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>