9차 D-1 기록: 네 길을 마지막 파일까지 네 칸으로 다시 끝까지 · 9차 끝

병합 · rebase · cherry-pick · revert 를 새 저장소에서 파일 비교 탭을 미리 열지 않고 끝까지
(코드 변경 없음). cherry-pick · revert 는 [모든 브랜치] 를 켜고 마지막 파일을 네 칸으로.

- 네 길 모두 마지막 Save 뒤 제목 · 요약 · 기준(HEAD) 같음, 요약 N줄 = git diff
- 커밋 뒤 파일 비교 탭 기준은 새 HEAD
- 줄끝 · BOM 바뀐 파일 0, 충돌 표식 0, class 이름 검사 0, 병합 본문 26개, 빈 cherry-pick [커밋] 꺼짐
- 새로 걸린 것 N1: cherry-pick 첫 회차에서 고르기 한 번이 안 남아 "남은 충돌 1개" 로 멈춤
  (다시 하니 끝까지) → 10차 재료
- 웹 문서 "9차 끝" 으로 (아티팩트 버전 10)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
김승준 2026-09-17 13:27:48 +09:00
parent 188760d70b
commit 85f35b986e
4 changed files with 65 additions and 14 deletions

View File

@ -221,3 +221,53 @@
- 로컬 파일은 브라우저 창에서 스크립트로 넘길 수 없어 미리 보기는 하지 않았다.
제품 코드는 바꾸지 않았다.
## D-1. cherry-pick · revert 를 마지막 파일까지 네 칸으로 끝까지 (+ 병합 · rebase 회귀) (2026-09-17, 완료)
지시서대로 **고치지 않고 적기만 했다.** 제품 코드는 바꾸지 않았다(웹 문서의 "9차 진행" 표시만 "9차 끝" 으로 맞춰 아티팩트 버전 10).
### 무엇으로 했나
- 길마다 `C1Repo` 로 저장소를 새로 만들고 **파일 비교 탭을 미리 열지 않았다**(`D7_NO_PREOPEN=1`). 이름 창은 [저장], 설정 `CSharpBraceStyle` 은 길마다 백업 → 끔 → 되돌림(네 번 모두 해시 같음).
- 병합 · rebase · cherry-pick 은 8차 E-1 과 같은 순서(같은 줄 충돌 15개 파일 단위 Accept Theirs → NewPanel Accept Both [아니오] → [3분할로 열기] 뒤 저절로 열리는 파일마다 Theirs · Mine 번갈아 [Save] · 띠 [파일 지우기] · [파일 남기기]). 마지막 파일 `Weld/Unit1.cs` 는 네 칸 [Save].
- **cherry-pick 은 [모든 브랜치] 를 켜고** 이력에서 `상대 쪽 작업` 을 골랐다. **revert 도 [모든 브랜치] 를 켜고** `feature/revert` 에서 `내 쪽 작업` 을 골라, 15개는 파일 단위 Accept Theirs · **마지막 `Motion/Unit0.cs` 는 네 칸**에서 Take Theirs 6 → [Save] (8차 E-1 revert 는 마지막을 파일 단위로 풀었다).
- 새로 넣은 확인 — **기준 대조**: 마지막 [Save] 뒤 HEAD · 제목의 해시 · Selected Commit · 요약의 N줄을 `git diff -U0 HEAD`(머지 주석 줄 뺀 +/− 줄 수)와 견줌. **커밋 뒤 보기**: [병합 커밋] · [계속] · [커밋] 뒤 파일 비교 탭의 Selected Commit 이 새 HEAD 인지.
### 네 길의 결과
| 확인 | ① 병합 | ③ rebase | ④ cherry-pick ([모든 브랜치]) | ⑤ revert ([모든 브랜치]) |
|---|---|---|---|---|
| 줄 고른 로그 | 18줄 · "3-Way 안 씀" 0 | 18줄 · 0 | 18줄 · 0 (다시 한 회차) | 6줄 · 0 |
| 마지막 [Save] 한 파일 | Weld/Unit1.cs (네 칸) | Weld/Unit1.cs | Weld/Unit1.cs | **Motion/Unit0.cs (네 칸)** |
| 마지막 Save 뒤 제목 | `53493f7 · Weld/Unit1.cs · 병합 전 내 쪽` | `285f078 · … · 올릴 자리` | `09273c6 · … · 가져오기 전 내 쪽` | `81b33fa · Motion/Unit0.cs · 되돌리기 전 내 쪽` |
| 마지막 Save 뒤 요약 | 충돌 정리 끝 · 병합 커밋을 할 수 있습니다 · 내 쪽 대비 받은 변경 3줄 | … · [계속] 으로 rebase 를 이어 갑니다 · 올릴 자리 대비 올린 변경 3줄 | … · [커밋] 으로 cherry-pick 을 끝냅니다 · 내 쪽 대비 가져온 변경 3줄 | … · [커밋] 으로 revert 를 끝냅니다 · 내 쪽 대비 되돌린 변경 6줄 |
| 기준 대조 (HEAD = 제목 = Selected Commit, N = git) | **같음** · git +3 −3 (주석 3 뺌) | **같음** · +3 −3 | **같음** · +3 −3 | **같음** · +6 −6 (주석 6 뺌) |
| 끝낸 커밋 | `29c83ee` 부모 둘 · 본문 **충돌 해결 26개 · 김승준** | `83f1d7a` 부모 하나(올릴 자리 위) | `52ba0dd` 부모 하나 · 작성자 **박지훈** · 커밋한 사람 시험 | `aab2f8d` Revert "내 쪽 작업" · REVERT_HEAD 없음 |
| 커밋 뒤 파일 비교 탭 기준 | 새 HEAD `29c83ee` | 새 HEAD `83f1d7a` | 새 HEAD `52ba0dd` | 새 HEAD `aab2f8d` |
| 줄끝 · BOM · 인코딩 바뀐 파일 | **0 / 33** | **0 / 31** | **0 / 33** | **0 / 36** |
| 충돌 표식 · class 이름 다른 Unit | 0 · 0 | 0 · 0 | 0 · 0 | 0 · 0 |
| 빈 cherry-pick (방금 만든 HEAD 를 다시) | - | - | [커밋] **꺼짐** · 로그 "cherry-pick 했지만 가져올 변경이 없습니다 - [작업 취소] 로 끝냅니다" · [작업 취소] 로 나옴 | - |
### 판정 기준
| 기준 | 결과 |
|---|---|
| 네 길 모두 MergeHub 만으로 끝까지 | **됐다** (cherry-pick 은 두 번째 회차 — 아래) |
| 줄끝 · BOM 바뀐 파일 0 · 충돌 표식 0 · class 이름 다른 Unit 파일 0 | **네 길 모두 0** |
| 마지막 [Save] 뒤 제목 · 요약 · 실제 기준이 서로 같다 | **네 길 모두 같음** — 요약의 N 도 git diff 와 같음 |
| 8차 A-1 · B-1 · B-2 · F-1 다시 안 남 | **안 남** — [3분할로 열기] 로 처음 열어도 고른 파일(class 검사 0), rebase "올릴 자리", 빈 cherry-pick [커밋] 꺼짐, 병합 본문 26개 |
| (9차 A-2) 커밋 뒤 기준 | 네 길 모두 새 HEAD |
### 새로 걸린 것 (고치지 않음)
| # | 무엇 | 근거 |
|---|---|---|
| N1 | cherry-pick 첫 회차에서 `Motion/Unit0.cs` 충돌 6개를 차례로 고른 뒤 요약이 **"남은 충돌 1개"** 로 남아 [Save] 가 꺼졌고, 흐름이 거기서 멈췄다(충돌 5개 남은 채 끝). | 줄 고른 로그가 병합 · rebase 는 18줄인데 그 회차는 10줄 — Unit0 에서 **고르기 한 번이 로그에 남지 않았다**. 새 저장소로 같은 순서를 다시 하니 18줄 · 끝까지 갔다. 누름 한 번이 앱에 닿지 않은 자동 조작 쪽 문제로 보이지만(7차 C-2 · 8차 C-1 의 목록 선택이 안 닿던 것과 같은 모양) 원인을 가려 보지는 않았다. 사람이 겪는다면 "남은 충돌 1개" 와 [다음 충돌] 이 남은 곳을 알려 주므로 막히지는 않는다. |
### 시험 도구 쪽 (제품 결함 아님)
- 결과 확인 스크립트가 부모 하나인 커밋(rebase · cherry-pick · revert)에서 merge-base 사용법 오류를 찍지만, 줄끝 판정은 첫 부모와 제대로 한다(8차 E-1 과 같음).
- 빈 cherry-pick 뒤 진행 줄 읽기가 빈 글로 나온 것은 스크립트가 "남은 충돌 · 충돌 정리 끝" 으로 시작하는 줄만 읽어서다. 안내 글은 로그와 [커밋] 꺼짐으로 확인했다.
- pull 은 지시서 범위(병합 · rebase 회귀)가 아니라 이번에 돌리지 않았다.
코드는 바꾸지 않았으므로 검사는 그대로(하네스 22벌 1,122건) · 빌드 경고 0 · 오류 0. 설정 · 창 기억은 되돌림, 앱 꺼짐.

