Ubisam-MergeTool/doc/진행상황.md
ksj09406 2d3201cda0 8차 B-3: MERGED 칸 줄 번호를 결과 파일 번호로
네 칸 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>
2026-09-16 14:47:23 +09:00

15 KiB
Raw Blame History

MergeHub 진행 상황

지금 무엇이 남았는지만 적는다. 끝난 것의 상세는 history/ 로 옮겼다.

항목을 끝내면 이렇게 한다.

  1. 상세는 history/YYYY-MM-DD-주제.md 에 적는다.
  2. 이 파일은 대기 → 완료로 상태만 고친다.
  3. history/changelog.md 에 한 줄을 더한다 (날짜 · 무엇을 왜 · 커밋).

푸시는 하지 않는다 — 사내 Gitea 저장소가 만들어지면 그때 한 번에 올린다. 상태 표기: 대기 · 진행 · 완료


4차 — 로컬 머지툴 사용성 (2026-09-10) — 전부 끝

진행 기록: history/2026-09-10-4차.md 지시서: 작업지시/4차.md. 기능을 늘리는 것이 아니라 매일 쓰는 사람의 걸림돌을 없애는 것이 목적이다.

A. 작업한 것이 사라지는 문제

상태 항목
완료 A-1 저장하지 않은 편집이 말없이 사라진다
완료 A-2 내보낸 보고서에 만든 사람이 없다

B. 매일 쓰는 마찰 줄이기

상태 항목
완료 B-1 최근 비교 목록
취소 B-2 같은 줄 접기 (2026-09-10 사용자 판단으로 뺌)
완료 B-3 폴더 비교에서 다음 다른 파일로
취소 B-4 외부 편집기로 열기 (2026-09-10 사용자 판단으로 뺌)

C. 화면 구성 정리

상태 항목
완료 C-1 같은 경로가 세 군데 나온다
완료 C-2 아래쪽 정보가 세 군데로 흩어져 있다
완료 C-3 Git 탭의 원격 블록을 접는다
완료 C-4 색 구분 범례를 이동 도구로
완료 C-5 ACTIONS 칸을 자주 쓰는 것과 한 번 정하는 것으로 나눈다

D. 변경 이력을 전용 폴더로

상태 항목
완료 D-1 doc/history/ 를 만들고 진행상황을 나눈다
완료 D-2 앞으로의 기록 규칙을 정한다

5차 — 실제 소스에 맞추기 (2026-09-10 ~)

진행 기록: history/2026-09-11-5차.md 지시서: 작업지시/5차.md. 지금까지는 시험용 파일로만 확인했다. 5차는 실제 소스(2,115개 · 426,723줄)를 한 번 재 보고 나온 것들이다. 2026-09-11 부터는 실제 소스를 더 보지 않는다 - 여기는 머지툴을 만드는 자리이고, 시험 재료는 우리가 만들어 쓴다. 이미 받아 둔 숫자는 그대로 쓴다.

A. 남의 소스를 망가뜨릴 수 있는 것

상태 항목
완료 A-1 CP949 파일 67개를 잘못 읽으면 한글이 깨진다
완료 A-2 커밋·체크아웃 뒤에 저장 안 한 편집이 조용히 사라진다

B. 실제 소스에 맞추기

상태 항목
완료 B-1 XAML 색칠이 사실상 없다 (400개 · 42,477줄)
완료 B-2 폴더 비교가 오래 걸린다 — 전체 비교 3.4배 · 빠른 비교 4.7배

C. 실전 투입

상태 항목
완료 C-1 병합을 한 번 끝까지 해 본다 — 커밋까지 갔다. 걸린 것 23가지(심각 5)가 6차 재료

6차 — 병합을 끝까지 믿고 쓸 수 있게 (2026-09-14 ~)

진행 기록: history/2026-09-14-6차.md 지시서: 작업지시/6차.md. 5차 C-1 에서 만든 저장소로 병합을 끝까지 해 보고 걸린 23가지다. 확인은 같은 저장소(C1Repo)로 한다. 실제 소스는 열지 않는다.

A. 파일이나 이력을 망가뜨리는 것

