9차 C-1: 웹 문서를 8차 끝 · 9차에 맞게

웹 문서가 8차 D-1(E-1 · F-1 전)에서, "지금까지 만든 것" 은 6차에서 멈춰 있었다.

- 개요: 22벌 1,122건 · 커밋 104 · 8차 끝 · 9차 진행 · 다섯 길
- 매뉴얼: 병합 커밋 본문 해결 내역(예시 포함) · 해결 기록이 남는 곳 · 마지막 저장 뒤 기준 HEAD
  · 모든 브랜치에서도 고른 커밋 유지 · 넣은 주석 줄 무시 색 · 알아 둘 한계 넷
- 남은 일: 8차 D-1 · F-1 · E-1, 9차에서 고친 것, 9차에 남은 것, 정해서 두지 않는 것
- 지금까지 만든 것: 7~9차 기록 · 하네스 막대 · 기능 목록

확인: 화면 문구 앱 소스 grep 대조, 옛 숫자 0건, 태그 짝 맞음, 아티팩트 버전 9.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
김승준 2026-09-17 13:02:21 +09:00
parent bd56c48f4c
commit 188760d70b
4 changed files with 106 additions and 29 deletions

View File

@ -194,3 +194,30 @@
- **그날 첫 비교는 9.2초**였다(데운 뒤 0.7초의 13배). 4,500개 파일을 디스크에서 처음 읽는 값으로 보인다(디스크 캐시 · 백신 검사). 한 번 잰 값이고 원인은 가려 보지 않았다.
사람이 처음 비교할 때 겪는 시간은 이쪽이다.
## C-1. 웹 문서를 8차 끝 · 9차에 맞게 (2026-09-17, 완료)
`doc\web\index.html` 은 8차 D-1(E-1 · F-1 전)에서 멈춰 있었고, "지금까지 만든 것" 쪽은 6차에서 멈춰 있었다. 지난 기록 쪽(6차 표 · 발표 슬라이드)은 그때 이름 그대로 두었다.
### 고친 것
| 자리 | 고친 것 |
|---|---|
| 머리글 · 개요 | "2026-09-17 기준" · 하네스 **22벌 · 1,122건**(1,073건에서) · "8차 끝 · 9차 진행 · 다섯 길 줄끝 바뀐 파일 0" · 로컬 커밋 **104**(94에서, 이 기록 커밋 포함) · 출처 `작업지시/9차.md` |
| 매뉴얼 · 병합 충돌 푸는 순서 | 병합 커밋 본문이 저절로 붙는다는 말 · 마지막 저장 뒤 두 칸 기준이 HEAD 로 옮겨지고 작업별 요약(병합 · rebase · cherry-pick · revert) · 다른 커밋을 고르면 보통 요약 · 커밋하면 새 HEAD 로 |
| 매뉴얼 · 새 절 "충돌을 어떻게 풀었는지 어디에 남나" | 소스(머지 주석) · 병합 커밋 본문(8차 F-1) · Git 탭 로그 표, 본문 예시(E-1 병합의 갈래별 건수 26개), cherry-pick · revert · rebase 는 본문 없음 · 30개 넘으면 줄임. 목차에 "해결 기록이 남는 곳" |
| 매뉴얼 · Git 탭 이력 · 머지 주석 | 모든 브랜치에서 목록 순서가 바뀌어도 고른 커밋 그대로(9차 A-2) · 반영하며 넣은 주석 줄도 처음부터 무시 색 · Mine 칸 빈 자리(9차 B-1) |
| 매뉴얼 · 알아 둘 한계 | 더함: 본문 해결 내역은 MergeHub 에서 푼 충돌만 · 그날 첫 큰 폴더 비교 9.2초(9차 B-2) · Git 탭에서 고른 커밋을 파일 비교 탭이 새로고침 전까지 안 따라옴(9차 A-1) · 머지 주석 무시를 끈 채 다시 정렬하면 반영 색이 옆 줄로(9차 B-1) |
| 남은 일 | 머리말 "8차까지 끝 · 9차 A · B 끝" · 8차 표에 D-1 · F-1 · E-1 · 새 표 "9차에서 고친 것"(A-1 · A-2 · B-1 · B-2) · "8차에 남은 것" → "9차에 남은 것"(D-1) + "정해서 두지 않는 것"(빈 cherry-pick 커밋 · 스타일 맞춤 선택지 · 반쪽 스냅 · 1px 테두리) |
| 지금까지 만든 것 | 머리말 · 숫자(커밋 104 · 1,122건) · 차수별 기록에 7차 · 8차 · 9차 · 하네스 막대에 8차 1,094 · 9차 진행 1,122(7차는 따로 적지 않아 뺐다, 막대 폭 다시 계산) · 기능 목록 Git 에 병합 커밋 본문 |
| 비교 표(WinMerge) | "22벌 1,073건" → 1,122건 |
### 확인한 것
- **화면 문구와 대조**(앱 소스 grep): "충돌 정리 끝" · "병합 커밋을 할 수 있습니다" · "으로 rebase 를 이어 갑니다" · "올릴 자리 대비 올린 변경" · "내 쪽 대비 가져온 / 되돌린 / 받은 변경" · 본문 갈래 이름 7가지(`MergeResolutionLog.Label`) · "새로고침" · "3분할로 열기" · "Selected Commit" 모두 소스에 있다.
- 옛 숫자 · 옛말이 남지 않았다: "1,073" · "7차 끝 · 8차 진행" · "8차에 남은 것" 0건.
- 태그 짝: section 26/26 · div 195/195 · table 28/28 · ul 36/36 · ol 11/11 · li 200/200 · tr 223/223 · td 538/538 · pre 11/11 · code 71/71 · h2 37/37 · h3 26/26. 제어 문자 0.
- 발행: 같은 주소의 아티팩트를 **버전 9** 로 갱신했다(먼저 발행본을 읽어 저장소의 직전 파일과 같은지 대조 — 게시용 겉틀만 달랐다 — 뒤 버전 8 로 올리고, 머리글 날짜를 고쳐 9). 저장소의 `doc/web/index.html` 과 같은 파일이다.
- 로컬 파일은 브라우저 창에서 스크립트로 넘길 수 없어 미리 보기는 하지 않았다.
제품 코드는 바꾸지 않았다.

