From 32c0146b48bdcbb0c50ce4e2257561a7a0cc72d0 Mon Sep 17 00:00:00 2001 From: ksj09406 Date: Wed, 9 Sep 2026 14:39:09 +0900 Subject: [PATCH] =?UTF-8?q?3-Way=20=EC=97=90=EC=84=9C=20BASE=20=EA=B0=80?= =?UTF-8?q?=20=EB=B9=84=EC=96=B4=20=EC=9E=88=EC=9C=BC=EB=A9=B4=20=EA=B7=B8?= =?UTF-8?q?=20=EA=B9=8C=EB=8B=AD=EC=9D=84=20=EB=A8=B8=EB=A6=AC=EA=B8=80?= =?UTF-8?q?=EC=97=90=20=EC=A0=81=EB=8A=94=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit WeldController.cpp 를 3-Way 로 열면 BASE 칸이 통째로 비어 보였다. 고장이 아니다. 두 브랜치의 공통 조상(9b48b82)에는 그 파일이 아예 없다. master 와 feature/cpp-tuning 이 각자 새로 만든 파일이라 견줄 조상이 없다. 그래서 모든 줄이 "양쪽에서 새로 넣은 줄"이 되고 충돌 6개가 나온다. 다만 화면이 그 사실을 말해 주지 않았다. 빈 칸은 누가 봐도 고장으로 읽힌다. BASE 머리글에 "이 파일 없음 - 양쪽에서 새로 만든 파일입니다" 라고 적는다. 조상에 파일이 있으면 지금까지처럼 파일 이름이 나온다. Co-Authored-By: Claude Opus 5 --- doc/진행상황.md | 13 +++++++++++++ src/MergeHub/ViewModels/HomeViewModel.cs | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/doc/진행상황.md b/doc/진행상황.md index ef85c60..42c8af0 100644 --- a/doc/진행상황.md +++ b/doc/진행상황.md @@ -147,6 +147,19 @@ CommunityToolkit 커맨드는 CommandManager 를 구독하지 않는데 이 둘 --- +### 곁들여. 3-Way 에서 BASE 가 비어 보이던 것 — **의도한 동작이었다** (2026-09-09) + +`WeldController.cpp` 를 3-Way 로 열면 BASE 칸이 통째로 비어 보였다. 고장이 아니다. + +두 브랜치의 공통 조상(`9b48b82`)에는 그 파일이 아예 없다. master 와 feature/cpp-tuning 이 +각자 새로 만든 파일이라 견줄 조상이 없는 것이다. 그래서 모든 줄이 "양쪽에서 새로 넣은 줄"이 되고 +충돌 6개가 나온다. 뜻은 맞다. + +**다만 화면이 그 사실을 말해 주지 않았다.** 빈 칸은 누가 봐도 고장으로 읽힌다. +BASE 머리글에 그렇게 적었다 - `BASE (merge base) · 이 파일 없음 - 양쪽에서 새로 만든 파일입니다`. +조상에 파일이 있는 경우는 지금까지처럼 파일 이름이 그대로 나온다. +--- + ### D-1. 주석만 다른 파일을 다른 색으로 — **완료** (2026-09-09) 폴더 비교 결과에 `주석만 다름` 상태를 새로 두었다. 코드는 같고 주석·공백만 다른 파일이다. diff --git a/src/MergeHub/ViewModels/HomeViewModel.cs b/src/MergeHub/ViewModels/HomeViewModel.cs index c4fa5ca..40f55f0 100644 --- a/src/MergeHub/ViewModels/HomeViewModel.cs +++ b/src/MergeHub/ViewModels/HomeViewModel.cs @@ -624,8 +624,12 @@ namespace MergeHub.ViewModels Lines.Clear(); foreach (var row in rows) Lines.Add(row); + // BASE 가 비어 있으면 그 파일이 공통 조상에 없었다는 뜻이다 - 양쪽 브랜치가 + // 각자 새로 만든 파일이라 견줄 조상이 없다. 그냥 두면 빈 칸이 고장으로 보인다. BaseHeader = threeWay - ? $"BASE ({baseOrigin}) · {path}" + ? string.IsNullOrEmpty(baseText) + ? $"BASE ({baseOrigin}) · 이 파일 없음 - 양쪽에서 새로 만든 파일입니다" + : $"BASE ({baseOrigin}) · {path}" : $"BASE · {commit.ShortSha} · {path}"; LocalHeader = $"LOCAL · {_workspace.CurrentBranch}"; RemoteHeader = isConflict