상태 항목
완료 A-1 3분할로 푼 파일을 저장하면 CRLF 가 LF 로 바뀐다 — 내 쪽(ours) 파일의 줄끝·인코딩을 따른다
완료 A-2 Save & Commit 이 "실패" 라는데 파일은 이미 써지고 스테이징됐다 — [해결로 저장] 을 따로 둠
완료 A-3 충돌 파일을 고르면 상대(Theirs) 칸이 안 나온다 — 콤보를 안 건드려도 네 칸, REMOTE 제목에 상대 브랜치
완료 A-4 상대가 지운 파일을 3분할이 다룰 줄 모른다 — 남은 파일을 두 칸으로, [파일 남기기] · [파일 지우기] 띠
완료 A-5 양쪽 새 파일에 Accept Both 를 누르면 빌드가 깨진다 — 누르기 전에 묻고, 글로 이어 붙여 BOM 한 번 · 줄끝 한 가지

B. 헷갈리거나 막히는 것

상태 항목
완료 B-1 충돌 목록에서 3분할 화면까지 가는 길이 끊겨 있다 — 병합 뒤 목록이 바로 서고, 두 번 누르기·Enter·[3분할로 열기]
완료 B-2 확인 창이 엉뚱한 파일 이름을 댄다 — 이름·[저장하고 계속] 모두 실린 파일 기준, [취소] 뒤 콤보도 돌아온다
완료 B-3 커밋 메시지가 엉뚱하게 남는다 — 기본값 Merge branch '상대' into 내 브랜치, # 줄 뺌, 병합이 끝나면 칸을 비움
완료 B-4 MERGED 칸 줄 번호가 네 자리에서 잘린다 — 네 칸 여백을 66px 로, MERGED 번호 자리 20 → 36px(다섯 자리)
완료 B-4 확인 중 발견 두 건 — 멀리 건너뛰면 네 칸이 위로 밀려 아래가 빔 · git mergetool 세 벌이 두 칸으로 열림
완료 B-5 머지 주석은 소스에 넣고, 병합 뒤에는 그 줄을 무시한다 — 비교(두 칸 · 네 칸 · 폴더)에서 가리고, 주석만 다른 git 충돌은 양쪽 주석을 남겨 자동으로 푼다. 설정에서 끔
완료 B-6 충돌 탭에서 하나씩 누를 때마다 오래 기다린다 — 여러 개 골라 Accept 한 번, 다시 읽기는 끝에 한 번. 15개 22.0초 → 1.2초
완료 B-7 상태바가 병합 중에 믿을 수 없는 값을 보인다 — 인코딩 · 줄바꿈을 내 쪽(ours) 파일로, 요약에 "남은 충돌 N개 · 받을 변경 M줄"
완료 B-8 병합 커밋 뒤 파일 비교 탭이 어정쩡하게 남는다 — 다시 나지 않음(두 흐름 확인, B-1 · A-3 에서 없어짐). 코드 변경 없음

E. 추가 요청 (2026-09-14)

상태 항목
완료 E-1 C# 코드 스타일 맞춤 (AURORA · Allman) — 비교 전에 중괄호 줄바꿈을 맞춤. 두 칸 · 네 칸 · 폴더 비교, 설정. 스타일만 다른 파일 남은 차이 39줄 → 1줄
완료 E-2 발표 시연 재료 demo\ — make-demo.ps1 한 번으로 폴더 비교 · 스타일 · mergetool · 큰 파일 · 병합 저장소
완료 E-3 웹 문서 — 사용자 매뉴얼 · 발표 자료 · 남은 일 · 개발 현황 · 기획안 최신화 · 시연 대본 · WinMerge 비교

C. 사소한 것

상태 항목
완료 C-1 로그와 목록 다듬기 — 결과 로그 한 번, 목록에 충돌 종류 네 가지, "남은 충돌 N개 · 푼 것 M개 (M/전체)". CP949 로그 이름은 이미 고쳐져 있었음

D. 확인

상태 항목
완료 D-1 병합을 처음부터 다시 끝까지 해 본다 — 충돌 26(자동 2)을 MergeHub 만으로 풀어 병합 커밋. 줄끝 · BOM 이 바뀐 파일 0/33, A 다섯 가지 다시 안 남. 23가지 중 사라짐 18 · 정해서 남음 1(머지 주석)

6차 전부 끝. D-1 에서 새로 걸린 세 가지는 7차 재료다(고치지 않음).

  • N1 3분할에서 고른 줄 로그가 "N행 (3-Way 안 씀) 반영"
  • N2 마지막 [Save](옛 이름 해결로 저장) 뒤 병합 중인데 두 칸 · "남은 차이 3줄" 로 떨어짐
  • N3 병합 커밋 뒤 .git/MERGEHUB_CONFLICTS 가 남음

