11차 E-2: 웹 문서 · 기획안을 11차에 맞춤

MergeHub 문서 아티팩트 버전 13 — 매뉴얼에 커밋 메시지 고치기 · 변경분 추출 두 절, 한계 셋, 남은 일 · 만든 것 11차, 숫자 1,247건 · 커밋 129. 단추 이름 91개를 소스와 대조해 "맞추지 않음" 을 실제 글자 "C# 스타일 끔" 으로 바로잡음. 기획안 잠금 아티팩트 버전 17 — 커밋 메시지 수정 완료 · 4단계 준비 중(8쪽 A4 높이 그대로, 잠금은 사용자). 제품 코드 변경 없음.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
김승준 2026-09-22 13:14:18 +09:00
parent c814c3f1b6
commit 8e90f88099
4 changed files with 102 additions and 31 deletions

View File

@ -433,6 +433,28 @@ libgit2 의 다듬기(`PrettifyMessages`)를 켜면 **손대지 않은 뒤 커
- 하네스 22벌 1,247건 · 플랫폼 24건 그대로 · 빌드 경고 0 · 오류 0 · 설정 파일 되돌림 해시 매번 같음. 제품 코드 변경 없음. - 하네스 22벌 1,247건 · 플랫폼 24건 그대로 · 빌드 경고 0 · 오류 0 · 설정 파일 되돌림 해시 매번 같음. 제품 코드 변경 없음.
## E-2. 웹 문서 · 기획안을 11차에 맞게 (2026-09-22, 완료)
### MergeHub 문서 (`doc/web/index.html`, 아티팩트 "MergeHub 문서" 버전 11 → **13**)
- 올리기 전에 발행본(버전 11)을 받아 로컬과 견줌 — 09-17 에 올린 그대로였고(다른 사람 손 없음), 그 뒤 로컬에서만 바뀐 것은 11차 F-12 · B-1 · B-2 문장뿐.
- 고친 것:
- 개요 — 09-22 기준 · 22벌 1,247건 · 11차 · 커밋 129 · 지시서 11차.
- 매뉴얼 — Git 탭 표에 우클릭 [메시지 바꾸기...] 와 아래 두 절 연결, **"커밋 메시지 고치기"**(두 길을 한 표로 — 고치는 커밋 · 메시지 넣기 · 함께 들어가는 것 · 이미 올린 커밋 · 남는 것 · 꺼지는 때, 되돌리는 길), **"변경분 추출"**(새 폴더 · 옆 안내 파일 · 먼저 보고 쓰기 · 병합 커밋 · 거꾸로 범위), 목차 둘, 알아 둘 한계 셋(메시지 칸 한 줄 · 올렸는지는 마지막 Fetch 기준 · D 없는 PC 는 계정마다 설정). 실행 위치(B-1) · 설정 위치(B-2) · C# 스타일 기본 AURORA(F-12)는 먼저 적어 둔 것이 함께 올라감.
- 남은 일 — 11차 표(완료 · 대기 · 진행).
- 지금까지 만든 것 — 09-22 11차 기록 · 커밋 129 · 1,247건 · 하네스 막대 11차(폭을 새 최댓값으로 다시 잼) · 기능 목록 Git 한 줄 · 배포 한 줄.
- 기획안 v2 — 커밋 메시지 수정 **완료**, 변경분 추출 설명, 3단계에 11차, 4단계 **진행**(베타 준비).
- WinMerge 쪽 숫자 1,247건.
- 대조: 문서의 단추 이름 91개를 소스(MergeHub · 플랫폼)에서 찾음 — **"맞추지 않음"(09-18 F-12 때 적은 말)이 실제 콤보 글자 "C# 스타일 끔" 과 달라** 문서 두 곳 · 이 기록 한 곳을 고침. 남은 하나(`비교 규칙 펴기` 의 공백 두 칸)는 화면에 보이는 글자가 같다. 태그 짝 모두 맞음.
- 공유 링크를 받은 사람에게는 **고정된 옛 버전**이 보이도록 되어 있다 — 새 버전을 보이려면 페이지 Share 메뉴에서 사용자가 바꾼다.
### 기획안 v1.2 (잠금 아티팩트 "UbiSam MergeTool 개발 기획안" 버전 **17**)
- 발행본을 받아 로컬 잠금 파일(09-17 17:06)과 견줌 — 암호문 · salt · IV 가 같음. 그러므로 고칠 원문은 09-17 원문(`plan/mergetool.html`).
- 원문에서 고친 것: 3.2 Git 작업 UI화의 **커밋 메시지 수정 → 완료**("마지막 커밋은 [커밋 수정], 앞 커밋은 트리에서 우클릭 → [메시지 바꾸기]"), 변경분 파일 추출 설명(새 폴더 · 지울 파일 안내, ZIP 이 없어 "일부" 그대로), 일정 요약(09-22 기준 · 1,247건 · 4단계 베타 준비 중), 3단계 "Git 작업 버튼" 한 줄, 4단계 상태 "대기" → "준비 중", 4단계 베타 줄, 개정일 09-22.
- **A4 쪽 높이**: 고치기 전 · 뒤 원문을 헤드리스 Edge 로 재니 8쪽 모두 1123px · 넘침 없음으로 같다. 기능 목록 쪽 그림으로 한 줄씩인 것 확인.
- **잠금은 사용자가 했다**(`lock-plan.js`, 비밀번호는 화면에 안 보이게 받아 어디에도 남기지 않음 · 비교할 원본은 09-17 원문). 첫 "잠갔어" 때는 잠금 파일이 09-17 것 그대로여서 올리지 않고 멈췄다(PowerShell 문법을 CMD 에서 돌린 것으로 보임). 두 번째에 새 salt · IV 의 잠금 파일(13:12)이 생겨 올렸고, 발행본의 암호문이 그 파일과 같음을 되읽어 확인했다. 스크립트 출력은 다른 창이라 직접 보지 못했다.
## F-12. C# 코드 스타일 맞춤의 기본값을 AURORA 로 (2026-09-18, 완료) ## F-12. C# 코드 스타일 맞춤의 기본값을 AURORA 로 (2026-09-18, 완료)
사용자: "기본값은 원본형태를 따르고 C#인 경우에 AURORA 스타일로 하자" → 물어서 정한 것은 **제품 기본값 AURORA · C# 파일만 · 저장 동작은 지금 그대로**(켜져 있으면 저장도 그 스타일로 쓴다). 사용자: "기본값은 원본형태를 따르고 C#인 경우에 AURORA 스타일로 하자" → 물어서 정한 것은 **제품 기본값 AURORA · C# 파일만 · 저장 동작은 지금 그대로**(켜져 있으면 저장도 그 스타일로 쓴다).
@ -447,9 +469,9 @@ libgit2 의 다듬기(`PrettifyMessages`)를 켜면 **손대지 않은 뒤 커
| 자리 | 고친 것 | | 자리 | 고친 것 |
|---|---| |---|---|
| `MergeHubSettings.cs:77` | `CSharpBraceStyle` 기본값 `None` → **`Aurora`**. 왜 그렇게 정했는지와 "C# 파일에만 걸린다" 를 주석으로 남김 | | `MergeHubSettings.cs:77` | `CSharpBraceStyle` 기본값 `None` → **`Aurora`**. 왜 그렇게 정했는지와 "C# 파일에만 걸린다" 를 주석으로 남김 |
| 웹 문서 매뉴얼 | "기본은 끔" → "**기본은 AURORA**(2026-09-18 결정) · 끄려면 콤보에서 [맞추지 않음]" · "C# 파일에만 걸린다" 한 줄 더함 | | 웹 문서 매뉴얼 | "기본은 끔" → "**기본은 AURORA**(2026-09-18 결정) · 끄려면 콤보에서 [C# 스타일 끔]" · "C# 파일에만 걸린다" 한 줄 더함 |
| 웹 문서 설정 표 | 기본값 칸 `끔` → `AURORA`, "`.cs` 파일에만 걸린다" | | 웹 문서 설정 표 | 기본값 칸 `끔` → `AURORA`, "`.cs` 파일에만 걸린다" |
| 웹 문서 시연 대본 | "스타일 맞춤은 끔으로 둔다" → "기본이 AURORA 이므로 시연 전에 [맞추지 않음] 으로 바꿔 둔다" | | 웹 문서 시연 대본 | "스타일 맞춤은 끔으로 둔다" → "기본이 AURORA 이므로 시연 전에 [C# 스타일 끔] 으로 바꿔 둔다" |
| 하네스 `StyleTest` | **+12건(78 → 90)** — 설정 기본값이 AURORA 인지, `.cpp` · `.h` · `.hpp` · `.c` · `.xaml` · `.py` · `.txt` · `.cs.txt` 는 안 걸리는지, `.cs` · `.CS` · 한글 경로 `.cs` 는 걸리는지. 고치기 전에 먼저 넣어 **기본값 검사만 실패**하는 것을 보고 시작했다 | | 하네스 `StyleTest` | **+12건(78 → 90)** — 설정 기본값이 AURORA 인지, `.cpp` · `.h` · `.hpp` · `.c` · `.xaml` · `.py` · `.txt` · `.cs.txt` 는 안 걸리는지, `.cs` · `.CS` · 한글 경로 `.cs` 는 걸리는지. 고치기 전에 먼저 넣어 **기본값 검사만 실패**하는 것을 보고 시작했다 |
### 확인한 것 — 설정 파일이 없는 첫 실행 (`e11-f12.ps1`) ### 확인한 것 — 설정 파일이 없는 첫 실행 (`e11-f12.ps1`)