View File

@ -8,6 +8,7 @@
| 날짜 | 항목 | 커밋 |
|---|---|---|
| 2026-09-17 | **9차 D-1** — 병합 · rebase · cherry-pick · revert 를 새 저장소에서 파일 비교 탭을 미리 열지 않고 끝까지(코드 변경 없음). cherry-pick · revert 는 [모든 브랜치] 를 켜고 마지막 파일을 네 칸으로. 네 길 모두 마지막 Save 뒤 제목 · 요약 · 기준(HEAD) 같음 · 요약 N줄 = git diff · 커밋 뒤 기준 새 HEAD · 줄끝 · BOM 바뀐 파일 0 · class 검사 0. 새로 걸린 것: N1 cherry-pick 첫 회차에서 고르기 한 번이 안 남아 "남은 충돌 1개" 로 멈춤(다시 하니 끝까지) → 10차. **9차 전부 끝**. 웹 문서 "9차 끝" (아티팩트 버전 10) | 아래 |
| 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 | 아래 |

View File

@ -257,8 +257,8 @@ figcaption{font-size:.82rem;color:var(--ink-3);margin-top:6px}
<div class="facts">
<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>9차 끝</b><span>다섯 길(병합 · pull · rebase · cherry-pick · revert) 줄끝 바뀐 파일 0</span></div>
<div><b>105</b><span>MergeHub 로컬 커밋 (푸시 0)</span></div>
<div><b>26 → 24</b><span>만든 저장소 병합 충돌 (주석만 다른 2건 자동 해결)</span></div>
</div>
@ -905,7 +905,7 @@ Log(<span class="s">"step 5"</span>);</pre>
<div class="page-head">
<div class="eyebrow">앞으로 남은 내용</div>
<h1>남은 일</h1>
<p class="lede">8차까지 모두 끝났고 9차는 A · B 를 끝냈다. 차수별로 무엇을 고쳤는지와, 아직 남은 것 · 일부러 미뤄 둔 것.</p>
<p class="lede">9차까지 모두 끝났다. 차수별로 무엇을 고쳤는지와, 아직 남은 것 · 일부러 미뤄 둔 것.</p>
</div>
<div class="doc">
<h2>6차 — 병합을 끝까지 믿고 쓸 수 있게</h2>
@ -956,6 +956,7 @@ Log(<span class="s">"step 5"</span>);</pre>
<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>
<tr><td>D-1</td><td>병합 · rebase · cherry-pick · revert 를 새 저장소에서 파일 비교 탭을 미리 열지 않고 끝까지 — cherry-pick · revert 는 [모든 브랜치] 를 켜고 마지막 파일을 네 칸으로. 네 길 모두 마지막 Save 뒤 제목 · 요약 · 실제 기준(HEAD)이 같고 요약의 줄 수가 git diff 와 같음 · 커밋 뒤 기준은 새 HEAD · 줄끝 · BOM 바뀐 파일 0 · class 이름 다른 파일 0</td></tr>
</table></div>
<h2>C# 코드 스타일 맞춤에서 남긴 것</h2>
@ -964,11 +965,6 @@ Log(<span class="s">"step 5"</span>);</pre>
<li>git 병합 자체는 스타일을 모른다. 스타일만 다른 충돌도 git 은 충돌로 내고, MergeHub 는 네 칸에서 맞춰 보여 줄 뿐 자동으로 풀지는 않는다.</li>
</ul>
<h2>9차에 남은 것</h2>
<ul>
<li><b>확인(D-1)</b> — cherry-pick · revert 를 마지막 파일까지 네 칸으로 풀어 끝까지, 병합 · rebase 요약이 그대로인지 화면으로 다시.</li>
</ul>
<h2>정해서 두지 않는 것</h2>
<ul>
<li>빈 cherry-pick 을 git 처럼 <b>빈 커밋으로 남기는 길</b> — 두지 않기로 했다(2026-09-16 사용자 결정).</li>
@ -1003,11 +999,11 @@ 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-17 9차 B-2 까지. 차수마다 “실제로 써 보고 걸린 것” 을 지시서로 만들어 하나씩 고쳤다.</p>
<p class="lede">2026-09-07 방향 전환부터 2026-09-17 9차 끝까지. 차수마다 “실제로 써 보고 걸린 것” 을 지시서로 만들어 하나씩 고쳤다.</p>
</div>
<div class="doc">
<div class="facts" style="margin-top:12px">
<div><b>104</b><span>로컬 커밋 · 09-08 ~ 09-17</span></div>
<div><b>105</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>
@ -1025,7 +1021,7 @@ Log(<span class="s">"step 5"</span>);</pre>
<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>
<li><time>09-17</time><div><b>9차 — 두 칸이 무엇과 견주는지 사실대로</b>작업 중 충돌을 다 풀면 기준 HEAD · 새로고침 뒤 고른 커밋을 해시로 · 넣은 주석 줄 처음부터 무시 색 · 폴더 트리 시간 다시 재기 · 네 길을 마지막 파일까지 네 칸으로 다시 끝까지. 22벌 1,122건.</div></li>
</ol>
<h2>6차에서 끝낸 것</h2>
@ -1052,13 +1048,13 @@ 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, 8차 1,094, 9차 진행 1,122">
<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 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">차수 끝의 통과 건수(7차는 따로 적지 않았다). 로직을 건드리면 테스트를 먼저 늘린다.</p>