7차 — 병합 화면이 사실대로 말하게 · 병합 말고 다른 충돌 길 (2026-09-14 ~)

진행 기록: history/2026-09-14-7차.md 지시서: 작업지시/7차.md. 6차 D-1 에서 새로 걸린 세 가지와, 6차에서 뺀 pull · rebase · cherry-pick 충돌.

A. 병합 화면이 사실과 다르게 말하는 것

상태 항목
완료 A-1 마지막 충돌을 저장하면 "남은 차이" 가 뜬다 — 병합 중 충돌 0 이면 "충돌 정리 끝 · 병합 커밋을 할 수 있습니다 · 내 쪽 대비 받은 변경 N줄", 제목에 "병합 전 내 쪽"
완료 A-2 3분할에서 줄을 골라도 로그는 "3-Way 안 씀" 이라고 한다 — 로그 "10행 Theirs(feature/theirs) 반영" · "Mine(feature/mine) 으로 정함", 충돌 네 칸 머리는 콤보 대신 "병합 충돌 · REMOTE = 상대"

B. 치우기

상태 항목
완료 B-1 병합 커밋 뒤에도 .git/MERGEHUB_CONFLICTS 가 남는다 — 병합 커밋 · 작업 취소 직후와 새로고침마다 쓸모없어진 목록을 지움(터미널에서 끝낸 병합 포함). 병합 중에는 그대로

C. 병합 말고 다른 충돌 길

상태 항목
완료 C-1 pull 이 낸 충돌에는 머지 주석 자동 풀기가 안 걸린다 — pull 도 [Merge] 와 같은 뒷일(주석 자동 풀기 · 알림 · 진행 줄), 커밋 메시지 "Merge remote-tracking branch 'origin/…' into …"
완료 C-2 rebase · cherry-pick 충돌을 네 칸으로 끝까지 — 작업별 칸 제목(올릴 자리 · 다시 올리는 내 커밋 · 가져오는 커밋) · 진행 표시 · 끝내기 단추(병합 커밋 · 계속 · 커밋) · 원래 메시지, 이력 [모든 브랜치]. 두 길 모두 줄끝 바뀐 파일 0

D. 확인

상태 항목
완료 D-1 네 길(병합 · pull · rebase · cherry-pick)을 처음부터 다시 끝까지 — 모두 MergeHub 만으로 커밋(rebase 끝)까지, 줄끝 · BOM 바뀐 파일 0. A-2 · B-1 다시 안 남, A-1 은 rebase · cherry-pick 에서 다시 남. MERGED 줄 번호 안 잘림. 새로 걸린 넷(N1 고른 파일 대신 다른 파일 내용이 저장됨 · N2 · N3 · N4)은 8차 재료(고치지 않음)

E. 추가 요청

상태 항목
완료 E-1 [해결로 저장] 이름을 [Save] 로 — 하는 일은 그대로, 알림 · 안내 · 웹 문서 이름도
완료 E-2 폴더 비교 탭에 폴더를 하나씩 끌어다 놓으면 첫 칸 → 둘째 칸 차례로 (경로 칸 위가 아니어도) — 양쪽이 차면 바로 비교, 칸 위에 놓은 것도 차례에 침
완료 E-3 사용자 이름을 저장하기 전에는 화면을 쓸 수 없게 — 이름 창이 끌어도 안 움직이고 저장 없이 닫히지 않음(플랫폼, 배포함)
완료 E-4 창 크기를 마음대로 조절할 수 있게 — 끌어 크기 조절(최소 1280×720) · 두 번 누르기 최대화 ↔ 복원 · 화면 이동이 크기를 지킴 · 크기 · 모니터 기억. 최대화는 작업 표시줄까지 덮고(사용자 결정) 크기를 바꿀 때 깜빡이지 않음(검은 칠 99.7% → 3%). 플랫폼, 배포함. MergeHub 네 탭 최소 크기에서 안 잘림

