- 바꾸기: 찾기 칸 아래에 바꿀 말 줄이 붙는다. Ctrl+F 로 열면 안 뜬다 - 찾기만 할 때 자리를 뺏지 않기 위해서다. "바꾸기" 는 고른 자리가 찾는 말일 때만 바꾸고 다음으로 넘어간다 - 엉뚱한 자리를 덮어쓰는 것보다 한 번 더 누르게 하는 편이 낫다. "모두" 는 한 번에 바꾸고 몇 개인지 알려 준다(되돌리기는 편집기의 Ctrl+Z 가 맡는다). - 덩어리 단위 반영: 줄 하나씩만 되면 연속 다섯 줄을 다섯 번 눌러야 한다. WinMerge·Beyond Compare 가 덩어리를 기본 단위로 쓰는 이유다. 덩어리는 "차이로 잡힌 줄이 이어지는 구간"이고, 캐럿이 그 안에 있을 때만 켜진다. Alt+Shift+→. - 저장 형식: 사내 소스에 CP949 로 저장된 파일이 섞여 있어 새로 만드는 파일과 형식이 갈린다. 읽어서 보여 주기만 하면 그 갈림을 못 고치므로 저장할 때 고를 수 있게 했다. 기본값 "원본 유지" 라 지금까지와 동작이 같다. Save & Commit 경로도 같은 값을 쓴다 (전에는 File.WriteAllText 로 UTF-8 고정이었다). 실행 확인: PulseUs → PulseMicros 2개 바꿈 · 마지막 차이에서 2줄 한 번에 반영. 단축키 61 → 63건, 전체 305건 통과. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
6.8 KiB
MergeHub 진행 상황
작업 하나가 끝날 때마다 이 표를 고치고 로컬 커밋한다. 푸시는 하지 않는다 — 사내 Gitea 저장소가 만들어지면 그때 한 번에 올린다.
상태 표기: 대기 · 진행 · 완료
이번 주 목표 (2주차 · 폭 넓히기)
기획안(문서/사내_MergeTool_개발기획안) 기준으로 기능 덩어리를 100% 로 채우는 것이 목표다.
한 덩어리를 깊게 파는 것보다 여러 덩어리를 "있다"고 말할 수 있는 선까지 올린다.
④ Git 조작 — 완료 (2026-09-08)
서비스에는 이미 있는데 화면에 없던 것들이라, 다섯 가지가 하루가 아니라 반나절에 붙었다.
| 상태 | 항목 | 내용 | 확인 |
|---|---|---|---|
| 완료 | 커밋 이름 변경(amend) | 커밋 수정 버튼. 고쳐 쓸 메시지를 다시 치지 않게 마지막 메시지 버튼도 함께 뒀다 |
확인: 6e6bb78 → 0d7401f 로 메시지가 바뀜 |
| 완료 | stash 목록 | 콤보에서 골라 적용/삭제. 목록이 바뀌면 고른 항목을 다시 잡는다 - 하나 꺼내면 번호가 당겨지는데 옛 항목을 붙들고 있으면 다음 삭제가 엉뚱한 것을 지운다 |
확인: 저장 → 목록에 뜸 → 적용 → 워킹트리 복구 |
| 완료 | 두 커밋 사이 비교 | 이력에서 여기부터 로 시작점을 잡으면 그 뒤 고르는 커밋이 끝점이 된다. 안 잡으면 지금까지처럼 부모와 비교 |
확인: 헤더가 2766bc5 → 6e6bb78 (2개 파일) |
| 완료 | blame (줄별 작성자) | Blame 탭 신설. 변경 목록에서 파일을 고르고 blame 을 누르면 경로가 넘어간다 |
확인: 31줄 전부 커밋·날짜·작성자 가 붙어 나옴 |
| 완료 | 변경분 파일 추출 | GitService.ExportChangedFiles 신설. 저장소 안 경로 구조를 그대로 만들고, 바이트 그대로 옮긴다(텍스트로 다시 쓰면 줄바꿈·인코딩이 바뀐다). 지워진 파일은 뽑을 것이 없어 건너뛴다 |
확인: 2개 파일 → ...Temp (건너뜀 0개) |
③ 3-Way 병합 — 완료 (2026-09-08)
"볼 수 있다"에서 "끝낼 수 있다"로.
| 상태 | 항목 | 내용 | 확인 |
|---|---|---|---|
| 완료 | 자동 병합 | 저쪽만 고친 줄(ThreeWayState.RemoteChanged)을 한 번에 가져온다. 충돌과 내가 고친 줄은 안 건드린다. git merge 가 자동으로 해 주는 일을 여기서도 해 주는 것 |
Theirs only 1 → 0, 자동 병합 버튼이 스스로 꺼짐 |
| 완료 | 충돌만 이동 | 이전 충돌 / 다음 충돌 (Alt+Shift+↑↓). 아직 안 정한 충돌만 딛는다 |
3개를 차례로 딛고 마지막에 버튼이 꺼짐 |
| 완료 | 병합 완료 판정 | ACTIONS 위쪽에 남은 충돌 N개(빨강) → 충돌 정리 끝(초록) |
3개 → 2 → 1 → 끝 |
여기서 판단이 하나 필요했다 — 충돌인지 아닌지는 BASE·MINE·REMOTE 를 견주면 저절로 나오지만,
"내 것으로 간다"고 정한 줄은 내용이 그대로라 여전히 충돌로 보인다. 그래서 NeedsDecision
(충돌이면서 아직 반영·수정 표시가 없는 줄)을 따로 두었다. 그 결정은 글을 바꾸지 않으므로 편집 뒤
다시 정렬하면 사라지는데, 얼어 있는 BASE 줄 번호(없으면 MINE 줄 번호)로 붙들어 되살린다.
곁들여 고친 것: Take Mine · Take Theirs 버튼이 줄을 옮겨도 켜짐/꺼짐이 그대로였다.
CommunityToolkit 커맨드는 CommandManager 를 구독하지 않는데 이 둘만 갱신 목록에서 빠져 있었다.
키보드(Alt+←/→)로는 되고 버튼만 안 되던 이유가 이것이다.
① 폴더 비교 — 완료 (2026-09-08)
| 상태 | 항목 | 내용 | 확인 |
|---|---|---|---|
| 완료 | 폴더째 복사·삭제 | 파일 하나씩만 되던 것을 폴더에도 열었다. 확인 창에 안에 든 파일 수를 적는다 - "폴더 하나"라고만 물으면 몇 개가 덮이는지 모르는 채 확인을 누르게 된다 | sub(파일 2개) 폴더째 복사 → bsubdeep wo.txt 까지 따라옴 |
| 완료 | 상태별 보기 필터 | 다른 것만 / 전체 / 왼쪽에만 / 오른쪽에만 / 같은 것만. 다시 비교하지 않고 목록만 다시 그린다 | 15개 → "왼쪽에만" 5개, 요약 줄은 그대로 |
| 완료 | 비교 취소 | FolderComparer.Compare 에 CancellationToken. 항목 하나를 볼 때마다 확인하므로 누르는 즉시 멈춘다. 앞서 본 결과는 그대로 남는다 |
테스트 3건 |
설계 하나: 파일을 실제로 옮기고 지우는 부분을 Services/FileOps.cs 로 뺐다.
되돌릴 수 없는 일이라 화면 없이 검사할 수 있어야 하기 때문이다 - 겹치는 파일은 덮고,
대상에만 있던 파일은 남기고, 두 번 복사해도 같은지를 테스트로 못 박았다.
② 파일 비교 (2026-09-08)
| 상태 | 항목 | 내용 | 확인 |
|---|---|---|---|
| 완료 | 바꾸기 (Ctrl+H) | 찾기 칸 아래에 바꿀 말 줄이 붙는다(Ctrl+F 로 열면 안 뜬다 - 찾기만 할 때 자리를 뺏지 않는다). 바꾸기 는 고른 자리가 찾는 말일 때만 바꾸고 다음으로 넘어간다 - 엉뚱한 자리를 덮어쓰는 것보다 한 번 더 누르게 하는 편이 낫다 |
PulseUs → PulseMicros 2개 바꿈 |
| 완료 | 덩어리 단위 반영 | 이 덩어리 반영(Alt+Shift+→). 차이로 잡힌 줄이 이어지는 구간을 한 번에 |
마지막 차이에서 2줄 한 번에 반영 |
| 완료 | 인코딩·줄바꿈 변환 저장 | ACTIONS 의 저장 형식 두 칸. 기본 "원본 유지"라 지금까지와 똑같이 나간다. UTF-8 / UTF-8(BOM) / CP949 · CRLF / LF |
화면 확인 |
| 대기 | 바이너리·이미지 비교 | 감지해서 안내만 하고 끝난다 |
3~4주차로 미룬 것
디테일이라 지금 붙잡을 일이 아니다.
- 파일·폴더 드래그&드롭, 최근 파일 목록
- 로그인·권한
- 탐색기 우클릭 등록,
git mergetool인자 수신 (※git config에 등록하는 쪽은 이미 있는데 받는 쪽이 없다 — 다리를 반만 놓은 상태다) - 비교 결과 보고서 내보내기
- 대용량 파일 성능 (수만 줄) — 실제 소스 크기를 확인한 뒤 판단
완료 기록
| 날짜 | 항목 | 커밋 |
|---|---|---|
| 2026-09-08 | 저장소 개설 (MergeHub · UbisamPlatform 각각) | 7719094 / 36ee902 |
| 2026-09-08 | ④ Git 조작 5가지 — amend · stash 목록 · 커밋 간 비교 · blame · 변경분 추출 | 9956567 |
| 2026-09-08 | ③ 3-Way — 자동 병합 · 충돌만 이동 · 병합 완료 판정 | 85c5e9e |
| 2026-09-08 | ① 폴더 비교 — 폴더째 복사·삭제 · 보기 필터 · 비교 취소 | 아래 |