View File

@ -8,6 +8,7 @@
| 날짜 | 항목 | 커밋 |
|---|---|---|
| 2026-09-17 | **9차 C-1** — 웹 문서가 8차 D-1(E-1 · F-1 전)에서, "지금까지 만든 것" 은 6차에서 멈춰 있었다. 개요 숫자(22벌 1,122건 · 커밋 104), 매뉴얼에 병합 커밋 본문 해결 내역 · 해결 기록이 남는 곳 · 마지막 저장 뒤 기준 HEAD · 한계 넷, 남은 일에 8차 끝 · 9차 표, 지금까지 만든 것 7~9차. 화면 문구 grep 대조 · 태그 짝 맞음. 아티팩트 버전 9. 제품 코드 변경 없음 | 아래 |
| 2026-09-17 | **9차 B-2** — 5차에 "폴더 비교 뒤 트리를 세우는 데 1초 남짓" 으로 적어 둔 것을 앱 안 임시 측정(잰 뒤 되돌림)으로 단계별로 쟀다. 4,500개 묶음에서 트리 만들기 5~17ms · 첫 화면까지 0.13초(필터 전체 0.24초), 비교는 데운 뒤 0.7초. 5차 값은 자동 조작 대기가 섞였다. 줄일 자리가 없어 고치지 않음(코드 변경 없음). 그날 첫 비교 9.2초는 적어 둠 | 아래 |
| 2026-09-17 | **9차 B-1** — 네 칸에서 줄을 반영하며 넣은 머지 주석 줄이 넣는 순간 "추가"(파랑)였다가 다시 정렬하면 "무시"(회색)로 바뀌었고, LOCAL(Mine) 칸에 내 파일에 없는 주석 글이 보였다. 사용자 결정대로 넣는 순간부터 다시 정렬한 모양(규칙 켜짐이면 무시 · Mine 빈 자리)으로 넣는다. 파일에 원래 있던 주석 줄과 같은 색. 하네스 NoteTest +5 | 아래 |
| 2026-09-17 | **9차 A-2** — 8차 E-1 에서 한 번 다른 브랜치 커밋이 기준으로 잡힌 것은 A-1 과 뿌리가 같았다(선택을 놓치면 목록 맨 위). 해시만 지키자 cherry-pick [커밋] 뒤 선택이 옛 HEAD 에 남아 방금 커밋한 줄이 "남은 차이 6줄" 로 보여, **HEAD 를 보고 있었으면 커밋 · 체크아웃 뒤 새 HEAD 를 따라가게** 함께 고침. 같은 순서 여섯 번 모두 규칙대로. 하네스 +5 | 아래 |

View File

