Ubisam-MergeTool/doc/진행상황.md
ksj09406 9956567bf8 Git 탭에 다섯 기능 추가 (amend · stash 목록 · 커밋 간 비교 · blame · 변경분 추출)
기획안 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>
2026-09-08 10:35:45 +09:00

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 · 변경분 추출 아래