기획안 4p 의 "Git 조작" 항목 중 화면에 없던 것들을 채웠다. 다섯 중 넷은 GitService 에 이미 구현돼 있었고 버튼만 없던 것이라, 서비스를 새로 만든 것은 변경분 추출 하나뿐이다. - 커밋 수정(amend): 오타 난 메시지나 빠뜨린 파일을 새 커밋을 쌓지 않고 바로잡는다. 고쳐 쓸 메시지를 처음부터 다시 치지 않게 "마지막 메시지" 버튼을 곁들였다. - stash 목록: 저장/적용만 있어 "맨 위 것"에만 손이 닿았다. 골라서 적용·삭제한다. 하나 꺼내면 번호가 한 칸씩 당겨지므로, 목록이 바뀌면 고른 항목을 다시 잡는다 - 안 그러면 다음 삭제가 엉뚱한 것을 지운다. - 두 커밋 사이 비교: "여기부터" 로 시작점을 잡으면 그 뒤 고르는 커밋이 끝점이 된다. 안 잡으면 지금까지처럼 부모와 비교한다(기존 동작 유지). - blame: 머지 중에 "이 줄 왜 이렇게 됐지"를 묻게 되는데, 이력을 뒤지는 것보다 빠르다. - 변경분 파일 추출: 장비에 소스를 통째로 넣지 못하는 현장에서 바뀐 것만 들고 갈 때 쓴다. 텍스트로 다시 쓰면 줄바꿈과 인코딩이 바뀌므로 바이트 그대로 옮긴다. 곁들여 고친 것: 상태 배지 줄의 ItemHeight 가 24 로 묶여 있어 "mergetool 등록" 버튼이 반쯤 잘려 보였다. 줄 높이는 내용이 정하게 두었다. 실행 확인(데모 저장소): 메시지 수정으로 sha 가 바뀜 · stash 저장→목록→적용으로 워킹트리 복구 · 헤더가 "2766bc5 → 6e6bb78 (2개 파일)" · blame 31줄 전부 표시 · 변경분 2개 파일 추출. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4.0 KiB
4.0 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 병합 — "볼 수 있다"에서 "끝낼 수 있다"로
| 상태 | 항목 | 내용 |
|---|---|---|
| 대기 | 자동 병합 | 한쪽만 고친 곳은 자동으로 결과에 넣는다. 사람은 충돌만 판단 |
| 대기 | 충돌만 이동 | 다음 차이 말고 다음 충돌. 자동 병합과 짝이다 |
| 대기 | 병합 완료 판정 | 남은 충돌 0 이면 저장·커밋을 유도 |
① 폴더 비교
| 상태 | 항목 | 내용 |
|---|---|---|
| 대기 | 폴더째 복사·삭제 | 지금은 파일 하나씩만 된다(CanCopyToRight 가 파일만 허용) |
| 대기 | 상태별 보기 필터 | 왼쪽만 / 오른쪽만 / 다른 것만 |
| 대기 | 비교 취소 | 큰 폴더를 잘못 고르면 기다리는 수밖에 없다 |
② 파일 비교
| 상태 | 항목 | 내용 |
|---|---|---|
| 대기 | 바꾸기 (Ctrl+H) | 찾기만 있다 |
| 대기 | 덩어리 단위 반영 | 줄 단위 아니면 전체뿐. 연속 5줄이면 5번 누른다 |
| 대기 | 인코딩·줄바꿈 변환 저장 | CP949 ↔ UTF-8. 지금은 읽어서 보여주기만 |
| 대기 | 바이너리·이미지 비교 | 감지해서 안내만 하고 끝난다 |
3~4주차로 미룬 것
디테일이라 지금 붙잡을 일이 아니다.
- 파일·폴더 드래그&드롭, 최근 파일 목록
- 로그인·권한
- 탐색기 우클릭 등록,
git mergetool인자 수신 (※git config에 등록하는 쪽은 이미 있는데 받는 쪽이 없다 — 다리를 반만 놓은 상태다) - 비교 결과 보고서 내보내기
- 대용량 파일 성능 (수만 줄) — 실제 소스 크기를 확인한 뒤 판단
완료 기록
| 날짜 | 항목 | 커밋 |
|---|---|---|
| 2026-09-08 | 저장소 개설 (MergeHub · UbisamPlatform 각각) | 7719094 / 36ee902 |
| 2026-09-08 | ④ Git 조작 5가지 — amend · stash 목록 · 커밋 간 비교 · blame · 변경분 추출 | 아래 |