From c846474e4b05aae278ebb4e49f1654c9d2d291ff Mon Sep 17 00:00:00 2001 From: ksj09406 Date: Wed, 9 Sep 2026 15:55:16 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=91=EC=97=85=EC=A7=80=EC=8B=9C-4=EC=B0=A8?= =?UTF-8?q?:=20=EB=A1=9C=EC=BB=AC=20=EB=A8=B8=EC=A7=80=ED=88=B4=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=84=B1=206=ED=95=AD=EB=AA=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A 작업한 것이 사라지는 문제 2건, B 매일 쓰는 마찰 4건. 진행상황에 대기 표를 함께 넣었다. --- doc/작업지시-4차.md | 122 ++++++++++++++++++++++++++++++++++++++++++++ doc/진행상황.md | 22 ++++++++ 2 files changed, 144 insertions(+) create mode 100644 doc/작업지시-4차.md diff --git a/doc/작업지시-4차.md b/doc/작업지시-4차.md new file mode 100644 index 0000000..b2ecf0d --- /dev/null +++ b/doc/작업지시-4차.md @@ -0,0 +1,122 @@ +# 작업 지시 — MergeHub 4차 (로컬 머지툴 사용성) + +대상: `D:\Sorce\MergeTool\MergeHub` (플러그인) · `D:\Sorce\MergeTool\UbisamPlatform` (셸) +전제: 1~3차 지시서는 모두 끝났다(`진행상황.md`). 이 지시서는 **기능을 늘리는 것이 아니라 +매일 쓰는 사람의 걸림돌을 없애는 것**이 목적이다. 이 도구는 사내 로컬 환경에서 쓰는 +머지툴이 우선이므로, 서버·협업 기능보다 "혼자 앉아서 파일 두 개 견주는 일"이 빨라지는 쪽을 먼저 본다. + +--- + +## 공통 규칙 + +- **A → B 순서로 진행한다.** A 는 작업한 것이 사라지는 문제라 제일 먼저다. +- **항목 하나를 끝낼 때마다** 빌드하고 실제로 실행해 화면을 확인한 뒤 보고한다. 전부 끝내고 한 번에 보고하지 않는다. +- 항목 하나가 끝나면 `doc/진행상황.md` 의 대기/진행/완료를 갱신하고 **로컬 커밋**한다. 커밋 메시지는 한국어 한 줄. +- **푸쉬하지 않는다.** 원격 저장소가 생기기 전까지 `.git` 에만 쌓아 둔다. +- 기존 검사 하네스 16벌(514건)은 계속 통과해야 한다. 로직을 건드리면 **테스트를 먼저 늘린다.** +- 빌드 경고 0 · 오류 0 을 유지한다. 앱이 실행 중이면 파일 잠금으로 빌드가 실패하므로 `UbisamBase.Shell` 을 먼저 종료한다. +- 플랫폼을 고치면 **다른 소비 프로그램에 미치는 영향**을 함께 적고 `doc/history/changelog.md` 에 남긴다. +- 아래 넷은 지금 코드에 **아예 없다**(2026-09-09 확인). 있는 것을 고치는 게 아니라 새로 만드는 일이다 - + 최근 목록 · 같은 줄 접기 · 다음 파일 이동 · 외부 편집기 호출. + +--- + +## A. 먼저 — 작업한 것이 사라지는 문제 + +### A-1. 저장하지 않은 편집이 말없이 사라진다 + +- 증상: 파일 비교에서 LOCAL 을 고친 뒤 **저장하지 않은 채** 다른 파일을 열면 고치던 내용이 그대로 없어진다. + 묻지도 않고 알리지도 않는다. 머지툴에서 이건 기능 부족이 아니라 결함에 가깝다. +- **먼저 어느 길로 들어와야 사라지는지 전부 찾아 목록으로 보고한 뒤** 고친다. 최소한 이 길들을 본다. + `HomeViewModel.OnPlainCompareRequested` · `PickLeftFile` / `PickRightFile` · 폴더 비교에서 더블클릭 + (`FolderViewModel.OpenInDiffCore`) · 끌어다 놓기(`DropFile` · `RouteDroppedPaths`) · 폴더 검색 결과 열기 + (`OpenHitCore`) · Git 탭에서 다른 파일 고르기 · 데모 전환 · 3-Way 켜고 끄기. +- **비교 규칙을 바꾸는 길은 건드리지 않는다.** `ReloadLinesFrom` 은 편집을 지키도록 이미 만들어져 있다. + 지금 안전한 길까지 확인 창을 붙이면 규칙 하나 바꿀 때마다 창이 떠서 못 쓴다. **어느 쪽인지 먼저 확인하고 손댄다.** +- 묻는 창은 세 갈래다 — `저장` · `저장하지 않고 계속` · `취소`. 확인 창은 플랫폼 것(`MessageUtil`)을 쓴다. +- 고친 것이 없으면(`HasChanges == false`) 묻지 않는다. 저장 없이 넘어가도 되는 경우까지 묻는 것이 더 나쁘다. +- **판정 기준**: LOCAL 을 한 줄 고친 뒤 위에 적은 모든 길로 다른 파일을 열면 창이 뜬다. + `취소` 를 누르면 고치던 내용과 화면이 그대로 남는다. 고친 것이 없으면 창이 뜨지 않는다. + +### A-2. 내보낸 보고서에 만든 사람이 없다 + +- 증상: `결과 내보내기` 로 뽑은 파일 머리글에 `만든 때` 는 있는데 **누가 뽑았는지가 없다**(`CompareReport.Head`). + 남에게 보내라고 만든 기능이라 작성자가 없으면 결재나 메일에 붙였을 때 되묻게 된다. +- 이름은 **머지 주석과 같은 자리**에서 가져온다. 설정 `MergeCommentAuthor` → 비었으면 git config `user.name` → + 그것도 없으면 윈도우 계정. 지금 `MergeNote.Build` 가 하는 판단과 **같은 함수를 쓴다** - + 같은 사람이 같은 화면에서 뽑았는데 주석과 보고서에 다른 이름이 찍히면 그 자체가 버그다. +- 파일 비교 · 폴더 비교 두 보고서 모두 해당된다. +- **판정 기준**: 뽑은 파일 머리글에 만든 사람이 나오고, 그 이름이 반영한 줄 주석에 찍히는 이름과 같다. + +--- + +## B. 매일 쓰는 마찰 줄이기 + +### B-1. 최근 비교 목록 + +- 왜 필요한가 - **같은 짝을 반복해서 연다.** 경로를 매번 다시 고르는 것이 지금 제일 잦은 마찰이다. +- 파일 짝(왼쪽·오른쪽)과 폴더 짝을 **따로** 기억한다. 최근 것이 위. 상한은 10~20개. +- 파일 비교 · 폴더 비교 화면 위쪽에서 목록을 펼쳐 고르면 그 짝으로 바로 연다. +- 저장 자리는 플랫폼 설정 폴더(`D:\UbisamConfig`) 쪽이다. **설정 화면을 어지럽히지 않는다** - + 사람이 손으로 고칠 값이 아니다. `MergeHubSettings` 에 넣을지 파일을 따로 둘지는 구현자가 정하되 그 까닭을 적는다. +- **없는 경로를 목록에서 자동으로 지우지 않는다.** 네트워크 드라이브나 USB 는 잠깐 안 보일 뿐인데 + 지워 버리면 다시 찾아 들어가야 한다. 흐리게 보여 주고, 열려고 할 때 없다고 알린다. +- **판정 기준**: 프로그램을 껐다 켜도 최근 짝이 남아 있고, 목록에서 하나를 고르면 두 칸이 채워지며 비교가 열린다. + +### B-2. 같은 줄 접기 + +- 왜 필요한가 - **3000줄짜리에 차이가 5개면 2900줄을 스크롤해서 지나간다.** 읽는 값이 가장 크게 줄어드는 항목이다. +- 차이 앞뒤 몇 줄(기본 3줄, 설정 가능)만 남기고 그 사이의 같은 줄을 한 줄로 접는다. +- 접힌 자리에는 **몇 줄이 접혔는지 적는다**(예: `같은 줄 128개`). 누르면 그 자리만 펼친다. +- 켜고 끄는 스위치를 둔다. **기본은 꺼짐**이고 마지막 상태를 기억한다 - 처음 여는 사람이 "줄이 없어졌다"고 놀라면 안 된다. +- 어려운 곳을 미리 짚어 둔다. 여기서 막히면 보고하고 상의한다. + - 2-Way 두 칸, 3-Way 네 칸이 **같은 자리에서 함께** 접혀야 한다. 행 잠금(같은 줄이 같은 높이)이 깨지면 그 순간 머지툴이 아니다. + - 줄 번호는 접힌 뒤에도 **원래 파일의 번호**여야 한다. 다시 매기면 안 된다. + - 차이 이동(`Alt+↑↓`) · 미니맵 · 폴더 검색으로 들어온 줄 짚기가 접힌 상태에서도 맞아야 한다. + - 편집기는 투명한 `TextBox` 한 장이 스크롤 주인이다. 접힌 줄을 편집기에서 어떻게 다룰지가 이 항목의 핵심이다. +- **판정 기준**: 3000줄에 차이 5군데인 파일을 열면 화면 한 장에 다섯 군데가 다 보인다. + 접었다 펴도 줄 번호와 좌우 정렬이 그대로다. 3-Way 에서도 네 칸이 같은 자리에서 접힌다. + +### B-3. 폴더 비교에서 다음 다른 파일로 바로 넘어가기 + +- 왜 필요한가 - 지금은 파일 하나를 보고 **폴더 탭으로 돌아갔다가** 다음 파일을 다시 열어야 한다. + 다른 파일이 스무 개면 이 왕복을 스무 번 한다. +- 파일 비교 화면에 `이전 파일` · `다음 파일` 을 둔다. 단축키도 함께 준다(`Ctrl+PageUp` · `Ctrl+PageDown` 을 먼저 검토). +- 폴더 비교에서 열었을 때만 켜진다. 그냥 파일 두 개를 연 경우에는 넘어갈 목록이 없으므로 꺼져 있어야 한다. +- **지금 화면에 보이는 목록 순서**를 그대로 따른다. 필터로 "코드가 다른 것만" 을 걸어 뒀으면 그 안에서만 움직인다. +- 몇 번째인지 보여 준다(예: `3 / 27`). +- 저장하지 않은 편집이 있으면 **A-1 규칙을 그대로 탄다.** +- **판정 기준**: 폴더 비교에서 파일 하나를 열고, 폴더 탭으로 돌아가지 않고 다른 파일 전부를 차례로 훑을 수 있다. + +### B-4. 외부 편집기로 열기 + +- 왜 필요한가 - 크게 고칠 때는 결국 쓰던 편집기로 간다. 지금은 경로를 복사해서 직접 찾아 열어야 한다. +- 왼쪽·오른쪽을 각각 연다. 설정에 편집기 경로를 둔다. **비어 있으면 윈도우가 정한 기본 프로그램으로 연다** - + 아무것도 설정하지 않은 사람에게도 동작해야 한다. +- 가능하면 **지금 보고 있는 줄 번호까지 넘긴다.** 편집기마다 인자가 다르므로 + (Notepad++ `-n<줄>`, VS Code `-g <파일>:<줄>`) 인자 틀도 설정 값으로 둔다. 기본값은 파일 경로만. +- 밖에서 고치고 돌아오면 **다시 읽을지 묻는다.** 창이 다시 활성화될 때 파일 수정 시각을 확인하는 정도면 된다. + 묻지 않고 자동으로 다시 읽으면 이쪽에서 고치던 것이 날아간다. +- **판정 기준**: 버튼을 누르면 그 파일이 외부 편집기에서 열린다. 밖에서 고치고 돌아오면 다시 읽을지 묻고, + `예` 를 누르면 바뀐 내용이 반영된다. + +--- + +## 이번 지시서에서 하지 않는 것 + +번호를 붙여 두는 이유는 나중에 "왜 안 했나" 를 다시 묻지 않기 위해서다. + +- 로그인·권한 — 로컬 도구가 우선이라 뒤로 미룬다. +- 대용량 파일 성능(수만 줄) — 실제 사내 소스 크기를 확인한 뒤 판단한다. +- 비교 창 여러 개(3차 D-4) — 사용자 판단으로 뺀 항목이다. 되살리지 않는다. + +--- + +## 보고 형식 + +항목마다 이렇게 적는다. + +- 무엇이 원인이었는지 한두 줄 (새로 만드는 항목이면 어떤 판단을 했는지) +- 어떤 파일을 어떻게 고쳤는지 +- 실제로 실행해 확인한 결과 +- 커밋 해시 \ No newline at end of file diff --git a/doc/진행상황.md b/doc/진행상황.md index 0b0a8c8..3851a88 100644 --- a/doc/진행상황.md +++ b/doc/진행상황.md @@ -654,6 +654,28 @@ System.ArgumentException 아주 긴 경로 · 드라이브 뿌리). 전체 356 → **387건**. --- +## 4차 — 로컬 머지툴 사용성 (2026-09-09 ~) + +지시서: `doc/작업지시-4차.md`. 기능을 늘리는 것이 아니라 매일 쓰는 사람의 걸림돌을 없애는 것이 목적이다. + +### A. 작업한 것이 사라지는 문제 + +| 상태 | 항목 | +|---|---| +| 대기 | A-1 저장하지 않은 편집이 말없이 사라진다 | +| 대기 | A-2 내보낸 보고서에 만든 사람이 없다 | + +### B. 매일 쓰는 마찰 줄이기 + +| 상태 | 항목 | +|---|---| +| 대기 | B-1 최근 비교 목록 | +| 대기 | B-2 같은 줄 접기 | +| 대기 | B-3 폴더 비교에서 다음 다른 파일로 | +| 대기 | B-4 외부 편집기로 열기 | + +--- + ## 3~4주차로 미룬 것 디테일이라 지금 붙잡을 일이 아니다.