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