7차 전부 끝. D-1 에서 새로 걸린 넷은 8차 재료다(고치지 않음). 웹 문서 갱신도 8차로 넘겼다.

  • N1 파일 비교 탭을 처음 여는 것이 [3분할로 열기] 면 첫 충돌 파일이 보이고, 그 화면을 [Save] 하면 고른 파일에 그 내용이 써짐
  • N2 rebase · cherry-pick 마지막 [Save] 뒤 "남은 차이 3줄"(A-1 은 병합만)
  • N3 MERGED 칸 번호가 결과 파일 번호가 아님(3363 · 상태바 3366)
  • N4 바뀌는 것 없는 cherry-pick 에서 [커밋] 이 켜지고 누르면 실패

8차 — 고른 파일에 고른 내용을 · 작업마다 화면이 사실대로 (2026-09-15 ~)

진행 기록: history/2026-09-16-8차.md 지시서: 작업지시/8차.md. 7차 D-1 에서 새로 걸린 넷과 7차에서 남긴 것(revert · 원래 작성자 · 창 크기의 안 본 곳) · 웹 문서.

A. 사용자의 파일을 망가뜨리는 것

상태 항목
완료 A-1 고른 충돌 파일 대신 다른 파일이 보이고, 그 화면을 저장하면 고른 파일에 써진다 — 늦게 끝난 읽기를 버리고 다시 읽음, 화면에 실린 파일과 저장할 파일이 다르면 쓰지 않음. 네 길 모두 고른 파일이 열리고 저장이 그 파일에만 감

B. 작업마다 화면이 사실대로 말하게

상태 항목
완료 B-1 rebase · cherry-pick 에서 마지막 저장 뒤 "남은 차이" 가 뜬다 — 요약 · BASE 제목이 작업(병합 · rebase · cherry-pick · revert)을 따른다. rebase 는 "충돌 정리 끝 · [계속] 으로 rebase 를 이어 갑니다 · 올릴 자리 대비 올린 변경 N줄" · 제목 "올릴 자리". 병합 글은 그대로
완료 B-2 바뀌는 것 없는 cherry-pick 에서 [커밋] 이 켜지고 누르면 실패한다 — 커밋할 것이 없으면 [커밋] 이 꺼지고 진행 줄 · 로그가 "가져올 변경이 없습니다 - [작업 취소] 로 끝냅니다". 병합 커밋은 그대로(트리가 같아도 정상). --allow-empty 는 사용자와 정한 뒤
완료 B-3 MERGED 칸 줄 번호가 결과 파일 번호가 아니다 — 사용자가 "결과 파일 번호로" 를 고름(2026-09-16). 결과에 들어가는 줄만 1부터 다시 매긴다. 끝 번호 3363 → 3369 로 상태바 · [이동] 칸 · 저장된 파일(3369줄)과 같아짐

C. 7차에서 남긴 것

상태 항목
대기 C-1 revert 충돌을 화면으로 끝까지
대기 C-2 cherry-pick 이 원래 작성자를 남기는지 눈으로
대기 C-3 창 크기 조절에서 안 본 것 — 스냅 · 첫 Win+↓ 크기 · 덮는 창 가운데 · 1px 테두리 (플랫폼)

D. 문서

상태 항목
대기 D-1 웹 문서를 7차 · 8차에 맞게 ("알아 둘 한계" 포함)

E. 확인

상태 항목
대기 E-1 네 길(+ revert)을 사람 순서 그대로 다시 끝까지 — 파일 비교 탭을 미리 열지 않고

3~4주차로 미룬 것

디테일이라 지금 붙잡을 일이 아니다.

  • 로그인·권한
  • 대용량 파일 성능 — 잴 필요가 없어졌다(2026-09-10). 실제 소스의 가장 큰 파일이 7,479줄이고 편집·이동·재정렬이 모두 빠르다
  • 같은 줄 접기 (4차 B-2) — 차이 이동만으로 부족하다고 느끼는 순간이 오면 그때
  • 외부 편집기로 열기 (4차 B-4) — 설정 값 두 개를 채우는 수고가 얻는 것보다 컸다

드래그&드롭(D-7)과 비교 결과 내보내기(D-6)는 3차에서 앞당겨 끝냈다.


지난 기록

날짜 문서
2026-09-10 4차 — 로컬 머지툴 사용성 — 열세 항목, 열하나 완료 · 둘 취소
2026-09-09 3차 — 버그 정리 + 기능 확장 — 스물세 항목, 전부 끝
2026-09-08 2주차 — 폭 넓히기 — 기능 덩어리 ①~⑤

한 줄 요약은 history/changelog.md 에 있다.