From fadc0000818fcb259f6c8a0489cdca21432e5cfd Mon Sep 17 00:00:00 2001 From: ksj09406 Date: Thu, 17 Sep 2026 16:05:13 +0900 Subject: [PATCH] =?UTF-8?q?10=EC=B0=A8=20F-3:=20=ED=8F=B4=EB=8D=94=20?= =?UTF-8?q?=EB=B9=84=EA=B5=90=20"=EC=A3=BC=EC=84=9D=EB=A7=8C=20=EB=8B=A4?= =?UTF-8?q?=EB=A6=84"=20=EC=9D=84=20"=EB=8B=A4=EB=A6=84(=EC=BD=94=EB=93=9C?= =?UTF-8?q?=EB=8A=94=20=EA=B0=99=EC=9D=8C)"=20=EC=9C=BC=EB=A1=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 주석 · 공백을 걷어내고 견주는 판정이라 BOM · 줄끝 · 인코딩 · 끝 공백 · 빈 줄 · 들여쓰기만 다른 파일도 "주석만 다름" 이었다. 사용자: "이름을 바꿔줘". 판정 · 수는 그대로. - 목록 · 범례(설명 붙임) · 요약 "다름 N(코드는 같음 M)" · 비교 결과 보고서 - 웹 문서의 이름도 바꿈(지난 기록은 그대로, 발행은 E-2) - 하네스 FolderTest +1 (78건), 22벌 1,147건 통과, 빌드 경고 0 오류 0 Co-Authored-By: Claude Opus 5 --- doc/history/2026-09-17-10차.md | 21 +++++++++++++++++++++ doc/history/changelog.md | 1 + doc/web/index.html | 16 ++++++++-------- doc/작업지시/10차.md | 6 ++++++ doc/진행상황.md | 1 + src/MergeHub/Services/CompareReport.cs | 2 +- src/MergeHub/Services/FolderComparer.cs | 11 ++++++----- src/MergeHub/Views/FolderView.xaml | 4 ++-- 8 files changed, 46 insertions(+), 16 deletions(-) diff --git a/doc/history/2026-09-17-10차.md b/doc/history/2026-09-17-10차.md index 27fd615..303cd93 100644 --- a/doc/history/2026-09-17-10차.md +++ b/doc/history/2026-09-17-10차.md @@ -273,3 +273,24 @@ ### 알게 된 것 (고치지 않음) - **BOM · 줄끝 · 인코딩 · 끝 공백 · 빈 줄 · 들여쓰기만 다른 파일도 "주석만 다름"** 이다. 주석 · 공백을 걷어내고 글자로 견주는 판정이라 그렇다(5차 · 3차 설계). 이름이 "주석만" 이라 BOM 만 다른 파일에는 맞지 않는 말이다 — 이름을 바꿀지는 따로 정할 거리. + +## F-3. "주석만 다름" 이름을 바꾼다 (2026-09-17, 추가 요청, 완료) + +사용자: "이름을 바꿔줘" — F-1 · F-2 를 가리며 적은 "BOM · 줄끝 · 인코딩 · 끝 공백 · 빈 줄 · 들여쓰기만 다른 파일도 '주석만 다름'" 에 대해. + +### 까닭 + +- 이 상태(`CommentOnly`)는 두 파일을 글자로 읽어 **주석과 공백을 걷어낸 코드**가 같은지로 정한다. 글자로 읽으면 BOM · 인코딩 차이가 사라지고, 공백을 지우면 줄끝 · 빈 줄 · 들여쓰기 차이도 사라진다. + F-1 · F-2 의 작은 짝 13개에서 주석이 없는 02 BOM · 03 줄끝 · 07 인코딩 · 08 끝 공백 · 12 빈 줄 · 13 들여쓰기가 모두 "주석만 다름" 이었다 — 판정은 설계대로지만 이름이 사실과 달랐다. + +### 고친 것 (판정 · 수는 그대로) + +- 이름을 **"다름(코드는 같음)"** 으로 — 이미 있는 "다름(이진)" 과 같은 꼴이라 "다름" 의 한 갈래로 읽힌다. "코드가 다른 것만" 필터와도 짝이 맞는다. +- `FolderStatusText.Of` · 요약(`FolderCompareResult.Summary`) "다름 N(코드는 같음 M)" · 비교 결과 보고서(`CompareReport` 가 같은 글자를 씀) · 범례(설명: "코드는 같고 주석 · 공백 · 빈 줄 · 줄끝 · BOM · 인코딩만 다른 파일입니다") · 코드 설명 주석. +- 웹 문서: 매뉴얼 폴더 비교 상태 설명(F-1 · F-2 표시도 함께 적음) · 발표 · 지금까지 만든 것 · 기획안 구조도 · 시연 · WinMerge 비교의 이름. 지난 기록(3차 연표)은 그때 이름 그대로. 발행은 E-2. +- 하네스 `FolderTest` 1건(78건): 요약이 "(코드는 같음 20)" 이고 "주석만" 이 없다. 글자 검사 기대값도 새 이름으로. + +### 확인한 것 + +- 작은 짝 13개 "전체"(사용자 설정 그대로, `d10-same-rename-all.png`): 02 · 03 · 07 · 08 · 09 · 12 · 13 이 "다름(코드는 같음)", 04 "같음(스타일만 다름)", 06 "같음(머지 주석만 다름)", 05 · 10 · 11 "다름", 01 "같음". 요약 `전체 13개 · 다름 10(코드는 같음 7) · 왼쪽만 0 · 오른쪽만 0 · 같음 3`. 범례 "다름(코드는 같음)". +- 하네스 22벌 1,147건 통과(FolderTest 78 · ReportTest 31) · 빌드 경고 0 · 오류 0. diff --git a/doc/history/changelog.md b/doc/history/changelog.md index a445ed3..ac15849 100644 --- a/doc/history/changelog.md +++ b/doc/history/changelog.md @@ -8,6 +8,7 @@ | 날짜 | 항목 | 커밋 | |---|---|---| +| 2026-09-17 | **10차 F-3 (추가 요청)** — 폴더 비교 "주석만 다름" 에 BOM · 줄끝 · 인코딩 · 끝 공백 · 빈 줄 · 들여쓰기만 다른 파일도 들어와 맞지 않는 이름이었다. 판정은 그대로 두고 "다름(이진)" 과 같은 꼴로 **"다름(코드는 같음)"** 으로 바꿈 — 목록 · 범례(설명 붙임) · 요약 "다름 N(코드는 같음 M)" · 비교 결과 보고서 · 웹 문서. 하네스 FolderTest +1 | 아래 | | 2026-09-17 | **10차 F-1 · F-2 (추가 요청)** — 폴더 비교 "같은 것만" 에서 같은 파일을 품은 폴더 줄이 폴더 자신의 상태 "다름"(주황)으로 보여 내용이 다른 것이 섞인 것처럼 읽혔다. 걸러 볼 때(같은 것만 · 왼쪽에만 · 오른쪽에만) 폴더 줄은 걸린 파일 수와 그 갈래 색으로 적는다. 설정(C# 스타일 맞춤 · 머지 주석 무시)으로 같음이 된 파일은 사용자 결정대로 같음으로 두고 "같음(스타일만 다름)" · "같음(머지 주석만 다름)" 으로 까닭을 붙인다. 요약 수 그대로. 하네스 FolderTest +15 | 아래 | | 2026-09-17 | **10차 D-1** — 9차 B-2 에서 한 번 잰 "그날 첫 폴더 비교 9.2초" 를 다시 냈다. 파일마다 버퍼 없이 열어 캐시를 비워도(한 갈래 읽기 0.4 → 1.8초로 먹는 것 확인) 전체 비교는 0.46~0.54초로 데운 상태와 같았고(여러 갈래 읽기), 앱을 새로 켠 첫 비교도 느리지 않았다. 9.2초는 다시 안 남 → 고치지 않음(제품 코드 변경 없음). 매뉴얼 한계 문장을 잰 값으로 고침. HDD 는 재 보지 않음 | 아래 | | 2026-09-17 | **10차 C-1** — 설정 "머지 주석 무시" 를 끈 채 네 칸을 다시 정렬하면 주석 줄이 BASE 코드 줄과 한 행이 되어 반영 표시(BASE 줄 번호)가 주석 줄에, 반영한 코드 줄은 "직접 수정" 으로 보였다. 네 칸은 규칙과 상관없이 주석 줄과 코드 줄을 떼어 놓고, 다시 정렬한 주석 줄을 "반영함" 으로 칠하지 않게 함. 요약 · 줄 수 · 저장 해시 그대로. 두 칸도 떼어 보니 차이 수가 늘어(4 → 5줄) 두 칸은 그대로. 하네스 NoteTest +5 | 아래 | diff --git a/doc/web/index.html b/doc/web/index.html index 9d20295..4f6bd2a 100644 --- a/doc/web/index.html +++ b/doc/web/index.html @@ -338,7 +338,7 @@ UbisamBase.Shell.exe --merge --base B.cs
  • 목록에서 파일을 두 번 누르거나 줄 단위 비교 를 누르면 파일 비교 탭에서 열린다. 거기서 Ctrl+PageDown / PageUp 으로 목록의 다음 · 앞 파일로 간다.
  • 상태와 보기 필터

    -

    같음 다름 주석만 다름 왼쪽에만 · 오른쪽에만 이진 — 주석만 다름은 코드가 같고 주석 · 공백만 다른 파일이다(언어를 아는 파일만, 8MB 까지). 머지 주석만 다른 파일은 같음으로 본다(설정에서 끔).

    +

    같음 다름 다름(코드는 같음) 왼쪽에만 · 오른쪽에만 이진 — 다름(코드는 같음)은 코드가 같고 주석 · 공백 · 빈 줄 · 줄끝 · BOM · 인코딩만 다른 파일이다(언어를 아는 파일만, 8MB 까지). 설정에 따라 머지 주석 줄이나 C# 중괄호 자리만 다른 파일은 같음으로 보고 “같음(머지 주석만 다름)” · “같음(스타일만 다름)” 처럼 까닭을 붙인다. 같은 것만 · 왼쪽에만 · 오른쪽에만으로 걸러 보면 폴더 줄은 걸린 파일 수(“같음 122개”)로 적는다.

    보기 필터: 다른 것만 · 전체 · 왼쪽에만 · 오른쪽에만 · 같은 것만 · 코드가 다른 것만. 필터는 다시 비교하지 않고 목록만 다시 그린다.

    복사 · 삭제

    → 오른쪽으로 복사 ← 왼쪽으로 복사 왼쪽 삭제 오른쪽 삭제. 폴더째 된다. 확인 창에 안에 든 파일 수가 나온다 — 몇 개가 덮이는지 보고 누른다.

    @@ -616,7 +616,7 @@ Accept Theirs (상대 쪽 파일 그대로) 15

    탭 순서가 곧 작업 순서

    - + @@ -636,7 +636,7 @@ Accept Theirs (상대 쪽 파일 그대로) 15
    • 훑기 · 가리기 · 세기 세 걸음으로 나눔. 가리기만 여러 갈래
    • -
    • 주석만 다름을 따로 색칠, 코드가 다른 것만 필터
    • +
    • 다름(코드는 같음)을 따로 색칠, 코드가 다른 것만 필터
    • 폴더 전체 검색 — 결과마다 왼쪽 · 오른쪽 · 양쪽
    • 폴더째 복사 · 삭제, 확인 창에 파일 수
    @@ -1061,7 +1061,7 @@ Log("step 5");

    기능 목록

    폴더 비교어느 파일이 다른가 — 같음 · 다름 · 주석만 다름 · 한쪽만 · 이진
    폴더 비교어느 파일이 다른가 — 같음 · 다름 · 다름(코드는 같음) · 한쪽만 · 이진
    파일 비교줄을 골라 반영 — 두 칸 또는 네 칸, 커밋 이력, 미니맵
    Git브랜치 · 병합 · 충돌 · 커밋 · 이력 · Blame · 태그
    설정비교 규칙 · 머지 주석 · Gitea · 데모 경로
    - + @@ -1120,7 +1120,7 @@ Log("step 5");

    3.1 정보 구조도 (실제)

    MergeHub (UbisamBase 셸 탭)
     ├─ 폴더 비교            — v1.1 에 없던 탭
    -│  ├─ 전체 / 빠른 비교 · 보기 필터 · 주석만 다름
    +│  ├─ 전체 / 빠른 비교 · 보기 필터 · 다름(코드는 같음)
     │  ├─ 폴더째 복사 · 삭제
     │  └─ 폴더 전체 검색 · 결과 내보내기
     ├─ 파일 비교
    @@ -1234,7 +1234,7 @@ D:\MergeHubDemo\repo\          make-demo.ps1 이 만드는 Git 
        feature/mine · feature/theirs
    영역기능상태
    폴더 비교전체 / 빠른 비교 · 하위 폴더 · 취소 · 보기 필터 6가지 · 주석만 다름 · 머지 주석만 다르면 같음 · 폴더째 복사/삭제 · 전체 검색 · 결과 내보내기 · 다음/앞 파일완료
    폴더 비교전체 / 빠른 비교 · 하위 폴더 · 취소 · 보기 필터 6가지 · 다름(코드는 같음) · 머지 주석 · 스타일만 다르면 같음(까닭 표시) · 폴더째 복사/삭제 · 전체 검색 · 결과 내보내기 · 다음/앞 파일완료
    파일 비교히스토그램 정렬 · 단어 단위 · 자리 옮김 · 줄/덩어리/전체 반영 · Undo/Redo · 색 구분 범례 이동 · 미니맵 · 북마크 · 찾기/바꾸기 · 줄 접기 · 편집 잠금 · 코드 검사 · 저장 형식 · 비교 규칙 · 최근 목록 · 끌어다 놓기완료
    언어13가지 색칠(C# · C/C++ · Java · JS/TS · Python · SQL · 셸 · XML/XAML/HTML · JSON · YAML · INI · Markdown · 평문) · CP949 판별 · 이진/그림완료
    네 칸 병합LOCAL · BASE · REMOTE · MERGED · Take Mine/Theirs · 자동 병합 · 충돌만 이동 · 완료 판정 · 한쪽 삭제 띠 · git mergetool완료
    - + @@ -1262,7 +1262,7 @@ D:\MergeHubDemo\repo\ make-demo.ps1 이 만드는 Git

    폴더 비교 (2분)

    1. 폴더 비교 탭. 탐색기에서 plain\left 를 왼쪽 경로 칸에, plain\right 를 오른쪽 칸에 끌어다 놓는다 → 바로 비교가 돈다.
    2. -
    3. 상태 색을 짚는다: 같음 · 다름 · 주석만 다름 · 왼쪽에만/오른쪽에만 · 이진.
    4. +
    5. 상태 색을 짚는다: 같음 · 다름 · 다름(코드는 같음) · 왼쪽에만/오른쪽에만 · 이진.
    6. 보기 필터를 코드가 다른 것만 으로 → 주석만 다른 파일이 빠진다.
    7. MergeNoteOnly.cs 가 같음에 있는 것을 보여 준다. StyleOnly.cs 는 스타일 맞춤을 켜고 다시 비교하면 같음으로 옮겨 간다.
    8. 검색 칸에 PowerWatt 같은 낱말 → 찾기 → 결과 줄의 왼쪽 · 오른쪽 · 양쪽 → 찾은 줄 열기.
    9. @@ -1357,7 +1357,7 @@ D:\MergeHubDemo\repo\ make-demo.ps1 이 만드는 Git
    - + diff --git a/doc/작업지시/10차.md b/doc/작업지시/10차.md index 2b41e91..a7e9795 100644 --- a/doc/작업지시/10차.md +++ b/doc/작업지시/10차.md @@ -134,6 +134,12 @@ 사용자 결정: **같음으로 두고 따로 표시** — "같음(스타일만 다름)" · "같음(머지 주석만 다름)" · "같음(스타일 · 머지 주석만 다름)". 필터 · 요약 수는 그대로. - **판정 기준**: 시험 묶음 "같은 것만" 에 주황 "다름" 줄이 없다. 작은 짝(같음 · 중괄호만 · 머지 주석만 · 코드 값 등)에서 까닭이 맞게 붙고 코드 값이 다른 파일은 어느 설정에서도 "다름". 요약 수 · 결과 글자 그대로. +### F-3. "주석만 다름" 이름을 바꾼다 (2026-09-17, 사용자) + +- F-1 · F-2 를 가리다 보니 BOM · 줄끝 · 인코딩 · 끝 공백 · 빈 줄 · 들여쓰기만 다른 파일도 "주석만 다름" 이었다(주석 · 공백을 걷어내고 글자로 견주는 판정). 사용자: "이름을 바꿔줘". +- 방향: 판정은 그대로 두고 이름만 사실대로 — "다름(이진)" 과 같은 꼴로 **"다름(코드는 같음)"**, 요약은 "다름 N(코드는 같음 M)". 범례 · 목록 · 보고서 · 웹 문서 모두. +- **판정 기준**: 화면 · 요약 · 보고서에 "주석만 다름" 이 없다(머지 주석 쪽 "같음(머지 주석만 다름)" 은 다른 말). 상태 판정 · 수는 그대로. + --- ## 이번 지시서에서 하지 않는 것 diff --git a/doc/진행상황.md b/doc/진행상황.md index 0ab38b1..0d99da6 100644 --- a/doc/진행상황.md +++ b/doc/진행상황.md @@ -318,6 +318,7 @@ | 상태 | 항목 | |---|---| | **완료** | F-1 · F-2 폴더 비교 "같은 것만" 에 내용이 다른 것처럼 보이는 줄이 섞인다 (2026-09-17 사용자) — 폴더 줄이 폴더 자신의 "다름"(주황)으로 보이던 것을 걸러 본 갈래의 개수("같음 122개")로. 설정(스타일 맞춤 · 머지 주석 무시)으로 같음이 된 파일은 사용자 결정대로 "같음(스타일만 다름)" · "같음(머지 주석만 다름)" 으로 따로 표시. 요약 수 그대로 | +| **완료** | F-3 "주석만 다름" 이름을 바꾼다 (2026-09-17 사용자) — BOM · 줄끝 · 인코딩 · 공백만 달라도 들어오던 상태를 "다름(코드는 같음)" 으로. 요약 "다름 N(코드는 같음 M)" · 범례 · 보고서 · 웹 문서. 판정 · 수 그대로 | --- ## 3~4주차로 미룬 것 diff --git a/src/MergeHub/Services/CompareReport.cs b/src/MergeHub/Services/CompareReport.cs index 65de3c3..2e409b7 100644 --- a/src/MergeHub/Services/CompareReport.cs +++ b/src/MergeHub/Services/CompareReport.cs @@ -143,7 +143,7 @@ namespace MergeHub.Services private static string StatusName(FolderEntryStatus status) => status switch { FolderEntryStatus.Different => "다름", - FolderEntryStatus.CommentOnly => "주석만 다름", + FolderEntryStatus.CommentOnly => FolderStatusText.Of(FolderEntryStatus.CommentOnly, SameReason.None), FolderEntryStatus.Binary => "다름(이진)", FolderEntryStatus.LeftOnly => "왼쪽에만", FolderEntryStatus.RightOnly => "오른쪽에만", diff --git a/src/MergeHub/Services/FolderComparer.cs b/src/MergeHub/Services/FolderComparer.cs index 19d3d76..47d0438 100644 --- a/src/MergeHub/Services/FolderComparer.cs +++ b/src/MergeHub/Services/FolderComparer.cs @@ -23,7 +23,7 @@ namespace MergeHub.Services Binary, /// - /// 코드는 같고 주석·공백만 다르다. + /// 코드는 같고 주석 · 공백 · 빈 줄 · 줄끝 · BOM · 인코딩만 다르다. 화면 이름 "다름(코드는 같음)"(10차 F-3). /// /// 따로 두는 이유 - 봐야 할 성격이 다르다. 주석만 손댄 파일은 눈으로 훑고 넘길 수 있는데 /// 다른 것과 같은 색으로 섞여 있으면 전부 열어 봐야 한다. @@ -66,7 +66,8 @@ namespace MergeHub.Services FolderEntryStatus.LeftOnly => "왼쪽만", FolderEntryStatus.RightOnly => "오른쪽만", FolderEntryStatus.Binary => "다름(이진)", - FolderEntryStatus.CommentOnly => "주석만 다름", + // 예전 이름 "주석만 다름" - 주석뿐 아니라 공백 · 빈 줄 · 줄끝 · BOM · 인코딩만 다른 파일도 여기 들어와 맞지 않는 말이었다(10차 F-3, 사용자). + FolderEntryStatus.CommentOnly => "다름(코드는 같음)", _ => string.Empty }; @@ -170,7 +171,7 @@ namespace MergeHub.Services public int LeftOnlyCount { get; set; } public int RightOnlyCount { get; set; } - /// 그중 코드는 같고 주석만 다른 것. "다름" 안에 든 수다. + /// 그중 코드는 같은 것("다름(코드는 같음)"). "다름" 안에 든 수다. public int CommentOnlyCount { get; set; } /// 항목 상한에 걸려 도중에 멈췄는지. @@ -178,7 +179,7 @@ namespace MergeHub.Services public string Summary => $"전체 {TotalFiles}개 · 다름 {DifferentCount}" - + (CommentOnlyCount > 0 ? $"(주석만 {CommentOnlyCount})" : string.Empty) + + (CommentOnlyCount > 0 ? $"(코드는 같음 {CommentOnlyCount})" : string.Empty) + $" · 왼쪽만 {LeftOnlyCount} · 오른쪽만 {RightOnlyCount} · 같음 {SameCount}" + (Truncated ? " (너무 많아 일부만 봄)" : string.Empty); } @@ -284,7 +285,7 @@ namespace MergeHub.Services switch (item.Status) { case FolderEntryStatus.Same: result.SameCount++; break; - // "주석만 다름"도 다름의 한 갈래다. 둘 다 센다 - 요약이 "다름 3(주석만 1)" 로 읽힌다. + // "다름(코드는 같음)"도 다름의 한 갈래다. 둘 다 센다 - 요약이 "다름 3(코드는 같음 1)" 로 읽힌다. case FolderEntryStatus.CommentOnly: result.DifferentCount++; result.CommentOnlyCount++; diff --git a/src/MergeHub/Views/FolderView.xaml b/src/MergeHub/Views/FolderView.xaml index 68d0834..c702fd4 100644 --- a/src/MergeHub/Views/FolderView.xaml +++ b/src/MergeHub/Views/FolderView.xaml @@ -259,8 +259,8 @@ Background="{Binding Source={x:Static svc:FolderEntryStatus.CommentOnly}, Converter={StaticResource StatusBrush}}" BorderThickness="1" BorderBrush="{DynamicResource Ubisam.Brush.Input.Border}"/> - +
    재료들어 있는 경우보여 줄 것
    plain\left · plain\right같은 파일 · 코드 다름 · 주석만 다름 · 머지 주석만 다름 · C# 스타일만 다름(AURORA vs Allman) · 한쪽에만 있음 · 이진 파일폴더 비교 상태와 필터, 머지 주석 · 스타일 무시
    plain\left · plain\right같은 파일 · 코드 다름 · 코드는 같음(주석 · 공백) · 머지 주석만 다름 · C# 스타일만 다름(AURORA vs Allman) · 한쪽에만 있음 · 이진 파일폴더 비교 상태와 필터, 머지 주석 · 스타일 무시
    style\같은 코드를 AURORA 와 Allman 로스타일 맞춤 전후의 차이 수
    mergetool\BASE · LOCAL · REMOTE · 충돌 표시가 든 MERGEDgit mergetool 네 칸
    big\7,479줄 두 파일큰 파일에서 이동 · 줄 번호 다섯 자리
    폴더 비교2-way · 3-way2-way 만
    줄 안 변경 강조 · 이동 블록있음있음 (단어 단위 · 자리 옮김)
    공백 · 대소문자 · 정규식 줄 필터있음있음 (공백 3단계)
    주석 차이주석 차이 무시 옵션폴더 비교에 주석만 다름 상태와 코드가 다른 것만 필터
    주석 차이주석 차이 무시 옵션폴더 비교에 다름(코드는 같음) 상태와 코드가 다른 것만 필터
    머지 주석 // [이름] 날짜없음반영할 때 넣고, 비교 · 병합에서는 무시
    C# 중괄호 스타일 맞춤없음 (전처리 플러그인을 직접 만들면 가능)AURORA / Allman 로 맞춘 뒤 비교 · 저장 · 폴더 비교에서도 같음
    이미지 · 이진이미지 비교 창(겹쳐 보기 등) · 16진 비교기본만 — 크기 · SHA-1 · 처음 갈리는 바이트 · 그림 나란히 · 앞 4KB 16진