From f02c3e80492dcc57f67e363396220be2b1fc34f5 Mon Sep 17 00:00:00 2001 From: ksj09406 Date: Thu, 17 Sep 2026 11:46:24 +0900 Subject: [PATCH] =?UTF-8?q?9=EC=B0=A8=20B-1:=20=EB=B0=98=EC=98=81=ED=95=98?= =?UTF-8?q?=EB=A9=B0=20=EB=84=A3=EC=9D=80=20=EB=A8=B8=EC=A7=80=20=EC=A3=BC?= =?UTF-8?q?=EC=84=9D=20=EC=A4=84=EC=9D=84=20=EC=B2=98=EC=9D=8C=EB=B6=80?= =?UTF-8?q?=ED=84=B0=20=EB=8B=A4=EC=8B=9C=20=EC=A0=95=EB=A0=AC=ED=95=9C=20?= =?UTF-8?q?=EB=AA=A8=EC=96=91=EC=9C=BC=EB=A1=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 네 칸에서 Take 하면 넣는 주석 줄이 "추가"(파랑)였다가 다시 정렬하면 "무시"(회색)가 됐고, LOCAL(Mine) 칸에 내 파일에 없는 주석 글이 번호 없이 보였다. 사용자 결정 "처음부터 무시 색". - InsertNoteAbove: IsIgnored = Rules.IsFiltered(주석), 네 칸이면 SetThreeWay(null...) 로 Mine 빈 자리 - 규칙 "머지 주석 무시" 를 끄면 지금처럼 추가 - 하네스 NoteTest +5 (69건), 22벌 1,122건 통과, 빌드 경고 0 오류 0 확인: Weld/Unit1.cs Take Theirs 직후 무시 1 · 추가 0, [Aa] 로 두 번 다시 정렬해도 같음, Undo · Redo 가 주석 줄을 걷고 다시 넣음, 저장 내용(주석 1줄 · 3788줄) 그대로. Co-Authored-By: Claude Opus 5 --- doc/history/2026-09-17-9차.md | 49 ++++++++++++++++++++++++ doc/history/changelog.md | 1 + doc/진행상황.md | 2 +- src/MergeHub/ViewModels/HomeViewModel.cs | 8 +++- 4 files changed, 58 insertions(+), 2 deletions(-) diff --git a/doc/history/2026-09-17-9차.md b/doc/history/2026-09-17-9차.md index bf54a54..609bb30 100644 --- a/doc/history/2026-09-17-9차.md +++ b/doc/history/2026-09-17-9차.md @@ -105,3 +105,52 @@ - 자동 조작 쪽: 되풀이 스크립트가 처음에 한 회차만 돌았다. PowerShell 변수 이름은 대소문자를 가리지 않아 안쪽 반복 횟수 `$rounds` 가 회차 수 `$Rounds` 를 덮었다. 이름을 바꿔 다시 돌렸다. - Git 탭에서 고른 커밋을 파일 비교 탭이 새로고침 전까지 안 따라오는 것(A-1 에 적음)은 그대로다. + +## B-1. MERGED 칸에서 반영하며 넣은 주석 줄이 다시 정렬하면 "무시" 색이 된다 (2026-09-17, 완료) + +사용자 결정(2026-09-17): **처음부터 "무시" 색.** ("머지 반영함" 색으로 계속 · 그대로 둔다는 고르지 않음.) + +### 고치기 전에 다시 났다 (새로 만든 저장소, MergeHub 로 병합 → `Weld/Unit1.cs` 를 [3분할로 열기]) + +첫 충돌(101행 `Power100`)에서 Take Theirs → 규칙 [Aa 구분] 을 눌러 다시 정렬 → 한 번 더 눌러 되돌림. + +| 때 | 범례 | 101행 주석 줄 | LOCAL(Mine) 칸 | +|---|---|---|---| +| 연 뒤 | 무시 0 · 추가 0 · Conflict 6 · 총 3787줄 | - | - | +| Take Theirs 직후 | 머지 반영함 1 · **추가 1** · 무시 0 · Conflict 5 · 총 3788줄 | **추가(파랑)** | 번호 없이 **주석 글이 보임**(내 파일에 없는 줄) | +| 다시 정렬 뒤 | 머지 반영함 1 · 추가 0 · **무시 1** · Conflict 5 | **무시(회색)** | 빈 자리 | + +- 6차 기록의 "처음 넣었을 때 색" 은 "머지 반영함" 이 아니라 **"추가"** 였다. 지시서도 그 말을 옮겨 적었다. +- 요약 · 차이 수 · 총 줄 수 · 저장된 파일(주석 1줄 · 3788줄)은 다시 정렬 전후가 같았다 — 색과 범례만 달랐다. + +### 원인 + +- 주석 줄을 넣을 때(`InsertNoteAbove`) `IsApplied = true` 로 만들지만, 곧바로 반영 표시를 다시 계산하는 `RefreshAppliedFlags` 가 되돌리기 스택에 없는 그 줄을 **반영 아님**으로 되돌린다. + BASE 에 없는 줄이라 "추가" 가 된다. 무시 규칙은 정렬할 때만 매겨서 넣는 순간에는 빠져 있었다. +- 다시 정렬하면 줄을 새로 만들며 규칙 "머지 주석 무시" 에 걸려 `IsIgnored` → "무시"(색은 무시가 먼저). 파일에 원래 있던 주석 줄과 같은 모양이다. +- 네 칸에서는 `SetRemote(null, null)` 이 MINE 칸에 LocalText(주석)를 넣어 LOCAL(Mine) 칸에 글이 보였다. 다시 정렬한 행은 MINE 이 빈 자리다. + +### 고친 것 + +- `HomeViewModel.InsertNoteAbove` — 넣는 줄을 **다시 정렬했을 때와 같은 모양**으로 만든다. + `IsIgnored = Rules.IsFiltered(주석)`(규칙이 꺼져 있으면 지금처럼 추가), 네 칸이면 `SetThreeWay(null, null, null, null)`(MINE · REMOTE 빈 자리). +- 하네스 `NoteTest` 5건 추가(69건): 주석 줄이 끼어든 MERGED 를 다시 정렬하면 주석 행 하나가 서고 BASE · MINE · REMOTE 가 비며, 규칙이 켜져 있으면 무시 줄 · 끄면 아님 — 넣는 순간 모양의 기준. + +### 확인한 것 (같은 순서로 다시, `d9-b1.ps1` · `d9-b1-extra.ps1`) + +| 때 | 범례 | 101행 주석 줄 | LOCAL(Mine) 칸 | +|---|---|---|---| +| Take Theirs 직후 | 머지 반영함 1 · 추가 0 · **무시 1** · Conflict 5 · 총 3788줄 | 무시(회색) | 빈 자리 | +| [Aa] 한 번 · 두 번 다시 정렬 | 같음 | 같음 | 같음 | +| [Undo] | 머지 반영함 0 · 무시 0 · Conflict 6 · 총 3787줄 | 걷어냄 | - | +| [Redo] | 머지 반영함 1 · 무시 1 · Conflict 5 · 총 3788줄 | 다시 무시 | 빈 자리 | +| Save 뒤 | git `M` · 주석 1줄 · 3788줄 (고치기 전과 같음) | | | +| 규칙 "머지 주석 무시" 끔 · Take Theirs 직후 | 머지 반영함 1 · **추가 1** · 무시 0 (지금처럼) | 추가 | | + +- 하네스 22벌 1,122건 통과(+5) · 빌드 경고 0 · 오류 0. 설정은 시험마다 백업 → 되돌림(해시 같음). + +### 알게 된 것 · 남긴 것 (고치지 않음) + +- **규칙 "머지 주석 무시" 를 끈 채 다시 정렬하면 반영 색이 옆 줄로 옮겨 간다.** 주석 줄이 BASE 의 코드 줄(`Power93`)과 한 행으로 짝지어져, + 초록(머지 반영함)이 주석 줄에 · 보라(직접 수정)가 반영한 코드 줄(`Power100 => 0.9`)에 붙는다. 반영 표시가 BASE 줄 번호로 붙들려 있어서다. + 이번에 바꾼 것이 아니고 기본값(켬)에서는 나지 않는다. 범례 수 · 저장 내용은 같다. diff --git a/doc/history/changelog.md b/doc/history/changelog.md index 7711cbd..814f6c5 100644 --- a/doc/history/changelog.md +++ b/doc/history/changelog.md @@ -8,6 +8,7 @@ | 날짜 | 항목 | 커밋 | |---|---|---| +| 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 | 아래 | | 2026-09-17 | **9차 A-1** — cherry-pick 마지막 [Save] 뒤 두 칸의 기준이 고른 커밋 · 다른 브랜치 커밋 · HEAD 중 하나로 그때그때 달랐는데 요약은 늘 "내 쪽 대비" 라고 했다. 새로고침이 이력 목록을 갈아 끼우며 선택을 놓치면 **목록 맨 위**로 채웠기 때문([모든 브랜치] 에서 맨 위는 HEAD 가 아님). 사용자 결정대로 작업 중 충돌이 막 0 이 되면 기준을 HEAD 로 옮기고, 그 밖에는 해시로 되찾고 없으면 HEAD. 요약은 기준이 HEAD 일 때만 작업 글. 하네스 +18 | 아래 | | 2026-09-17 | **9차 지시서** — 8차 전부 끝. E-1 에서 새로 걸린 N1(A-1 cherry-pick 마지막 저장 뒤 요약은 "내 쪽 대비" 인데 두 칸의 기준은 이력에서 고른 커밋 — 먼저 정함 · A-2 한 번은 다른 브랜치 커밋이 기준 — 새로고침 뒤 선택 복원, 원인부터)과 전에 남긴 것(B-1 MERGED 주석 줄 "무시" 색 · B-2 폴더 트리 1초) · C-1 웹 문서(F-1 · 숫자) · D-1 cherry-pick · revert 를 마지막 파일까지 네 칸으로. 코드 변경 없음 | 아래 | diff --git a/doc/진행상황.md b/doc/진행상황.md index d87edf4..b207edf 100644 --- a/doc/진행상황.md +++ b/doc/진행상황.md @@ -257,7 +257,7 @@ | 상태 | 항목 | |---|---| -| 대기 | B-1 MERGED 칸에서 넣은 주석 줄이 다시 정렬하면 "무시" 색이 된다 (먼저 사용자와 정함) | +| **완료** | B-1 MERGED 칸에서 넣은 주석 줄이 다시 정렬하면 "무시" 색이 된다 — 사용자가 "처음부터 무시 색" 을 고름(2026-09-17). 넣는 순간 "추가"(파랑)였고 LOCAL(Mine) 칸에 주석 글이 보였는데, 다시 정렬했을 때와 같은 모양(무시 · Mine 빈 자리)으로 넣는다. Undo · Redo · 저장 내용 그대로, 규칙을 끄면 지금처럼 추가. 규칙을 끈 채 다시 정렬하면 반영 색이 옆 줄로 옮겨 가는 것은 적어 둠 | | 대기 | B-2 폴더 비교 뒤 화면 트리를 세우는 데 1초 남짓 (재고 정함) | ### C. 문서 diff --git a/src/MergeHub/ViewModels/HomeViewModel.cs b/src/MergeHub/ViewModels/HomeViewModel.cs index 32e0bd3..1e0c13c 100644 --- a/src/MergeHub/ViewModels/HomeViewModel.cs +++ b/src/MergeHub/ViewModels/HomeViewModel.cs @@ -2049,9 +2049,15 @@ namespace MergeHub.ViewModels { IsApplied = true, IsMergeNote = true, + // 다시 정렬했을 때와 같은 모양으로 넣는다(9차 B-1, 사용자 결정 "처음부터 무시 색"). + // 예전에는 넣는 순간 "추가"(파랑)였다가 타이핑이 멈추거나 규칙을 바꿔 다시 정렬하면 "무시"(회색)가 됐다. + // 파일에 원래 있던 주석 줄은 처음부터 무시다. 규칙 "머지 주석 무시" 를 끄면 지금처럼 추가로 남는다. + IsIgnored = Rules.IsFiltered(indent + note), }; - if (line.IsThreeWay) row.SetRemote(null, null); + // 네 칸에서는 MINE · REMOTE 칸을 빈 자리로 둔다. SetRemote 는 MINE 칸에 LocalText(주석)를 넣어, + // 내 파일에 없는 주석이 LOCAL(Mine) 칸에 번호 없이 보였다 - 다시 정렬하면 빈 자리가 됐다. + if (line.IsThreeWay) row.SetThreeWay(null, null, null, null); Lines.Insert(at, row); return row;