View File

@ -8,6 +8,7 @@
| 날짜 | 항목 | 커밋 | | 날짜 | 항목 | 커밋 |
|---|---|---| |---|---|---|
| 2026-09-22 | **11차 E-2** — 웹 문서(버전 13)와 기획안(버전 17)을 11차에 맞춤. 두 발행본 모두 로컬 파일과 같음을 먼저 확인. 매뉴얼에 "커밋 메시지 고치기"([커밋 수정] 과 우클릭 [메시지 바꾸기...] 를 한 표로) · "변경분 추출"(새 폴더 · 안내 파일) 두 절과 한계 셋, 남은 일 · 만든 것에 11차, 숫자 1,247건 · 커밋 129. 단추 이름 91개를 소스에서 찾아 09-18 에 적은 "맞추지 않음" 을 실제 글자 "C# 스타일 끔" 으로 바로잡음. 기획안은 커밋 메시지 수정 완료 · 4단계 준비 중 · 개정 09-22, 8쪽 A4 높이 그대로, 잠금은 사용자가 비밀번호로 | 아래 |
| 2026-09-22 | **11차 E-1** — 11차에서 바꾼 길을 사람 순서로 다시 끝까지(배포한 플랫폼 위에서). A-1 아홉 경우: 지운 파일 · 이름 바뀐 옛 경로 · 범위가 안내에 남고, 같은 폴더에 두 번 뽑아도 새 폴더 둘로 섞이지 않고, 읽기 전용 · 잠긴 파일이 있어도 막힘 없이 끝남(모두 바이트 같음). C-1 여덟 경우: HEAD 메시지 · 작성자 보존 · 스테이징 · 올린 커밋 묻는 창 · 작업 중 꺼짐 · 병합 커밋 부모 둘. C-2 로 이력을 다시 쓴 저장소(트리 · 작성자 · 시각 4/4 같음)에서 병합 한 길. 다섯 길 + pull 모두 누른 수 = 로그, 줄끝 · BOM · 충돌 표식 · class 0, 두 탭 같은 커밋. **새로 걸린 것 없음.** 시험 도구가 창을 앞으로 부르며 최대화를 풀어 첫 누름이 빗나가던 것을 고침(제품 아님). 제품 코드 변경 없음 | 아래 | | 2026-09-22 | **11차 E-1** — 11차에서 바꾼 길을 사람 순서로 다시 끝까지(배포한 플랫폼 위에서). A-1 아홉 경우: 지운 파일 · 이름 바뀐 옛 경로 · 범위가 안내에 남고, 같은 폴더에 두 번 뽑아도 새 폴더 둘로 섞이지 않고, 읽기 전용 · 잠긴 파일이 있어도 막힘 없이 끝남(모두 바이트 같음). C-1 여덟 경우: HEAD 메시지 · 작성자 보존 · 스테이징 · 올린 커밋 묻는 창 · 작업 중 꺼짐 · 병합 커밋 부모 둘. C-2 로 이력을 다시 쓴 저장소(트리 · 작성자 · 시각 4/4 같음)에서 병합 한 길. 다섯 길 + pull 모두 누른 수 = 로그, 줄끝 · BOM · 충돌 표식 · class 0, 두 탭 같은 커밋. **새로 걸린 것 없음.** 시험 도구가 창을 앞으로 부르며 최대화를 풀어 첫 누름이 빗나가던 것을 고침(제품 아님). 제품 코드 변경 없음 | 아래 |
| 2026-09-22 | **11차 B-2** — 설정 없는 첫 실행을 `D:\UbisamConfig` 를 백업 · 이름 바꿔 재 봄: 오류 창 없음 · 이름 창 → 네 탭 · 기본값이 매뉴얼 설정 표와 같음 · 최대화. D 드라이브가 없는 경우는 코드로 따라가고 같은 줄(`UiSettingsService.cs:86`)에서 실패하게 해 보니, 공용 예외 창이 "계속 쓸 수 있습니다 · 로그에 남았습니다" 라고 한 뒤 **창 없는 프로세스만 남았다**. 플랫폼에서 고침(플랫폼 `377ffd3`, 사용자 결정) — D 를 못 쓰면 `%LOCALAPPDATA%\UbisamConfig`, 켜는 중 실패는 "켜지 못했습니다" 뒤 끝냄. MergeHub 쪽은 매뉴얼 설정 자리 문장 · 설정 클래스 주석만. 사용자 확인 뒤 플랫폼 배포(바뀐 것 Core · Shell · README 셋)하고 배포 묶음을 다시 만듦 | 아래 | | 2026-09-22 | **11차 B-2** — 설정 없는 첫 실행을 `D:\UbisamConfig` 를 백업 · 이름 바꿔 재 봄: 오류 창 없음 · 이름 창 → 네 탭 · 기본값이 매뉴얼 설정 표와 같음 · 최대화. D 드라이브가 없는 경우는 코드로 따라가고 같은 줄(`UiSettingsService.cs:86`)에서 실패하게 해 보니, 공용 예외 창이 "계속 쓸 수 있습니다 · 로그에 남았습니다" 라고 한 뒤 **창 없는 프로세스만 남았다**. 플랫폼에서 고침(플랫폼 `377ffd3`, 사용자 결정) — D 를 못 쓰면 `%LOCALAPPDATA%\UbisamConfig`, 켜는 중 실패는 "켜지 못했습니다" 뒤 끝냄. MergeHub 쪽은 매뉴얼 설정 자리 문장 · 설정 클래스 주석만. 사용자 확인 뒤 플랫폼 배포(바뀐 것 Core · Shell · README 셋)하고 배포 묶음을 다시 만듦 | 아래 |
| 2026-09-22 | **11차 B-1** — 배포 묶음. 매뉴얼이 가리키던 Release 출력이 09-07 것이라 폴더 비교 탭 등 6차 이후가 없었다(형식 142개 중 74개 없음). Release 로 다시 빌드하고, 셸 · MergeHub 에서 참조를 따라가 **어디서도 닿지 않는 dll 7개**(OpenTK · GLWpfControl · SkiaSharp.Views · LiveCharts WPF · Extensions.Options 둘)와 맥 · 리눅스 · ARM 용 네이티브 · pdb · 빈 Lang 을 뺀 묶음을 만든다 — 97MB → 43.5MB. 플랫폼 Core 가 직접 참조하는 LiveCharts · Skia 는 사용자 결정대로 남김. 새 `scripts\make-bundle.ps1` 이 빌드 · 묶기 · `배포묶음.txt`(무엇이 왜 들었는지)를 하고, 남의 파일이 든 폴더는 비우지 않는다. 빈 폴더에서 켜 네 탭 · 병합 한 길 끝까지. 제품 코드 변경 없음 | 아래 | | 2026-09-22 | **11차 B-1** — 배포 묶음. 매뉴얼이 가리키던 Release 출력이 09-07 것이라 폴더 비교 탭 등 6차 이후가 없었다(형식 142개 중 74개 없음). Release 로 다시 빌드하고, 셸 · MergeHub 에서 참조를 따라가 **어디서도 닿지 않는 dll 7개**(OpenTK · GLWpfControl · SkiaSharp.Views · LiveCharts WPF · Extensions.Options 둘)와 맥 · 리눅스 · ARM 용 네이티브 · pdb · 빈 Lang 을 뺀 묶음을 만든다 — 97MB → 43.5MB. 플랫폼 Core 가 직접 참조하는 LiveCharts · Skia 는 사용자 결정대로 남김. 새 `scripts\make-bundle.ps1` 이 빌드 · 묶기 · `배포묶음.txt`(무엇이 왜 들었는지)를 하고, 남의 파일이 든 폴더는 비우지 않는다. 빈 폴더에서 켜 네 탭 · 병합 한 길 끝까지. 제품 코드 변경 없음 | 아래 |