View File

@ -270,7 +270,11 @@
| 상태 | 항목 |
|---|---|
| 대기 | D-1 cherry-pick · revert 를 마지막 파일까지 네 칸으로 끝까지 (+ 병합 · rebase 회귀) |
| **완료** | D-1 cherry-pick · revert 를 마지막 파일까지 네 칸으로 끝까지 (+ 병합 · rebase 회귀) — 네 길 모두 MergeHub 만으로 끝까지(cherry-pick · revert 는 [모든 브랜치] 켬). 마지막 Save 뒤 제목 · 요약 · 기준(HEAD)이 같고 요약 N줄 = git diff, 커밋 뒤 기준 새 HEAD. 줄끝 · BOM 바뀐 파일 0 · 충돌 표식 0 · class 이름 검사 0 · 병합 본문 26개 · 빈 cherry-pick [커밋] 꺼짐. 새로 걸린 것 N1(cherry-pick 첫 회차에서 고르기 한 번이 안 남아 멈춤, 다시 하니 끝까지)은 적어 둠 |
**9차 전부 끝.** D-1 에서 새로 걸린 것은 10차 재료다(고치지 않음).
- N1 cherry-pick 첫 회차에서 `Motion/Unit0.cs` 충돌 6개를 고른 뒤 "남은 충돌 1개" 로 남아 [Save] 가 꺼짐. 고르기 한 번이 로그에 안 남음(10줄 · 다른 길 18줄). 새 저장소로 다시 하니 끝까지 — 자동 조작 쪽으로 보이나 원인 미확인
---
## 3~4주차로 미룬 것