@ -217,7 +217,7 @@ figcaption{font-size:.82rem;color:var(--ink-3);margin-top:6px}
<header class="top">
<div class="top-in">
<a class="brand" href="#home"><b>MergeHub</b><span>사내 머지툴 문서 · 2026-09-16 기준</span></a>
<a class="brand" href="#home"><b>MergeHub</b><span>사내 머지툴 문서 · 2026-09-17 기준</span></a>
<nav class="nav" aria-label="문서">
<a href="#home">개요</a>
<a href="#manual">사용자 매뉴얼</a>
@ -240,7 +240,7 @@ figcaption{font-size:.82rem;color:var(--ink-3);margin-top:6px}
<div class="eyebrow">UbiSam 사내 Git 머지 · 비교 도구</div>
<h1>MergeHub 문서</h1>
<p class="lede">UbisamBase 셸 위에서 도는 플러그인(.NET Framework 4.8 · WPF)이다. 폴더 비교에서 다른 파일을 찾고, 파일 비교에서 줄을 골라 반영하고, Git 탭에서 병합과 커밋까지 끝낸다. 이 페이지는 매뉴얼 · 발표 · 진행 기록 · 기획안 · 시연 대본 · WinMerge 비교를 한곳에 모았다.</p>
<p class="small muted">숫자는 모두 <code>doc/진행상황.md</code> · <code>doc/history/*.md</code> · <code>doc/작업지시/8차.md</code> 에서 옮겼다. 시험은 실제 소스가 아니라 직접 만든 저장소로 했다(2026-09-11 결정).</p>
<p class="small muted">숫자는 모두 <code>doc/진행상황.md</code> · <code>doc/history/*.md</code> · <code>doc/작업지시/9차.md</code> 에서 옮겼다. 시험은 실제 소스가 아니라 직접 만든 저장소로 했다(2026-09-11 결정).</p>
</div>
<div class="diffcard" aria-label="머지 주석이 들어간 줄 예시">
<div class="hd"><span>MERGED · WeldController.cs</span><span>남은 충돌 1</span></div>
@ -256,17 +256,17 @@ figcaption{font-size:.82rem;color:var(--ink-3);margin-top:6px}
</div>
<div class="facts">
<div><b>22벌 · 1,073건</b><span>검사 하네스 전부 통과</span></div>
<div><b>7차 끝 · 8차 진행</b><span>네 길(병합 · pull · rebase · cherry-pick) 줄끝 바뀐 파일 0</span></div>
<div><b>94</b><span>MergeHub 로컬 커밋 (푸시 0)</span></div>
<div><b>22벌 · 1,122건</b><span>검사 하네스 전부 통과</span></div>
<div><b>8차 끝 · 9차 진행</b><span>다섯 길(병합 · pull · rebase · cherry-pick · revert) 줄끝 바뀐 파일 0</span></div>
<div><b>104</b><span>MergeHub 로컬 커밋 (푸시 0)</span></div>
<div><b>26 → 24</b><span>만든 저장소 병합 충돌 (주석만 다른 2건 자동 해결)</span></div>
</div>
<div class="cards">
<a class="card" href="#manual"><b>사용자 매뉴얼</b><span>탭 네 개 사용법, 병합 충돌 푸는 순서, 단축키, 설정</span></a>
<a class="card" href="#slides"><b>발표 자료</b><span>18장. ←/→ 로 넘기고 전체 화면으로 띄운다</span></a>
<a class="card" href="#roadmap"><b>남은 일</b><span>7차 · 8차에서 고친 것, 아직 남은 것, 미룬 것</span></a>
<a class="card" href="#status"><b>지금까지 만든 것</b><span>09-07 ~ 09-16 차수별 기록과 기능 목록</span></a>
<a class="card" href="#roadmap"><b>남은 일</b><span>7차 · 8차 · 9차에서 고친 것, 아직 남은 것, 미룬 것</span></a>
<a class="card" href="#status"><b>지금까지 만든 것</b><span>09-07 ~ 09-17 차수별 기록과 기능 목록</span></a>
<a class="card" href="#plan"><b>기획안 v2</b><span>09-03 기획안(v1.1)의 틀에 실제로 만든 것과 바뀐 것을 채움</span></a>
<a class="card" href="#demo"><b>시연 대본</b><span>demo 폴더 구성과 10분 시연 순서</span></a>
<a class="card" href="#winmerge"><b>WinMerge 와 차이</b><span>기능 표, MergeHub 가 필요한 이유, WinMerge 가 나은 점</span></a>
@ -458,7 +458,7 @@ UbisamBase.Shell.exe <span class="k">--merge --base</span> B.cs <span class="k">
<tr><td>브랜치 · 병합</td><td><span class="btn-label">체크아웃</span> <span class="btn-label">Merge → 현재 브랜치로</span> <span class="btn-label">브랜치 삭제</span> · 새 브랜치 <span class="btn-label">생성 + 체크아웃</span>(선택 커밋에서 분기) · <span class="btn-label">선택 브랜치 위로 rebase</span> <span class="btn-label">계속</span> <span class="btn-label">중단</span></td></tr>
<tr><td>충돌</td><td>충돌 파일 목록(종류 · 푼 개수) · <span class="btn-label">3분할로 열기</span> <span class="btn-label">Accept Mine</span> <span class="btn-label">Accept Theirs</span> <span class="btn-label">Accept Both</span> · 끝내기 단추는 작업에 따라 <span class="btn-label">병합 커밋</span> · <span class="btn-label">계속</span> · <span class="btn-label">커밋</span></td></tr>
<tr><td>변경 · 커밋</td><td><span class="btn-label">스테이징</span> <span class="btn-label">언스테이징</span> <span class="btn-label">변경 취소</span> <span class="btn-label">전체 스테이징</span> <span class="btn-label">stash 저장</span> <span class="btn-label">blame</span> · stash 목록 <span class="btn-label">적용</span> <span class="btn-label">삭제</span> · 커밋 메시지 <span class="btn-label">마지막 메시지</span> <span class="btn-label">커밋</span> <span class="btn-label">커밋 수정</span>(amend, 푸시 전에만)</td></tr>
<tr><td>이력</td><td>커밋 그래프 · <span class="btn-label">모든 브랜치</span>(다른 브랜치 커밋까지 보임) · 선택 커밋 → <span class="btn-label">Revert</span> <span class="btn-label">Cherry-pick</span> <span class="btn-label">Reset</span> · <span class="btn-label">여기부터</span>(두 커밋 사이 비교) <span class="btn-label">해제</span> · <span class="btn-label">변경분 추출</span>(바뀐 파일만 폴더로, 바이트 그대로)</td></tr>
<tr><td>이력</td><td>커밋 그래프 · <span class="btn-label">모든 브랜치</span>(다른 브랜치 커밋까지 보임. 목록 순서가 바뀌어도 고른 커밋은 그대로) · 선택 커밋 → <span class="btn-label">Revert</span> <span class="btn-label">Cherry-pick</span> <span class="btn-label">Reset</span> · <span class="btn-label">여기부터</span>(두 커밋 사이 비교) <span class="btn-label">해제</span> · <span class="btn-label">변경분 추출</span>(바뀐 파일만 폴더로, 바이트 그대로)</td></tr>
<tr><td>Blame</td><td>파일 경로 → <span class="btn-label">실행</span>. 줄마다 커밋 · 날짜 · 작성자. 이력에서 커밋을 골라 두면 그 시점 기준</td></tr>
<tr><td>태그 · 서브모듈</td><td>태그 <span class="btn-label">생성</span>(메시지를 넣으면 annotated) <span class="btn-label">선택 태그 삭제</span> · <span class="btn-label">서브모듈 업데이트 (--init)</span></td></tr>
</table></div>
@ -473,15 +473,40 @@ UbisamBase.Shell.exe <span class="k">--merge --base</span> B.cs <span class="k">
<li><span class="btn-label">Save</span> (<kbd>Ctrl</kbd>+<kbd>S</kbd>) — 이 파일만 쓰고 스테이징한다. 커밋은 안 한다. 줄끝 · 인코딩은 내 쪽(ours) 파일을 따른다.</li>
<li>한쪽이 지운 파일은 네 칸 대신 두 칸과 띠가 나온다. <span class="btn-label">파일 남기기</span> 또는 <span class="btn-label">파일 지우기</span>.</li>
<li>줄마다 볼 필요가 없는 파일은 충돌 탭에서 <span class="btn-label">Accept Mine</span> / <span class="btn-label">Accept Theirs</span>. 여러 파일을 <kbd>Ctrl</kbd>/<kbd>Shift</kbd> 클릭(<kbd>Ctrl</kbd>+<kbd>A</kbd> 전부)으로 골라 한 번에 적용한다 — 단추 옆에 “N개 고름” 이 뜨고, 저장소 다시 읽기는 끝에 한 번이다. <span class="btn-label">Accept Both</span> 는 두 파일을 통째로 이어 붙이므로 누르면 먼저 묻는다.</li>
<li>남은 충돌이 0 이 되면 <span class="btn-label">병합 커밋</span>. 메시지 기본값은 <code>Merge branch '상대' into 내 브랜치</code> 이고 git 의 <code>#</code> 줄은 빠진다.</li>
<li>남은 충돌이 0 이 되면 <span class="btn-label">병합 커밋</span>. 메시지 기본값은 <code>Merge branch '상대' into 내 브랜치</code> 이고 git 의 <code>#</code> 줄은 빠진다. 그 아래 본문에 <b>충돌을 어떻게 풀었는지</b>가 저절로 붙는다(아래).</li>
</ol>
<div class="callout warn"><p>남은 충돌이 있는데 <span class="btn-label">Save &amp; Commit</span> 을 누르면 아무것도 쓰지 않고 막는다. 병합 중에는 파일 단위로 <span class="btn-label">Save</span> 를 쓴다.</p></div>
<p>마지막 충돌을 저장하면 파일 비교 탭은 두 칸으로 돌아가고 <b>기준(BASE)이 HEAD</b> 로 옮겨진다. 요약은 충돌 탭과 같은 말을 한다 — 병합 “충돌 정리 끝 · 병합 커밋을 할 수 있습니다 · 내 쪽 대비 받은 변경 N줄”, rebase “… [계속] 으로 rebase 를 이어 갑니다 · 올릴 자리 대비 올린 변경 N줄”, cherry-pick · revert “… [커밋] 으로 끝냅니다 · 내 쪽 대비 가져온 / 되돌린 변경 N줄”. 이력에서 다른 커밋을 골라 보면 그 커밋과 견주는 보통 요약으로 바뀐다. 커밋하면 기준이 새 HEAD 를 따라가 “차이 없음” 이 된다.</p>
<h3 id="m-record">충돌을 어떻게 풀었는지 어디에 남나</h3>
<div class="tbl"><table>
<tr><th>어디</th><th>남는 것</th></tr>
<tr><td>소스</td><td>네 칸에서 줄을 고르면 그 줄 위에 <code>// [이름] 날짜</code> (머지 주석). 파일 단위 Accept 는 고른 쪽 파일을 그대로 써서 주석이 없다</td></tr>
<tr><td>병합 커밋 본문</td><td>병합 · pull 에서 푼 파일을 방법별로 — 줄 단위 · Accept Mine · Accept Theirs · Accept Both · 파일 남기기 · 파일 지우기 · 머지 주석 자동. 첫 줄은 “충돌 해결 N개 · 이름”. 앱을 껐다 켜도 이어서 적히고, 메시지 칸에서 지워도 커밋할 때 다시 붙는다</td></tr>
<tr><td>Git 탭 로그</td><td>“충돌 해결(Theirs): 경로” · “101행 Theirs(feature/theirs) 반영” — 화면에만 있고 끄면 사라진다</td></tr>
</table></div>
<pre>Merge branch 'feature/theirs' into feature/mine
충돌 해결 26개 · 김승준
줄 단위 (파일 비교에서 골라 Save) 7
Common/Util/Unit47.cs
…
Accept Theirs (상대 쪽 파일 그대로) 15
Io/Unit10.cs
…
파일 남기기 1
Recipe/ToBeDeletedByMe.cs
파일 지우기 1
Recipe/ToBeDeleted.cs
머지 주석만 달라 자동으로 풂 2
…</pre>
<p class="small muted">cherry-pick · revert · rebase 는 원래 커밋 메시지를 쓰므로 본문을 붙이지 않는다. 한 갈래에 30개가 넘으면 “… 외 N개” 로 줄인다.</p>
<h2 id="m-note">머지 주석</h2>
<p>줄을 반영하면 그 줄 바로 위에 <code>// [이름] 날짜</code> 한 줄이 들어간다(들여쓰기는 코드를 따른다). 같은 줄을 다시 반영하면 새 주석이 코드 바로 위에 붙고 앞 주석은 위로 밀린다. 누가 언제 반영했는지 소스에 남기 위해서다.</p>
<p>대신 <b>비교하고 병합할 때는 이 주석을 무시한다.</b></p>
<ul>
<li>두 칸 · 네 칸 · 폴더 비교에서 주석 줄은 <b>무시</b> 색으로 보이고 차이로 세지 않는다. 줄 끝에 붙은 주석(<code>코드 // [이름] 날짜</code>)은 주석 조각만 떼고 견준다.</li>
<li>두 칸 · 네 칸 · 폴더 비교에서 주석 줄은 <b>무시</b> 색으로 보이고 차이로 세지 않는다. 네 칸에서 반영하며 방금 넣은 주석 줄도 넣는 순간부터 무시 색이고, LOCAL(Mine) 칸에는 빈 자리로 보인다. 줄 끝에 붙은 주석(<code>코드 // [이름] 날짜</code>)은 주석 조각만 떼고 견준다.</li>
<li>git 충돌이 주석 차이뿐이면 양쪽 주석을 모두 남기고 자동으로 푼다. 코드도 다르면 코드 충돌만 묻는다.</li>
<li>설정 [머지 주석] 에서 끌 수 있다. 사람이 우연히 <code>// [글자] 2026-01-01</code> 모양으로 쓴 주석도 무시된다.</li>
</ul>
@ -529,7 +554,11 @@ UbisamBase.Shell.exe <span class="k">--merge --base</span> B.cs <span class="k">
<h2 id="m-limits">알아 둘 한계</h2>
<ul>
<li>파일 단위 <span class="btn-label">Accept Mine</span> / <span class="btn-label">Accept Theirs</span> 는 고른 쪽 파일을 <b>바이트째</b> 쓴다. 상대가 줄끝을 바꾼 파일이라면 그 줄끝이 그대로 들어온다 — 줄끝을 지키려면 네 칸에서 줄로 고른다.</li>
<li>병합 커밋 본문의 해결 내역은 <b>MergeHub 에서 푼 충돌만</b> 적힌다. 터미널에서 푼 파일은 빠지므로, 본문 건수가 처음 충돌 수보다 적으면 그만큼은 밖에서 푼 것이다.</li>
<li>빠른 비교(크기 · 수정일)는 내용이 바뀌었는데 크기와 시각이 같은 파일을 놓친다.</li>
<li>그날 처음 하는 큰 폴더 비교는 디스크에서 파일을 처음 읽느라 오래 걸린다 — 4,500개 묶음에서 첫 비교 9.2초, 두 번째부터 0.7초.</li>
<li>Git 탭 이력에서 커밋을 고르면 파일 비교 탭의 Selected Commit 은 <span class="btn-label">새로고침</span> 전까지 따라오지 않는다. 파일 비교 탭 왼쪽 이력에서 고르면 바로 바뀐다.</li>
<li>설정에서 “비교 · 병합에서 머지 주석 무시” 를 끈 채 네 칸을 다시 정렬하면(타이핑 멈춤 · 규칙 변경) 반영 색이 옆 줄로 옮겨 보일 수 있다. 저장 내용과 범례 수는 같다. 기본값(켬)에서는 나지 않는다.</li>
<li>코드 검사는 빌드가 된다는 보증이 아니다.</li>
<li>화면 왼쪽 · 오른쪽 반쪽 스냅은 <b>반쪽이 되지 않는다</b>. 창의 가장 작은 크기(1280 × 720)가 반쪽보다 커서, 2560 폭 모니터에서 75% 를 차지한다.</li>
<li>로그인 · 권한은 아직 없다. 창 여러 개로 비교하는 기능은 넣지 않기로 했다.</li>
@ -876,7 +905,7 @@ Log(<span class="s">"step 5"</span>);</pre>
<div class="page-head">
<div class="eyebrow">앞으로 남은 내용</div>
<h1>남은 일</h1>
<p class="lede">7차까지 모두 끝났고 8차는 A · B · C 를 끝냈다. 차수별로 무엇을 고쳤는지와, 아직 남은 것 · 일부러 미뤄 둔 것.</p>
<p class="lede">8차까지 모두 끝났고 9차는 A · B 를 끝냈다. 차수별로 무엇을 고쳤는지와, 아직 남은 것 · 일부러 미뤄 둔 것.</p>
</div>
<div class="doc">
<h2>6차 — 병합을 끝까지 믿고 쓸 수 있게</h2>
@ -908,7 +937,7 @@ Log(<span class="s">"step 5"</span>);</pre>
<tr><td>E-1 ~ E-4</td><td>[해결로 저장] → <b>Save</b> · 폴더 끌어다 놓기 차례 · 이름 창 잠금 · <b>셸 창 크기 조절</b>(플랫폼)</td></tr>
</table></div>
<h2>8차에서 고친 것 (2026-09-16)</h2>
<h2>8차에서 고친 것 (2026-09-16 ~ 09-17)</h2>
<div class="tbl wide"><table>
<tr><th>항목</th><th>무엇</th></tr>
<tr><td>A-1</td><td><b>고른 파일에 다른 파일 내용이 저장되던 것</b> — 파일 비교 탭을 [3분할로 열기] 로 처음 열면 첫 충돌 파일이 보였고, 그 화면을 저장하면 고른 파일에 그 내용이 써졌다. 늦게 끝난 읽기를 버리고 다시 읽으며, 화면에 실린 파일과 저장할 파일이 다르면 아무것도 쓰지 않는다</td></tr>
@ -916,6 +945,17 @@ Log(<span class="s">"step 5"</span>);</pre>
<tr><td>B-3</td><td>MERGED 칸 줄 번호를 <b>결과 파일 번호</b>로(사용자 결정) — 상태바 · 이동 칸 · 저장된 파일과 같아졌다</td></tr>
<tr><td>C-1 · C-2</td><td>revert 충돌을 화면으로 끝까지 · cherry-pick 이 원래 작성자를 남기는 것을 git 과 견줘 확인</td></tr>
<tr><td>C-3</td><td>셸 창에서 첫 Win+↓ 크기 · 덮는 창 가운데 맞춤(플랫폼, 배포함)</td></tr>
<tr><td>D-1</td><td>이 문서를 7차 · 8차에 맞춤</td></tr>
<tr><td>F-1</td><td><b>병합 커밋 본문에 충돌 해결 내역</b>(추가 요청) — 파일 단위 Accept 는 소스에 주석이 안 남아 어떻게 풀었는지 오래 남는 곳이 없었다. 병합 · pull 에서 푼 방법을 <code>.git</code> 에 적어 두고 커밋 본문에 붙인다</td></tr>
<tr><td>E-1</td><td>다섯 길(병합 · pull · rebase · cherry-pick · revert)을 파일 비교 탭을 미리 열지 않고 다시 끝까지 — 줄끝 · BOM 바뀐 파일 0 · class 이름 다른 파일 0 · 병합 본문 26개. 새로 걸린 것 하나(cherry-pick 요약의 기준)는 9차로</td></tr>
</table></div>
<h2>9차에서 고친 것 (2026-09-17)</h2>
<div class="tbl wide"><table>
<tr><th>항목</th><th>무엇</th></tr>
<tr><td>A-1 · A-2</td><td><b>두 칸이 무엇과 견주는지 사실대로</b> — cherry-pick 마지막 저장 뒤 기준이 고른 커밋 · 다른 브랜치 커밋 · HEAD 중 하나로 그때그때 달랐는데 요약은 늘 “내 쪽 대비” 였다. 새로고침이 선택을 놓치면 목록 맨 위로 채웠기 때문. 작업 중 충돌을 다 풀면 기준을 HEAD 로(사용자 결정), 그 밖에는 해시로 되찾고, HEAD 를 보다 커밋하면 새 HEAD 를 따라간다. 같은 순서 여섯 번 모두 규칙대로</td></tr>
<tr><td>B-1</td><td>네 칸에서 반영하며 넣은 머지 주석 줄이 넣는 순간 “추가”(파랑)였다가 다시 정렬하면 “무시”(회색)로 바뀌던 것 — 처음부터 무시 색(사용자 결정). LOCAL(Mine) 칸에 보이던 주석 글도 빈 자리로</td></tr>
<tr><td>B-2</td><td>“폴더 비교 뒤 트리 1초” 를 앱 안에서 단계별로 재니 트리 만들기 5~17ms · 첫 화면까지 0.13초(전체 필터 0.24초). 기다림의 대부분은 비교(0.7초)라 고치지 않음</td></tr>
</table></div>
<h2>C# 코드 스타일 맞춤에서 남긴 것</h2>
@ -924,12 +964,16 @@ Log(<span class="s">"step 5"</span>);</pre>
<li>git 병합 자체는 스타일을 모른다. 스타일만 다른 충돌도 git 은 충돌로 내고, MergeHub 는 네 칸에서 맞춰 보여 줄 뿐 자동으로 풀지는 않는다.</li>
</ul>
<h2>8차에 남은 것</h2>
<h2>9차에 남은 것</h2>
<ul>
<li><b>다섯 길 재확인(E-1)</b> — 병합 · pull · rebase · cherry-pick · revert 를 파일 비교 탭을 미리 열지 않고 사람 순서 그대로 다시 끝까지.</li>
<li>빈 cherry-pick 을 git 처럼 <b>빈 커밋으로 남기는 길</b>은 두지 않기로 했다(2026-09-16 사용자 결정).</li>
<li>MERGED 칸에서 반영하며 넣은 주석 줄이 다시 정렬하면 “무시” 색이 된다(차이 수에는 원래 안 세던 줄).</li>
<li>폴더 비교 뒤 화면 트리를 세우는 데 약 1초 — 줄일 자리로 적어 둠(5차 B-2).</li>
<li><b>확인(D-1)</b> — cherry-pick · revert 를 마지막 파일까지 네 칸으로 풀어 끝까지, 병합 · rebase 요약이 그대로인지 화면으로 다시.</li>
</ul>
<h2>정해서 두지 않는 것</h2>
<ul>
<li>빈 cherry-pick 을 git 처럼 <b>빈 커밋으로 남기는 길</b> — 두지 않기로 했다(2026-09-16 사용자 결정).</li>
<li>비교할 때만 C# 스타일을 맞추고 저장은 원래대로 하는 선택지 — 만들지 않기로 했다(2026-09-17 사용자 결정).</li>
<li>셸 창을 화면 반쪽으로 스냅 — 창의 가장 작은 크기가 반쪽보다 커서 그대로 둔다. 창 가장자리 1px 테두리도 그대로(사용자 결정).</li>
</ul>
<h2>미룬 것</h2>
@ -959,12 +1003,12 @@ Log(<span class="s">"step 5"</span>);</pre>
<div class="page-head">
<div class="eyebrow">현재까지 개발된 내용</div>
<h1>지금까지 만든 것</h1>
<p class="lede">2026-09-07 방향 전환부터 2026-09-14 6차 B-5 까지. 차수마다 “실제로 써 보고 걸린 것” 을 지시서로 만들어 하나씩 고쳤다.</p>
<p class="lede">2026-09-07 방향 전환부터 2026-09-17 9차 B-2 까지. 차수마다 “실제로 써 보고 걸린 것” 을 지시서로 만들어 하나씩 고쳤다.</p>
</div>
<div class="doc">
<div class="facts" style="margin-top:12px">
<div><b>68</b><span>로컬 커밋 · 09-08 ~ 09-14</span></div>
<div><b>948</b><span>검사 통과 (22벌)</span></div>
<div><b>104</b><span>로컬 커밋 · 09-08 ~ 09-17</span></div>
<div><b>1,122</b><span>검사 통과 (22벌)</span></div>
<div><b>0 · 0</b><span>빌드 경고 · 오류</span></div>
<div><b>0</b><span>푸시</span></div>
</div>
@ -979,6 +1023,9 @@ Log(<span class="s">"step 5"</span>);</pre>
<li><time>09-11</time><div><b>5차 — 실제 소스에 맞추기</b>CP949 67개 확인(실제 저장소 2,091개 깨짐 0) · 판별 코드 한 곳으로. 커밋 · 체크아웃 전에 저장 안 한 편집을 묻기. XAML 태그 · 속성 · 값 색칠(여러 줄 태그 포함). 폴더 비교 3.4배 / 4.7배. 20벌 698건.</div></li>
<li><time>09-14</time><div><b>5차 C-1 — 병합을 끝까지</b>만든 저장소 303개 · 충돌 22개를 MergeHub 만으로 병합 커밋까지. 코드는 안 고치고 걸린 것 23가지를 적음.</div></li>
<li><time>09-14</time><div><b>6차 A-1 ~ B-6 · 추가 요청 E-1 ~ E-3</b>아래 표. C# 스타일 맞춤 · 시연 재료 · 이 문서. 22벌 948건.</div></li>
<li><time>09-15</time><div><b>7차 — 병합 화면이 사실대로 · 다른 충돌 길</b>마지막 저장 뒤 “충돌 정리 끝” · 줄 고른 로그에 어느 쪽인지 · pull · rebase · cherry-pick 을 작업 이름과 끝내기 단추로 · 이력 모든 브랜치 · [Save] 이름 · 셸 창 크기 조절. 네 길 줄끝 바뀐 파일 0.</div></li>
<li><time>09-16</time><div><b>8차 — 고른 파일에 고른 내용을</b>[3분할로 열기] 로 처음 열면 다른 파일 내용이 고른 파일에 저장되던 것 · 작업마다 요약 · 빈 cherry-pick · MERGED 결과 번호 · revert 끝까지 · 원래 작성자 · 첫 Win+↓ · 병합 커밋 본문에 해결 내역. 다섯 길 다시 끝까지. 22벌 1,094건.</div></li>
<li><time>09-17</time><div><b>9차 — 두 칸이 무엇과 견주는지 사실대로</b>작업 중 충돌을 다 풀면 기준 HEAD · 새로고침 뒤 고른 커밋을 해시로 · 넣은 주석 줄 처음부터 무시 색 · 폴더 트리 시간 다시 재기. 22벌 1,122건.</div></li>
</ol>
<h2>6차에서 끝낸 것</h2>
@ -1005,13 +1052,15 @@ Log(<span class="s">"step 5"</span>);</pre>
</table></div>
<h2>검사 하네스</h2>
<div class="bars" role="img" aria-label="검사 하네스 통과 건수: 3차 514, 4차 571, 5차 698, 6차 948">
<div class="bar"><span class="lb">3차 · 16벌</span><span class="tr"><span class="fl" style="width:54.2%"></span></span><span class="v">514</span></div>
<div class="bar"><span class="lb">4차 · 17벌</span><span class="tr"><span class="fl" style="width:60.2%"></span></span><span class="v">571</span></div>
<div class="bar"><span class="lb">5차 · 20벌</span><span class="tr"><span class="fl" style="width:73.6%"></span></span><span class="v">698</span></div>
<div class="bar"><span class="lb">6차 · 22벌</span><span class="tr"><span class="fl" style="width:100%"></span></span><span class="v">948</span></div>
<div class="bars" role="img" aria-label="검사 하네스 통과 건수: 3차 514, 4차 571, 5차 698, 6차 948, 8차 1,094, 9차 진행 1,122">
<div class="bar"><span class="lb">3차 · 16벌</span><span class="tr"><span class="fl" style="width:45.8%"></span></span><span class="v">514</span></div>
<div class="bar"><span class="lb">4차 · 17벌</span><span class="tr"><span class="fl" style="width:50.9%"></span></span><span class="v">571</span></div>
<div class="bar"><span class="lb">5차 · 20벌</span><span class="tr"><span class="fl" style="width:62.2%"></span></span><span class="v">698</span></div>
<div class="bar"><span class="lb">6차 · 22벌</span><span class="tr"><span class="fl" style="width:84.5%"></span></span><span class="v">948</span></div>
<div class="bar"><span class="lb">8차 · 22벌</span><span class="tr"><span class="fl" style="width:97.5%"></span></span><span class="v">1,094</span></div>
<div class="bar"><span class="lb">9차 진행 · 22벌</span><span class="tr"><span class="fl" style="width:100%"></span></span><span class="v">1,122</span></div>
</div>
<p class="small muted">차수 끝의 통과 건수. 로직을 건드리면 테스트를 먼저 늘린다.</p>
<p class="small muted">차수 끝의 통과 건수(7차는 따로 적지 않았다). 로직을 건드리면 테스트를 먼저 늘린다.</p>
<h2>기능 목록</h2>
<div class="tbl wide"><table>
@ -1021,7 +1070,7 @@ Log(<span class="s">"step 5"</span>);</pre>
<tr><td>언어</td><td>13가지 색칠(C# · C/C++ · Java · JS/TS · Python · SQL · 셸 · XML/XAML/HTML · JSON · YAML · INI · Markdown · 평문) · CP949 판별 · 이진/그림</td><td><span class="chip c-done">완료</span></td></tr>
<tr><td>네 칸 병합</td><td>LOCAL · BASE · REMOTE · MERGED · Take Mine/Theirs · 자동 병합 · 충돌만 이동 · 완료 판정 · 한쪽 삭제 띠 · git mergetool</td><td><span class="chip c-done">완료</span></td></tr>
<tr><td>Git</td><td>열기 · 클론 · 원격 · Fetch/Pull/Push · 체크아웃 · Merge · rebase · 충돌 목록 · 파일 단위 Accept · Save · 병합 커밋 · 스테이징 · 커밋 · amend · stash · 이력 그래프 · Revert · Cherry-pick · Reset · 커밋 간 비교 · 변경분 추출 · Blame · 태그 · 서브모듈 · 작업 취소</td><td><span class="chip c-done">완료</span></td></tr>
<tr><td>Git</td><td>충돌 여러 개 한 번에 Accept (B-6)</td><td><span class="chip c-done">완료</span></td></tr>
<tr><td>Git</td><td>충돌 여러 개 한 번에 Accept (6차 B-6) · 병합 커밋 본문에 충돌 해결 내역 (8차 F-1)</td><td><span class="chip c-done">완료</span></td></tr>
<tr><td>머지 주석</td><td>반영한 줄 위에 쌓기 · 작업자 이름 · 비교에서 무시 · 주석만 다른 충돌 자동 해결</td><td><span class="chip c-done">완료</span></td></tr>
<tr><td>C# 스타일</td><td>AURORA / Allman 맞춤 비교 · 저장 · 폴더 비교 · 설정</td><td><span class="chip c-done">완료</span></td></tr>
<tr><td>밖에서 부르기</td><td>명령줄(--diff · --folder · --merge) · 탐색기 보내기 · mergetool 등록</td><td><span class="chip c-done">완료</span></td></tr>
@ -1343,7 +1392,7 @@ D:\MergeHubDemo\repo\ <span class="d">make-demo.ps1 이 만드는 Git
<li><b>반영 기록을 소스에 남기고, 그 기록 때문에 생기는 충돌은 스스로 푼다.</b> 우리 팀은 누가 언제 반영했는지를 <code>// [이름] 날짜</code> 로 남긴다. WinMerge 에는 이 규칙이 없어 손으로 적어야 하고, 다음 병합 때 주석끼리 충돌한다. 만든 저장소에서 git 충돌 26개 중 2개가 이런 충돌이었다.</li>
<li><b>리뷰할 diff 를 지킨다.</b> 병합 결과를 내 쪽 파일의 줄끝 · 인코딩으로 쓴다. 3분할 저장이 LF 로 바꿔 쓰던 문제를 고친 뒤 3,367줄 파일의 diff 가 +8/−4 로 줄었다. CP949 한글 파일도 같은 규칙이다.</li>
<li><b>스타일만 다른 diff 를 걷어 낸다.</b> 사람마다 다른 C# 중괄호 자리를 AURORA / Allman 로 맞춘 뒤 견준다. 시연 파일에서 남은 차이가 39줄에서 진짜 변경 1줄로 준다.</li>
<li><b>우리가 고친다.</b> 사내 요구가 생기면 그날 넣는다 — C# 스타일 맞춤은 요청 당일 들어갔다. 기록과 검사(22벌 1,073건)가 저장소에 함께 있다.</li>
<li><b>우리가 고친다.</b> 사내 요구가 생기면 그날 넣는다 — C# 스타일 맞춤은 요청 당일 들어갔다. 기록과 검사(22벌 1,122건)가 저장소에 함께 있다.</li>
</ol>
<h2>WinMerge 가 더 나은 점</h2>

View File

@ -264,7 +264,7 @@
| 상태 | 항목 |
|---|---|
| 대기 | C-1 웹 문서를 8차 끝 · 9차에 맞게 (F-1 병합 본문 · 숫자 · 남은 일) |
| **완료** | C-1 웹 문서를 8차 끝 · 9차에 맞게 — 개요 숫자(22벌 1,122건 · 커밋 104 · 8차 끝 · 9차 진행), 매뉴얼에 병합 커밋 본문 · 해결 기록이 남는 곳 · 마지막 저장 뒤 기준 HEAD · 알아 둘 한계 넷 더함, 남은 일에 8차 D-1 · F-1 · E-1 · 9차 표 · 정해서 두지 않는 것, 지금까지 만든 것 7~9차. 화면 문구 grep 대조 · 태그 짝 맞음. 아티팩트 버전 9 |
### D. 확인