Ubisam-MergeTool/doc/진행상황.md
ksj09406 c46abbd99a 5차 B-2: 폴더 비교를 세 걸음으로 나눠 3~5배 빠르게
훑기 - 가리기 - 세기로 나눴다. 훑으면서 그 자리에서 파일을 열어
견주던 것을, 트리를 먼저 세우고 가리는 일만 여러 갈래로 돌린다.
결과 차례는 트리가 정하므로 몇 갈래로 돌리든 같은 순서로 나온다.
세는 일만은 한 갈래로 한다. 파일이 64개 아래면 나누지 않는다 -
그 아래는 갈래를 세우는 값이 더 든다.

폴더를 훑는 방식도 바꿨다. Directory.GetFiles 는 이름만 주므로
파일마다 File.Exists 와 FileInfo 를 양쪽에 다시 물었다. 4,500개면
만 팔천 번이다. DirectoryInfo.GetFiles 는 크기와 수정 시각이
딸려 오므로 한 번으로 끝난다. 974ms 가 89ms 가 됐다.

재는 데 쓴 묶음은 우리가 만들었다(실제 소스를 열지 않는다).
2026-09-10 에 재 둔 모양을 흉내 냈고 씨앗을 고정해서 몇 번을
돌려도 똑같다.

  전체 비교  3,077ms -> 901ms (3.4배)
  빠른 비교  1,832ms -> 392ms (4.7배)
  앱에서 기다리는 시간 2,078ms -> 1,086ms (1.9배)

결과는 글자 하나까지 같다. 앱 쪽이 덜 줄어든 것은 비교가 끝난 뒤
화면 트리를 세우는 데 따로 드는 시간 때문이고, 거기는 손대지 않았다.
빠른 비교를 기본으로 켜지도 않았다 - 틀릴 수 있는 방법이다.

FolderTest 41 -> 51 (갈래 나누는 길, 열 번 돌려 같은 결과, 취소).
전체 698건 통과(하네스 20벌). 경고 0 · 오류 0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 16:35:16 +09:00

108 lines
4.2 KiB
Markdown

# MergeHub 진행 상황
**지금 무엇이 남았는지만** 적는다. 끝난 것의 상세는 [history/](history/) 로 옮겼다.
항목을 끝내면 이렇게 한다.
1. 상세는 `history/YYYY-MM-DD-주제.md` 에 적는다.
2. 이 파일은 **대기 → 완료로 상태만** 고친다.
3. [history/changelog.md](history/changelog.md) 에 한 줄을 더한다 (날짜 · 무엇을 왜 · 커밋).
푸시는 하지 않는다 — 사내 Gitea 저장소가 만들어지면 그때 한 번에 올린다.
상태 표기: `대기` · `진행` · `완료`
---
## 4차 — 로컬 머지툴 사용성 (2026-09-10) — **전부 끝**
진행 기록: [history/2026-09-10-4차.md](history/2026-09-10-4차.md)
지시서: [작업지시/4차.md](작업지시/4차.md). 기능을 늘리는 것이 아니라 매일 쓰는 사람의 걸림돌을 없애는 것이 목적이다.
### A. 작업한 것이 사라지는 문제
| 상태 | 항목 |
|---|---|
| **완료** | A-1 저장하지 않은 편집이 말없이 사라진다 |
| **완료** | A-2 내보낸 보고서에 만든 사람이 없다 |
### B. 매일 쓰는 마찰 줄이기
| 상태 | 항목 |
|---|---|
| **완료** | B-1 최근 비교 목록 |
| ~~취소~~ | ~~B-2 같은 줄 접기~~ (2026-09-10 사용자 판단으로 뺌) |
| **완료** | B-3 폴더 비교에서 다음 다른 파일로 |
| ~~취소~~ | ~~B-4 외부 편집기로 열기~~ (2026-09-10 사용자 판단으로 뺌) |
### C. 화면 구성 정리
| 상태 | 항목 |
|---|---|
| **완료** | C-1 같은 경로가 세 군데 나온다 |
| **완료** | C-2 아래쪽 정보가 세 군데로 흩어져 있다 |
| **완료** | C-3 Git 탭의 원격 블록을 접는다 |
| **완료** | C-4 색 구분 범례를 이동 도구로 |
| **완료** | C-5 ACTIONS 칸을 자주 쓰는 것과 한 번 정하는 것으로 나눈다 |
### D. 변경 이력을 전용 폴더로
| 상태 | 항목 |
|---|---|
| **완료** | D-1 `doc/history/` 를 만들고 진행상황을 나눈다 |
| **완료** | D-2 앞으로의 기록 규칙을 정한다 |
---
## 5차 — 실제 소스에 맞추기 (2026-09-10 ~)
진행 기록: [history/2026-09-11-5차.md](history/2026-09-11-5차.md)
지시서: [작업지시/5차.md](작업지시/5차.md). 지금까지는 시험용 파일로만 확인했다.
5차는 실제 소스(2,115개 · 426,723줄)를 한 번 재 보고 나온 것들이다.
2026-09-11 부터는 실제 소스를 더 보지 않는다 - 여기는 머지툴을 만드는 자리이고,
시험 재료는 우리가 만들어 쓴다. 이미 받아 둔 숫자는 그대로 쓴다.
### A. 남의 소스를 망가뜨릴 수 있는 것
| 상태 | 항목 |
|---|---|
| **완료** | A-1 CP949 파일 67개를 잘못 읽으면 한글이 깨진다 |
| **완료** | A-2 커밋·체크아웃 뒤에 저장 안 한 편집이 조용히 사라진다 |
### B. 실제 소스에 맞추기
| 상태 | 항목 |
|---|---|
| **완료** | B-1 XAML 색칠이 사실상 없다 (400개 · 42,477줄) |
| **완료** | B-2 폴더 비교가 오래 걸린다 — 전체 비교 3.4배 · 빠른 비교 4.7배 |
### C. 실전 투입
| 상태 | 항목 |
|---|---|
| 대기 | C-1 실제 저장소로 병합을 한 번 끝까지 해 본다 |
---
## 3~4주차로 미룬 것
디테일이라 지금 붙잡을 일이 아니다.
- 로그인·권한
- ~~대용량 파일 성능~~ — 잴 필요가 없어졌다(2026-09-10). 실제 소스의 가장 큰 파일이 7,479줄이고 편집·이동·재정렬이 모두 빠르다
- 같은 줄 접기 (4차 B-2) — 차이 이동만으로 부족하다고 느끼는 순간이 오면 그때
- 외부 편집기로 열기 (4차 B-4) — 설정 값 두 개를 채우는 수고가 얻는 것보다 컸다
드래그&드롭(D-7)과 비교 결과 내보내기(D-6)는 3차에서 앞당겨 끝냈다.
---
## 지난 기록
| 날짜 | 문서 |
|---|---|
| 2026-09-10 | [4차 — 로컬 머지툴 사용성](history/2026-09-10-4차.md) — 열세 항목, 열하나 완료 · 둘 취소 |
| 2026-09-09 | [3차 — 버그 정리 + 기능 확장](history/2026-09-09-3차.md) — 스물세 항목, 전부 끝 |
| 2026-09-08 | [2주차 — 폭 넓히기](history/2026-09-08-2주차.md) — 기능 덩어리 ①~⑤ |
한 줄 요약은 [history/changelog.md](history/changelog.md) 에 있다.