View File

@ -217,7 +217,7 @@ figcaption{font-size:.82rem;color:var(--ink-3);margin-top:6px}
<header class="top"> <header class="top">
<div class="top-in"> <div class="top-in">
<a class="brand" href="#home"><b>MergeHub</b><span>사내 머지툴 문서 · 2026-09-17 기준</span></a> <a class="brand" href="#home"><b>MergeHub</b><span>사내 머지툴 문서 · 2026-09-22 기준</span></a>
<nav class="nav" aria-label="문서"> <nav class="nav" aria-label="문서">
<a href="#home">개요</a> <a href="#home">개요</a>
<a href="#manual">사용자 매뉴얼</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> <div class="eyebrow">UbiSam 사내 Git 머지 · 비교 도구</div>
<h1>MergeHub 문서</h1> <h1>MergeHub 문서</h1>
<p class="lede">UbisamBase 셸 위에서 도는 플러그인(.NET Framework 4.8 · WPF)이다. 폴더 비교에서 다른 파일을 찾고, 파일 비교에서 줄을 골라 반영하고, Git 탭에서 병합과 커밋까지 끝낸다. 이 페이지는 매뉴얼 · 발표 · 진행 기록 · 기획안 · 시연 대본 · WinMerge 비교를 한곳에 모았다.</p> <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/작업지시/10차.md</code> 에서 옮겼다. 시험은 실제 소스가 아니라 직접 만든 저장소로 했다(2026-09-11 결정).</p> <p class="small muted">숫자는 모두 <code>doc/진행상황.md</code> · <code>doc/history/*.md</code> · <code>doc/작업지시/11차.md</code> 에서 옮겼다. 시험은 실제 소스가 아니라 직접 만든 저장소로 했다(2026-09-11 결정).</p>
</div> </div>
<div class="diffcard" aria-label="머지 주석이 들어간 줄 예시"> <div class="diffcard" aria-label="머지 주석이 들어간 줄 예시">
<div class="hd"><span>MERGED · WeldController.cs</span><span>남은 충돌 1</span></div> <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>
<div class="facts"> <div class="facts">
<div><b>22벌 · 1,147건</b><span>검사 하네스 전부 통과</span></div> <div><b>22벌 · 1,247건</b><span>검사 하네스 전부 통과</span></div>
<div><b>10차 끝</b><span>다섯 길(병합 · pull · rebase · cherry-pick · revert) 줄끝 바뀐 파일 0 · 누른 수 = 줄 고른 로그</span></div> <div><b>11차 · 베타 앞</b><span>변경분 안내 · 커밋 메시지 고치기 · 배포 묶음 43.5MB · D 드라이브 없는 PC. 다섯 길 다시 끝까지 줄끝 바뀐 파일 0</span></div>
<div><b>114</b><span>MergeHub 로컬 커밋 (푸시 0)</span></div> <div><b>129</b><span>MergeHub 로컬 커밋 (푸시 0)</span></div>
<div><b>26 → 24</b><span>만든 저장소 병합 충돌 (주석만 다른 2건 자동 해결)</span></div> <div><b>26 → 24</b><span>만든 저장소 병합 충돌 (주석만 다른 2건 자동 해결)</span></div>
</div> </div>
<div class="cards"> <div class="cards">
<a class="card" href="#manual"><b>사용자 매뉴얼</b><span>탭 네 개 사용법, 병합 충돌 푸는 순서, 단축키, 설정</span></a> <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="#slides"><b>발표 자료</b><span>18장. ←/→ 로 넘기고 전체 화면으로 띄운다</span></a>
<a class="card" href="#roadmap"><b>남은 일</b><span>7차 ~ 10차에서 고친 것, 아직 남은 것, 미룬 것</span></a> <a class="card" href="#roadmap"><b>남은 일</b><span>7차 ~ 11차에서 고친 것, 아직 남은 것, 미룬 것</span></a>
<a class="card" href="#status"><b>지금까지 만든 것</b><span>09-07 ~ 09-17 차수별 기록과 기능 목록</span></a> <a class="card" href="#status"><b>지금까지 만든 것</b><span>09-07 ~ 09-22 차수별 기록과 기능 목록</span></a>
<a class="card" href="#plan"><b>기획안 v2</b><span>09-03 기획안(v1.1)의 틀에 실제로 만든 것과 바뀐 것을 채움</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="#demo"><b>시연 대본</b><span>demo 폴더 구성과 10분 시연 순서</span></a>
<a class="card" href="#winmerge"><b>WinMerge 와 차이</b><span>기능 표, MergeHub 가 필요한 이유, WinMerge 가 나은 점</span></a> <a class="card" href="#winmerge"><b>WinMerge 와 차이</b><span>기능 표, MergeHub 가 필요한 이유, WinMerge 가 나은 점</span></a>
@ -292,6 +292,8 @@ figcaption{font-size:.82rem;color:var(--ink-3);margin-top:6px}
<a href="#manual" data-jump="m-style">C# 코드 스타일 맞춤</a> <a href="#manual" data-jump="m-style">C# 코드 스타일 맞춤</a>
<b>Git</b> <b>Git</b>
<a href="#manual" data-jump="m-git">Git 탭</a> <a href="#manual" data-jump="m-git">Git 탭</a>
<a href="#manual" data-jump="m-reword">커밋 메시지 고치기</a>
<a href="#manual" data-jump="m-export">변경분 추출</a>
<a href="#manual" data-jump="m-merge">병합 충돌 푸는 순서</a> <a href="#manual" data-jump="m-merge">병합 충돌 푸는 순서</a>
<a href="#manual" data-jump="m-note">머지 주석</a> <a href="#manual" data-jump="m-note">머지 주석</a>
<b>참고</b> <b>참고</b>
@ -408,7 +410,7 @@ UbisamBase.Shell.exe <span class="k">--merge --base</span> B.cs <span class="k">
<ul> <ul>
<li>편집 칸 글이 스타일 때문에 바뀌면 <b>저장할 것이 있는</b> 상태가 되고, 저장하면 그 스타일로 파일에 쓴다. 스타일만 바뀐 상태로 다른 파일을 열면 묻지 않는다.</li> <li>편집 칸 글이 스타일 때문에 바뀌면 <b>저장할 것이 있는</b> 상태가 되고, 저장하면 그 스타일로 파일에 쓴다. 스타일만 바뀐 상태로 다른 파일을 열면 묻지 않는다.</li>
<li>폴더 비교도 스타일만 다른 C# 파일은 <b>같음</b>. 줄끝이 다른 파일은 가리지 않는다.</li> <li>폴더 비교도 스타일만 다른 C# 파일은 <b>같음</b>. 줄끝이 다른 파일은 가리지 않는다.</li>
<li>설정 [비교 옵션] “C# 코드 스타일 맞춤” 에 저장된다. <b>기본은 AURORA</b> — 사내 코드가 이 스타일이라 설정을 찾아 켜지 않아도 중괄호 자리 때문에 생기는 차이를 안 보게 했다(2026-09-18 결정). 끄려면 콤보에서 <span class="btn-label">맞추지 않음</span>.</li> <li>설정 [비교 옵션] “C# 코드 스타일 맞춤” 에 저장된다. <b>기본은 AURORA</b> — 사내 코드가 이 스타일이라 설정을 찾아 켜지 않아도 중괄호 자리 때문에 생기는 차이를 안 보게 했다(2026-09-18 결정). 끄려면 콤보에서 <span class="btn-label">C# 스타일 끔</span>.</li>
<li><b>C# 파일에만 걸린다.</b> C/C++ · XAML 처럼 확장자가 <code>.cs</code> 가 아닌 파일은 이 설정이 무엇이든 원본 그대로 견준다.</li> <li><b>C# 파일에만 걸린다.</b> C/C++ · XAML 처럼 확장자가 <code>.cs</code> 가 아닌 파일은 이 설정이 무엇이든 원본 그대로 견준다.</li>
<li>옮기는 것은 여는 중괄호와 else · catch · finally 의 <b>줄 위치뿐</b>이다. 들여쓰기 · 공백은 그대로. 앞 줄 끝에 주석이 있으면 중괄호를 올리지 않는다.</li> <li>옮기는 것은 여는 중괄호와 else · catch · finally 의 <b>줄 위치뿐</b>이다. 들여쓰기 · 공백은 그대로. 앞 줄 끝에 주석이 있으면 중괄호를 올리지 않는다.</li>
</ul> </ul>
@ -459,14 +461,36 @@ UbisamBase.Shell.exe <span class="k">--merge --base</span> B.cs <span class="k">
<tr><th>안쪽 탭</th><th>있는 것</th></tr> <tr><th>안쪽 탭</th><th>있는 것</th></tr>
<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">체크아웃</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">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">언스테이징</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>(마지막 커밋 고쳐 쓰기 — <a href="#manual" data-jump="m-reword">아래</a>)</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>(<a href="#manual" data-jump="m-export">아래</a>) · 줄 우클릭 <span class="btn-label">메시지 바꾸기...</span></td></tr>
<tr><td>Blame</td><td>파일 경로 → <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> <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> </table></div>
<p><b>두 탭은 같은 커밋을 본다.</b> Git 탭 이력에서 커밋을 고르면 파일 비교 탭의 Selected Commit · 왼쪽 이력 · 기준(BASE)이 바로 그 커밋으로 바뀌고, 파일 비교 탭에서 고르면 Git 탭 이력 선택도 따라온다 — <span class="btn-label">Revert</span> · <span class="btn-label">Cherry-pick</span> 은 늘 화면에 보이는 커밋에 간다. 파일 비교 탭에 저장하지 않은 편집이 있으면 <b>고르는 순간</b> “다른 커밋을 봅니다” 를 묻고, <span class="btn-label">취소</span> 면 선택이 그대로 남는다.</p> <p><b>두 탭은 같은 커밋을 본다.</b> Git 탭 이력에서 커밋을 고르면 파일 비교 탭의 Selected Commit · 왼쪽 이력 · 기준(BASE)이 바로 그 커밋으로 바뀌고, 파일 비교 탭에서 고르면 Git 탭 이력 선택도 따라온다 — <span class="btn-label">Revert</span> · <span class="btn-label">Cherry-pick</span> 은 늘 화면에 보이는 커밋에 간다. 파일 비교 탭에 저장하지 않은 편집이 있으면 <b>고르는 순간</b> “다른 커밋을 봅니다” 를 묻고, <span class="btn-label">취소</span> 면 선택이 그대로 남는다.</p>
<p class="small muted">커밋 · 체크아웃처럼 파일을 바꾸는 Git 작업을 시작하면, 파일 비교 탭에 저장하지 않은 편집이 있을 때 먼저 묻는다.</p> <p class="small muted">커밋 · 체크아웃처럼 파일을 바꾸는 Git 작업을 시작하면, 파일 비교 탭에 저장하지 않은 편집이 있을 때 먼저 묻는다.</p>
<h3 id="m-reword">커밋 메시지 고치기</h3>
<p>길이 둘이다. <b>마지막 커밋</b>은 변경 · 커밋 탭에서, <b>그보다 앞 커밋</b>은 이력에서 고친다.</p>
<div class="tbl"><table>
<tr><th></th><th><span class="btn-label">커밋 수정</span> (변경 · 커밋 탭)</th><th>우클릭 <span class="btn-label">메시지 바꾸기...</span> (이력 탭)</th></tr>
<tr><td>고치는 커밋</td><td>HEAD(마지막 커밋)</td><td>이력에서 우클릭한 줄. 우클릭하면 그 줄이 먼저 골라진다</td></tr>
<tr><td>메시지 넣기</td><td><span class="btn-label">마지막 메시지</span> 가 <b>HEAD 의 메시지</b>를 칸에 가져온다([모든 브랜치] 로 다른 브랜치 커밋이 맨 위여도). 칸은 한 줄</td><td>지금 메시지가 들어 있는 창이 뜬다. 여러 줄을 칠 수 있다</td></tr>
<tr><td>함께 들어가는 것</td><td>스테이징해 둔 파일도 들어간다 — 있으면 <b>“파일 N개도 이 커밋에 들어갑니다”</b> 를 먼저 묻는다</td><td>메시지만. 파일은 건드리지 않는다</td></tr>
<tr><td>이미 올린 커밋</td><td>“이미 올라가 있습니다 · 고치면 다음 Push 가 거부됩니다” 를 묻는다(막지는 않는다)</td><td><b>막는다</b> — 뒤따르는 커밋까지 다시 써서 남의 이력과 갈라진다</td></tr>
<tr><td>남는 것</td><td>작성자 · 작성 시각은 원래 커밋 것 그대로. 알림 “커밋 수정 완료 (옛 abc1234 → 새 def5678)”</td><td>그 커밋부터 HEAD 까지 <b>새 해시로 다시 써진다</b>. 내용 · 작성자 · 작성 시각은 그대로. 알림 “메시지 바꿈 완료 (옛 HEAD … → 새 HEAD …) · 커밋 N개 다시 씀”</td></tr>
<tr><td>꺼지는 때</td><td>병합 · rebase · cherry-pick · revert 중(단추 설명에 까닭)</td><td>눌렀을 때 까닭을 알림으로 — 작업 중 · 커밋 안 한 변경 · 지금 브랜치에서 닿지 않는 커밋 · 원격에 올라감 · 다른 브랜치도 품음 · 사이에 태그 · 사이에 병합 커밋</td></tr>
</table></div>
<p class="small muted">메시지 바꾸기 전 자리는 <code>refs/original/날짜-시각/…</code> 에 남는다(이력 목록에는 안 보인다). 아직 Push 하지 않았다면 <code>git reset --hard refs/original/…/heads/브랜치</code> 로 옛 이력이 그대로 돌아온다. “이미 올렸는지” 는 마지막 Fetch 기준이다.</p>
<h3 id="m-export">변경분 추출</h3>
<ol class="steps">
<li>이력에서 끝 커밋을 고른다. 두 커밋 사이면 시작 커밋을 고르고 <span class="btn-label">여기부터</span> 를 먼저 누른다(범위 표시 “228995f → 고른 커밋”). 안 누르면 고른 커밋의 부모와 견준다.</li>
<li><span class="btn-label">변경분 추출</span> → 폴더를 고른다.</li>
<li>고른 폴더 <b>아래에 새 폴더</b> <code>변경분_228995f..37a2ced_2026-09-22</code> 가 생기고, 바뀐 파일만 <b>바이트 그대로</b> 들어간다. 같은 이름이 있으면 <code>_2</code> · <code>_3</code> — 지난번에 뽑은 것이나 넣어 둔 파일과 섞이지 않는다.</li>
<li>그 폴더 <b>옆에</b> 안내 파일 <code>…_변경분안내.txt</code> 가 생긴다 — 범위(커밋 · 제목 · 날짜), 뽑은 파일(추가 · 수정 · 이름 바뀜은 옛 이름), 그리고 <b>장비에서 지워야 할 파일</b>(지워진 파일 · 이름 바뀐 옛 경로). 폴더에는 없는 것이라 안내에만 있다.</li>
</ol>
<p class="small muted">쓰기 전에 모두 쓸 수 있는지 먼저 보고, 하나라도 막히면 아무것도 쓰지 않는다. 병합 커밋 하나를 고르면 첫 부모와 견준다(안내 범위에 “(고른 커밋의 부모)”). 거꾸로 잡은 범위도 그 방향대로 뽑는다.</p>
<h2 id="m-merge">병합 충돌 푸는 순서</h2> <h2 id="m-merge">병합 충돌 푸는 순서</h2>
<ol class="steps"> <ol class="steps">
<li>Git 탭 → 브랜치 · 병합에서 내 브랜치를 체크아웃하고, 가져올 브랜치를 골라 <span class="btn-label">Merge → 현재 브랜치로</span>.</li> <li>Git 탭 → 브랜치 · 병합에서 내 브랜치를 체크아웃하고, 가져올 브랜치를 골라 <span class="btn-label">Merge → 현재 브랜치로</span>.</li>
@ -562,6 +586,9 @@ Accept Theirs (상대 쪽 파일 그대로) 15
<li>큰 폴더의 전체 비교는 크기가 같은 파일을 끝까지 읽는다. 4,500개 묶음(NVMe SSD · 16코어)에서 파일 캐시를 비운 첫 비교도 약 0.5초로 데운 상태와 거의 같았다 — 여러 갈래로 읽기 때문이다(한 갈래라면 0.4초 → 1.8초). 며칠 손대지 않은 묶음을 처음 비교할 때 한 번 9.2초가 났으나 다시 나지 않았다(원인은 가리지 못함 — 디스크 정보 캐시 · 백신 검사로 짐작). 느린 디스크(HDD)에서는 재 보지 않았다.</li> <li>큰 폴더의 전체 비교는 크기가 같은 파일을 끝까지 읽는다. 4,500개 묶음(NVMe SSD · 16코어)에서 파일 캐시를 비운 첫 비교도 약 0.5초로 데운 상태와 거의 같았다 — 여러 갈래로 읽기 때문이다(한 갈래라면 0.4초 → 1.8초). 며칠 손대지 않은 묶음을 처음 비교할 때 한 번 9.2초가 났으나 다시 나지 않았다(원인은 가리지 못함 — 디스크 정보 캐시 · 백신 검사로 짐작). 느린 디스크(HDD)에서는 재 보지 않았다.</li>
<li>코드 검사는 빌드가 된다는 보증이 아니다.</li> <li>코드 검사는 빌드가 된다는 보증이 아니다.</li>
<li>화면 왼쪽 · 오른쪽 반쪽 스냅은 <b>반쪽이 되지 않는다</b>. 창의 가장 작은 크기(1280 × 720)가 반쪽보다 커서, 2560 폭 모니터에서 75% 를 차지한다.</li> <li>화면 왼쪽 · 오른쪽 반쪽 스냅은 <b>반쪽이 되지 않는다</b>. 창의 가장 작은 크기(1280 × 720)가 반쪽보다 커서, 2560 폭 모니터에서 75% 를 차지한다.</li>
<li>변경 · 커밋 탭의 커밋 메시지 칸은 <b>한 줄</b>이다. 본문까지 쓰려면 커밋한 뒤 이력에서 우클릭 <span class="btn-label">메시지 바꾸기...</span>(여러 줄 창)을 쓴다 — 병합 커밋 본문은 앱이 저절로 붙인다.</li>
<li>커밋이 “이미 원격에 올라갔는지” 는 <b>마지막 Fetch 때</b>를 기준으로 본다. 그 뒤에 남이 올린 것까지는 모른다.</li>
<li>D 드라이브가 없는 PC 에서는 설정 · 로그가 <code>%LOCALAPPDATA%\UbisamConfig</code> 로 가서 <b>Windows 계정마다 따로</b>다. 한 장비를 여러 계정으로 쓰면 설정이 갈린다.</li>
<li>로그인 · 권한은 아직 없다. 창 여러 개로 비교하는 기능은 넣지 않기로 했다.</li> <li>로그인 · 권한은 아직 없다. 창 여러 개로 비교하는 기능은 넣지 않기로 했다.</li>
</ul> </ul>
</div> </div>
@ -907,7 +934,7 @@ Log(<span class="s">"step 5"</span>);</pre>
<div class="page-head"> <div class="page-head">
<div class="eyebrow">앞으로 남은 내용</div> <div class="eyebrow">앞으로 남은 내용</div>
<h1>남은 일</h1> <h1>남은 일</h1>
<p class="lede">10차까지 모두 끝났다. 차수별로 무엇을 고쳤는지와, 아직 남은 것 · 일부러 미뤄 둔 것.</p> <p class="lede">10차까지 끝났고 11차(사내 베타 앞)가 진행 중이다. 차수별로 무엇을 고쳤는지와, 아직 남은 것 · 일부러 미뤄 둔 것.</p>
</div> </div>
<div class="doc"> <div class="doc">
<h2>6차 — 병합을 끝까지 믿고 쓸 수 있게</h2> <h2>6차 — 병합을 끝까지 믿고 쓸 수 있게</h2>
@ -961,6 +988,23 @@ Log(<span class="s">"step 5"</span>);</pre>
<tr><td>D-1</td><td>병합 · rebase · cherry-pick · revert 를 새 저장소에서 파일 비교 탭을 미리 열지 않고 끝까지 — cherry-pick · revert 는 [모든 브랜치] 를 켜고 마지막 파일을 네 칸으로. 네 길 모두 마지막 Save 뒤 제목 · 요약 · 실제 기준(HEAD)이 같고 요약의 줄 수가 git diff 와 같음 · 커밋 뒤 기준은 새 HEAD · 줄끝 · BOM 바뀐 파일 0 · class 이름 다른 파일 0</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> </table></div>
<h2>11차 — 사내 베타 앞 (2026-09-18 ~)</h2>
<p>기획안에서 “일부” 로 남은 것(변경분 추출 · 커밋 메시지 수정)과, 다른 사람 PC 에서 처음 켤 때 깨질 것(배포 폴더 · D 드라이브).</p>
<div class="tbl wide"><table>
<tr><th>항목</th><th>상태</th><th>무엇</th></tr>
<tr><td>A-1 · A-2 · A-3 변경분 추출</td><td><span class="chip c-done">완료</span></td><td>먼저 아홉 경우로 뽑아 보니 지운 파일 · 이름 바뀐 옛 경로 · 범위가 어디에도 안 남고, 쓰던 폴더에 섞이고, 막히면 반쯤 뽑힌 채 멈췄다. 이제 고른 폴더 아래 새 폴더에 뽑고 옆에 <b>안내 파일</b>(장비에서 지울 파일 포함), 쓰기 전에 먼저 본다</td></tr>
<tr><td>A-4 ZIP 으로 뽑기</td><td><span class="chip c-wait">대기</span></td><td>할지 먼저 정한다</td></tr>
<tr><td>B-1 배포 묶음</td><td><span class="chip c-done">완료</span></td><td>매뉴얼이 가리키던 Release 가 09-07 것이라 폴더 비교 탭이 없었다. 쓰지 않는 dll · 다른 OS 용을 빼 97MB → 43.5MB, <code>scripts\make-bundle.ps1</code> · <code>배포묶음.txt</code>. 빈 폴더에서 병합 한 길 끝까지</td></tr>
<tr><td>B-2 D 드라이브 없는 PC · 첫 실행</td><td><span class="chip c-done">완료</span></td><td>첫 실행은 오류 없고 기본값이 매뉴얼과 같다. D 를 못 쓰면 켜다 말고 <b>창 없는 프로세스만 남던 것</b> — 플랫폼에서 <code>%LOCALAPPDATA%\UbisamConfig</code> 로 가고, 그마저 안 되면 “켜지 못했습니다” 뒤 끝내게(배포함)</td></tr>
<tr><td>C-1 [커밋 수정]</td><td><span class="chip c-done">완료</span></td><td>[마지막 메시지] 가 딴 브랜치 메시지를 가져오고 · 작성자가 바뀌고 · 작업 중에도 켜지던 것. 이제 HEAD 메시지 · 작성자 보존 · 작업 중 꺼짐 · 스테이징 파일 · 올린 커밋이면 먼저 묻기 · 알림에 옛 → 새 해시</td></tr>
<tr><td>C-2 앞 커밋 메시지 바꾸기</td><td><span class="chip c-done">완료</span></td><td>이력 줄 우클릭 <span class="btn-label">메시지 바꾸기...</span>(사용자 결정: 좁은 범위). 올린 커밋 · 사이 병합 · 태그 · 다른 브랜치가 품은 커밋은 막는다</td></tr>
<tr><td>F-12 C# 스타일 기본값</td><td><span class="chip c-done">완료</span></td><td>끔 → <b>AURORA</b>(.cs 에만)</td></tr>
<tr><td>E-1 바꾼 길을 다시 끝까지</td><td><span class="chip c-done">완료</span></td><td>변경분 아홉 경우 · 커밋 수정 여덟 경우 · 메시지를 바꾼 저장소에서 병합 · 다섯 길 + pull — 누른 수 = 로그, 줄끝 · BOM 0. 새로 걸린 것 없음</td></tr>
<tr><td>E-2</td><td><span class="chip c-done">완료</span></td><td>이 문서와 기획안을 11차에 맞춤</td></tr>
<tr><td>D-1 시험 도구 정리</td><td><span class="chip c-wait">대기</span></td><td>줄끝 검사 스크립트의 부모 하나 커밋 오류 등</td></tr>
<tr><td>F-1 ~ F-11 추가 요청</td><td><span class="chip c-wait">대기</span></td><td>칸 이름 · 어느 파일인지 · 머지 주석에 가져온 곳 · 메서드 단위 반영 · 폴더 두 개 보내기 · 툴박스 감추기 · 글자 크기 · 넓게 보기 · 모니터 · 저장 뒤 되돌리기 · 백업 저장 · 덩어리 잇기 · Git 계정 저장 확인</td></tr>
</table></div>
<h2>10차에서 고친 것 (2026-09-17)</h2> <h2>10차에서 고친 것 (2026-09-17)</h2>
<div class="tbl wide"><table> <div class="tbl wide"><table>
<tr><th>항목</th><th>무엇</th></tr> <tr><th>항목</th><th>무엇</th></tr>
@ -1020,12 +1064,12 @@ Log(<span class="s">"step 5"</span>);</pre>
<div class="page-head"> <div class="page-head">
<div class="eyebrow">현재까지 개발된 내용</div> <div class="eyebrow">현재까지 개발된 내용</div>
<h1>지금까지 만든 것</h1> <h1>지금까지 만든 것</h1>
<p class="lede">2026-09-07 방향 전환부터 2026-09-17 10차 끝까지. 차수마다 “실제로 써 보고 걸린 것” 을 지시서로 만들어 하나씩 고쳤다.</p> <p class="lede">2026-09-07 방향 전환부터 2026-09-22 11차(사내 베타 앞)까지. 차수마다 “실제로 써 보고 걸린 것” 을 지시서로 만들어 하나씩 고쳤다.</p>
</div> </div>
<div class="doc"> <div class="doc">
<div class="facts" style="margin-top:12px"> <div class="facts" style="margin-top:12px">
<div><b>114</b><span>로컬 커밋 · 09-08 ~ 09-17</span></div> <div><b>129</b><span>로컬 커밋 · 09-08 ~ 09-22</span></div>
<div><b>1,147</b><span>검사 통과 (22벌)</span></div> <div><b>1,247</b><span>검사 통과 (22벌)</span></div>
<div><b>0 · 0</b><span>빌드 경고 · 오류</span></div> <div><b>0 · 0</b><span>빌드 경고 · 오류</span></div>
<div><b>0</b><span>푸시</span></div> <div><b>0</b><span>푸시</span></div>
</div> </div>
@ -1044,6 +1088,7 @@ Log(<span class="s">"step 5"</span>);</pre>
<li><time>09-16</time><div><b>8차 — 고른 파일에 고른 내용을</b>[3분할로 열기] 로 처음 열면 다른 파일 내용이 고른 파일에 저장되던 것 · 작업마다 요약 · 빈 cherry-pick · MERGED 결과 번호 · revert 끝까지 · 원래 작성자 · 첫 Win+↓ · 병합 커밋 본문에 해결 내역. 다섯 길 다시 끝까지. 22벌 1,094건.</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>
<li><time>09-17</time><div><b>10차 — 두 탭이 같은 커밋을 · 누름을 놓치는지</b>한 번 누른 것이 안 남던 것은 시험 도구 쪽으로 가림 · Git 탭 · 파일 비교 탭이 고른 커밋을 서로 바로 따라감 · 규칙 끈 채 반영 색 · 첫 폴더 비교 9.2초 다시 재기 · 폴더 비교 “같은 것만” 폴더 줄과 같음의 까닭 · “다름(코드는 같음)” · 다섯 길(+ pull) 누른 수 = 로그. 22벌 1,147건.</div></li> <li><time>09-17</time><div><b>10차 — 두 탭이 같은 커밋을 · 누름을 놓치는지</b>한 번 누른 것이 안 남던 것은 시험 도구 쪽으로 가림 · Git 탭 · 파일 비교 탭이 고른 커밋을 서로 바로 따라감 · 규칙 끈 채 반영 색 · 첫 폴더 비교 9.2초 다시 재기 · 폴더 비교 “같은 것만” 폴더 줄과 같음의 까닭 · “다름(코드는 같음)” · 다섯 길(+ pull) 누른 수 = 로그. 22벌 1,147건.</div></li>
<li><time>09-22</time><div><b>11차 — 사내 베타 앞</b>변경분 추출이 새 폴더 · 안내 파일(장비에서 지울 파일)로 · [커밋 수정] 바로잡기(HEAD 메시지 · 작성자 보존 · 먼저 묻기) · 이력 우클릭으로 앞 커밋 메시지 바꾸기 · 배포 묶음 97MB → 43.5MB · D 드라이브 없는 PC 에서도 켜짐(플랫폼) · C# 스타일 기본 AURORA · 바꾼 길 다시 끝까지. 22벌 1,247건.</div></li>
</ol> </ol>
<h2>6차에서 끝낸 것</h2> <h2>6차에서 끝낸 것</h2>
@ -1070,14 +1115,15 @@ Log(<span class="s">"step 5"</span>);</pre>
</table></div> </table></div>
<h2>검사 하네스</h2> <h2>검사 하네스</h2>
<div class="bars" role="img" aria-label="검사 하네스 통과 건수: 3차 514, 4차 571, 5차 698, 6차 948, 8차 1,094, 9차 1,122, 10차 1,147"> <div class="bars" role="img" aria-label="검사 하네스 통과 건수: 3차 514, 4차 571, 5차 698, 6차 948, 8차 1,094, 9차 1,122, 10차 1,147, 11차 1,247">
<div class="bar"><span class="lb">3차 · 16벌</span><span class="tr"><span class="fl" style="width:44.8%"></span></span><span class="v">514</span></div> <div class="bar"><span class="lb">3차 · 16벌</span><span class="tr"><span class="fl" style="width:41.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:49.8%"></span></span><span class="v">571</span></div> <div class="bar"><span class="lb">4차 · 17벌</span><span class="tr"><span class="fl" style="width:45.8%"></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:60.9%"></span></span><span class="v">698</span></div> <div class="bar"><span class="lb">5차 · 20벌</span><span class="tr"><span class="fl" style="width:56.0%"></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:82.6%"></span></span><span class="v">948</span></div> <div class="bar"><span class="lb">6차 · 22벌</span><span class="tr"><span class="fl" style="width:76.0%"></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:95.4%"></span></span><span class="v">1,094</span></div> <div class="bar"><span class="lb">8차 · 22벌</span><span class="tr"><span class="fl" style="width:87.7%"></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:97.8%"></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:90.0%"></span></span><span class="v">1,122</span></div>
<div class="bar"><span class="lb">10차 · 22벌</span><span class="tr"><span class="fl" style="width:100%"></span></span><span class="v">1,147</span></div> <div class="bar"><span class="lb">10차 · 22벌</span><span class="tr"><span class="fl" style="width:92.0%"></span></span><span class="v">1,147</span></div>
<div class="bar"><span class="lb">11차 · 22벌</span><span class="tr"><span class="fl" style="width:100%"></span></span><span class="v">1,247</span></div>
</div> </div>
<p class="small muted">차수 끝의 통과 건수(7차는 따로 적지 않았다). 로직을 건드리면 테스트를 먼저 늘린다.</p> <p class="small muted">차수 끝의 통과 건수(7차는 따로 적지 않았다). 로직을 건드리면 테스트를 먼저 늘린다.</p>
@ -1090,6 +1136,8 @@ Log(<span class="s">"step 5"</span>);</pre>
<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>네 칸 병합</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>열기 · 클론 · 원격 · 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 (6차 B-6) · 병합 커밋 본문에 충돌 해결 내역 (8차 F-1) · Git 탭과 파일 비교 탭이 같은 커밋을 봄 (10차 B-1)</td><td><span class="chip c-done">완료</span></td></tr> <tr><td>Git</td><td>충돌 여러 개 한 번에 Accept (6차 B-6) · 병합 커밋 본문에 충돌 해결 내역 (8차 F-1) · Git 탭과 파일 비교 탭이 같은 커밋을 봄 (10차 B-1)</td><td><span class="chip c-done">완료</span></td></tr>
<tr><td>Git</td><td>변경분 추출 새 폴더 · 안내 파일(지울 파일 · 범위) · 먼저 보고 쓰기 (11차 A) · [커밋 수정] HEAD 메시지 · 작성자 보존 · 먼저 묻기 (11차 C-1) · 이력 우클릭 메시지 바꾸기 (11차 C-2)</td><td><span class="chip c-done">완료</span></td></tr>
<tr><td>배포</td><td><code>scripts\make-bundle.ps1</code> 배포 묶음(41개 · 43.5MB · <code>배포묶음.txt</code>) · D 드라이브 없는 PC 는 <code>%LOCALAPPDATA%\UbisamConfig</code>(플랫폼) (11차 B)</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>머지 주석</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>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> <tr><td>밖에서 부르기</td><td>명령줄(--diff · --folder · --merge) · 탐색기 보내기 · mergetool 등록</td><td><span class="chip c-done">완료</span></td></tr>
@ -1178,8 +1226,8 @@ Log(<span class="s">"step 5"</span>);</pre>
<div class="tbl wide"><table> <div class="tbl wide"><table>
<tr><th>기능</th><th>상태</th><th>실제</th></tr> <tr><th>기능</th><th>상태</th><th>실제</th></tr>
<tr><td>브랜치 리셋</td><td><span class="chip c-done">완료</span></td><td>이력 탭 선택 커밋 → [Reset]</td></tr> <tr><td>브랜치 리셋</td><td><span class="chip c-done">완료</span></td><td>이력 탭 선택 커밋 → [Reset]</td></tr>
<tr><td>커밋 메시지 수정</td><td><span class="chip c-done">바뀜</span></td><td>마지막 커밋만 [커밋 수정](amend) + [마지막 메시지]. 임의 커밋 우클릭 이름 변경은 없음</td></tr> <tr><td>커밋 메시지 수정</td><td><span class="chip c-done">완료</span></td><td>마지막 커밋은 [커밋 수정](HEAD 메시지 · 작성자 보존 · 스테이징 · 올린 커밋이면 먼저 묻기), 그 앞 커밋은 이력 줄 우클릭 [메시지 바꾸기...] — 원격에 아직 없고 사이에 병합 · 태그가 없을 때(11차)</td></tr>
<tr><td>변경분 파일 추출</td><td><span class="chip c-done">바뀜</span></td><td>[여기부터] 로 범위를 잡고 [변경분 추출] — 폴더로, 바이트 그대로. ZIP 은 없음</td></tr> <tr><td>변경분 파일 추출</td><td><span class="chip c-done">바뀜</span></td><td>[여기부터] 로 범위를 잡고 [변경분 추출] — 고른 폴더 아래 새 폴더로, 바이트 그대로. 옆에 안내 파일(범위 · 장비에서 지울 파일). ZIP 은 없음(11차 A-4 에서 정함)</td></tr>
<tr><td>임시 저장 (Stash)</td><td><span class="chip c-done">완료</span></td><td>[stash 저장] · 목록에서 [적용] [삭제]</td></tr> <tr><td>임시 저장 (Stash)</td><td><span class="chip c-done">완료</span></td><td>[stash 저장] · 목록에서 [적용] [삭제]</td></tr>
<tr><td>파일 단위 되돌리기</td><td><span class="chip c-done">완료</span></td><td>변경 · 커밋 탭 [변경 취소]</td></tr> <tr><td>파일 단위 되돌리기</td><td><span class="chip c-done">완료</span></td><td>변경 · 커밋 탭 [변경 취소]</td></tr>
</table></div> </table></div>
@ -1223,8 +1271,8 @@ Log(<span class="s">"step 5"</span>);</pre>
<tr><th>단계</th><th>v1.1 계획</th><th>실제</th><th>상태</th></tr> <tr><th>단계</th><th>v1.1 계획</th><th>실제</th><th>상태</th></tr>
<tr><td>1 착수 · 설계</td><td>09.02 – 09.04 · 요구사항 · 구조 · WPF 골격</td><td>기획안 v1.1(09-03). 구조를 App · Core · Git · UI 분리 대신 <b>UbisamBase 셸 + 플러그인</b>으로</td><td><span class="chip c-done">완료</span></td></tr> <tr><td>1 착수 · 설계</td><td>09.02 – 09.04 · 요구사항 · 구조 · WPF 골격</td><td>기획안 v1.1(09-03). 구조를 App · Core · Git · UI 분리 대신 <b>UbisamBase 셸 + 플러그인</b>으로</td><td><span class="chip c-done">완료</span></td></tr>
<tr><td>2 기반 구축</td><td>09.07 – 09.14 · Git 연동 · 커밋 그래프 · 편집기 · 비교 엔진</td><td>09-07 방향 전환 · 09-08 기능 덩어리 5개 · 09-09 3차 · 09-10 4차 · 09-11 5차. <b>MVP 8개가 이 단계 안에 모두 들어갔다</b></td><td><span class="chip c-done">완료</span></td></tr> <tr><td>2 기반 구축</td><td>09.07 – 09.14 · Git 연동 · 커밋 그래프 · 편집기 · 비교 엔진</td><td>09-07 방향 전환 · 09-08 기능 덩어리 5개 · 09-09 3차 · 09-10 4차 · 09-11 5차. <b>MVP 8개가 이 단계 안에 모두 들어갔다</b></td><td><span class="chip c-done">완료</span></td></tr>
<tr><td>3 핵심 기능</td><td>09.15 – 09.23 · 3-Way · 부분 수용 · Undo · 우클릭 · Git 메뉴</td><td>기능은 앞당겨 끝났으므로 “병합을 끝까지 믿고 쓸 수 있게”(6차)로 썼다. 09-14 <b>6차 완료</b> → 09-15 <b>7차 완료</b>(다른 충돌 길 · 창 크기) → 09-16 <b>8차 완료</b>(고른 파일에 고른 내용 · 병합 본문) → 09-17 <b>9차 · 10차 완료</b>(두 칸 기준 · 두 탭이 같은 커밋 · 다섯 길 누른 수 = 로그)</td><td><span class="chip c-done">완료</span></td></tr> <tr><td>3 핵심 기능</td><td>09.15 – 09.23 · 3-Way · 부분 수용 · Undo · 우클릭 · Git 메뉴</td><td>기능은 앞당겨 끝났으므로 “병합을 끝까지 믿고 쓸 수 있게”(6차)로 썼다. 09-14 <b>6차 완료</b> → 09-15 <b>7차 완료</b>(다른 충돌 길 · 창 크기) → 09-16 <b>8차 완료</b>(고른 파일에 고른 내용 · 병합 본문) → 09-17 <b>9차 · 10차 완료</b>(두 칸 기준 · 두 탭이 같은 커밋 · 다섯 길 누른 수 = 로그) → 09-22 <b>11차</b>(기획의 “일부” 둘 채움 — 변경분 안내 · 커밋 메시지 고치기)</td><td><span class="chip c-done">완료</span></td></tr>
<tr><td>4 테스트 · 배포</td><td>09.29 – 10.02 · 성능 · 인코딩/줄바꿈 검증 · 베타 · 매뉴얼</td><td>성능 · 인코딩 · 줄바꿈 검증은 5차 · 6차에서 앞당겨 함. 매뉴얼 초안은 이 문서. 베타 배포는 대기</td><td><span class="chip c-wait">대기</span></td></tr> <tr><td>4 테스트 · 배포</td><td>09.29 – 10.02 · 성능 · 인코딩/줄바꿈 검증 · 베타 · 매뉴얼</td><td>성능 · 인코딩 · 줄바꿈 검증은 5차 · 6차에서 앞당겨 함. 매뉴얼 초안은 이 문서. 베타 준비를 11차에서 — 배포 묶음(<code>scriptsmake-bundle.ps1</code>, 43.5MB) · 빈 폴더에서 병합 한 길 · D 드라이브 없는 PC. 베타 배포는 아직</td><td><span class="chip c-doing">진행</span></td></tr>
</table></div> </table></div>
<h4>일하는 방식 — v1.1 에 없던 것</h4> <h4>일하는 방식 — v1.1 에 없던 것</h4>
<ul> <ul>
@ -1270,7 +1318,7 @@ D:\MergeHubDemo\repo\ <span class="d">make-demo.ps1 이 만드는 Git
<li>PowerShell 에서 <code>powershell -ExecutionPolicy Bypass -File D:\Sorce\MergeTool\MergeHub\demo\make-demo.ps1</code>. 시연 직전에도 한 번 더 돌려 처음 상태로 만든다.</li> <li>PowerShell 에서 <code>powershell -ExecutionPolicy Bypass -File D:\Sorce\MergeTool\MergeHub\demo\make-demo.ps1</code>. 시연 직전에도 한 번 더 돌려 처음 상태로 만든다.</li>
<li>저장소 병합을 미리 한 번 해 보고 충돌 수 · 자동으로 풀린 수를 적어 둔다(발표 때 숫자를 말하기 위해). 끝나면 make-demo.ps1 로 되돌린다.</li> <li>저장소 병합을 미리 한 번 해 보고 충돌 수 · 자동으로 풀린 수를 적어 둔다(발표 때 숫자를 말하기 위해). 끝나면 make-demo.ps1 로 되돌린다.</li>
<li>설정 → MergeHub → 데모: <b>.git 있는 폴더</b> = <code>D:\MergeHubDemo\repo</code>, <b>.git 없는 폴더</b> = <code>…\demo\plain\left</code>. 위 줄에 두 화면을 오가는 버튼이 생긴다.</li> <li>설정 → MergeHub → 데모: <b>.git 있는 폴더</b> = <code>D:\MergeHubDemo\repo</code>, <b>.git 없는 폴더</b> = <code>…\demo\plain\left</code>. 위 줄에 두 화면을 오가는 버튼이 생긴다.</li>
<li>설정 → 머지 주석: “비교 · 병합에서 머지 주석 무시” 켬. 비교 옵션 “C# 코드 스타일 맞춤” 은 기본이 AURORA 이므로, 시연 전에 콤보에서 <span class="btn-label">맞추지 않음</span> 으로 바꿔 둔다 — 시연 중에 화면에서 고르는 것을 보여 준다.</li> <li>설정 → 머지 주석: “비교 · 병합에서 머지 주석 무시” 켬. 비교 옵션 “C# 코드 스타일 맞춤” 은 기본이 AURORA 이므로, 시연 전에 콤보에서 <span class="btn-label">C# 스타일 끔</span> 으로 바꿔 둔다 — 시연 중에 화면에서 고르는 것을 보여 준다.</li>
<li>셸 창을 최대화, 화면 배율 100~125%. 작업자 이름 창에는 발표자 이름.</li> <li>셸 창을 최대화, 화면 배율 100~125%. 작업자 이름 창에는 발표자 이름.</li>
</ol> </ol>
@ -1411,7 +1459,7 @@ D:\MergeHubDemo\repo\ <span class="d">make-demo.ps1 이 만드는 Git
<li><b>반영 기록을 소스에 남기고, 그 기록 때문에 생기는 충돌은 스스로 푼다.</b> 우리 팀은 누가 언제 반영했는지를 <code>// [이름] 날짜</code> 로 남긴다. WinMerge 에는 이 규칙이 없어 손으로 적어야 하고, 다음 병합 때 주석끼리 충돌한다. 만든 저장소에서 git 충돌 26개 중 2개가 이런 충돌이었다.</li> <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> 병합 결과를 내 쪽 파일의 줄끝 · 인코딩으로 쓴다. 3분할 저장이 LF 로 바꿔 쓰던 문제를 고친 뒤 3,367줄 파일의 diff 가 +8/−4 로 줄었다. CP949 한글 파일도 같은 규칙이다.</li>
<li><b>스타일만 다른 diff 를 걷어 낸다.</b> 사람마다 다른 C# 중괄호 자리를 AURORA / Allman 로 맞춘 뒤 견준다. 시연 파일에서 남은 차이가 39줄에서 진짜 변경 1줄로 준다.</li> <li><b>스타일만 다른 diff 를 걷어 낸다.</b> 사람마다 다른 C# 중괄호 자리를 AURORA / Allman 로 맞춘 뒤 견준다. 시연 파일에서 남은 차이가 39줄에서 진짜 변경 1줄로 준다.</li>
<li><b>우리가 고친다.</b> 사내 요구가 생기면 그날 넣는다 — C# 스타일 맞춤은 요청 당일 들어갔다. 기록과 검사(22벌 1,147건)가 저장소에 함께 있다.</li> <li><b>우리가 고친다.</b> 사내 요구가 생기면 그날 넣는다 — C# 스타일 맞춤은 요청 당일 들어갔다. 기록과 검사(22벌 1,247건)가 저장소에 함께 있다.</li>
</ol> </ol>
<h2>WinMerge 가 더 나은 점</h2> <h2>WinMerge 가 더 나은 점</h2>

View File

@ -364,7 +364,7 @@
| 상태 | 항목 | | 상태 | 항목 |
|---|---| |---|---|
| **완료** | E-1 바꾼 길을 다시 끝까지 — A-1 아홉 경우(지운 파일 · 옛 이름 · 범위가 안내에, 두 번 뽑아도 새 폴더 둘, 막힌 파일 없이 끝) · C-1 여덟 경우(HEAD 메시지 · 작성자 보존 · 묻는 창 · 작업 중 꺼짐 · 병합 커밋 부모 둘) · C-2 로 다시 쓴 저장소에서 병합 · 다섯 길 + pull 모두 끝까지. 누른 수 = 로그, 줄끝 · BOM · 충돌 표식 · class 0, 두 탭 같은 커밋. **새로 걸린 것 없음**. 시험 도구가 창 최대화를 풀던 것을 고침 | | **완료** | E-1 바꾼 길을 다시 끝까지 — A-1 아홉 경우(지운 파일 · 옛 이름 · 범위가 안내에, 두 번 뽑아도 새 폴더 둘, 막힌 파일 없이 끝) · C-1 여덟 경우(HEAD 메시지 · 작성자 보존 · 묻는 창 · 작업 중 꺼짐 · 병합 커밋 부모 둘) · C-2 로 다시 쓴 저장소에서 병합 · 다섯 길 + pull 모두 끝까지. 누른 수 = 로그, 줄끝 · BOM · 충돌 표식 · class 0, 두 탭 같은 커밋. **새로 걸린 것 없음**. 시험 도구가 창 최대화를 풀던 것을 고침 |
| 대기 | E-2 웹 문서 · 기획안(잠금, 사용자가 비밀번호로 잠금)을 11차에 맞게 | | **완료** | E-2 웹 문서 · 기획안을 11차에 맞게 — MergeHub 문서 버전 13(커밋 메시지 고치기 · 변경분 추출 두 절 · 한계 셋 · 11차 표 · 숫자, 단추 이름 91개 소스 대조로 "C# 스타일 끔" 바로잡음) · 기획안 버전 17(커밋 메시지 수정 완료 · 4단계 준비 중, 8쪽 A4 높이 같음, 잠금은 사용자) |
### F. 추가 요청 (2026-09-18 사용자) ### F. 추가 요청 (2026-09-18 사용자)