3-Way 에서 BASE 가 비어 있으면 그 까닭을 머리글에 적는다

WeldController.cpp 를 3-Way 로 열면 BASE 칸이 통째로 비어 보였다. 고장이
아니다. 두 브랜치의 공통 조상(9b48b82)에는 그 파일이 아예 없다. master 와
feature/cpp-tuning 이 각자 새로 만든 파일이라 견줄 조상이 없다. 그래서 모든
줄이 "양쪽에서 새로 넣은 줄"이 되고 충돌 6개가 나온다.

다만 화면이 그 사실을 말해 주지 않았다. 빈 칸은 누가 봐도 고장으로 읽힌다.
BASE 머리글에 "이 파일 없음 - 양쪽에서 새로 만든 파일입니다" 라고 적는다.
조상에 파일이 있으면 지금까지처럼 파일 이름이 나온다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
김승준 2026-09-09 14:39:09 +09:00
parent 451b6245cb
commit 32c0146b48
2 changed files with 18 additions and 1 deletions

View File

@ -147,6 +147,19 @@ CommunityToolkit 커맨드는 CommandManager 를 구독하지 않는데 이 둘
---
### 곁들여. 3-Way 에서 BASE 가 비어 보이던 것 — **의도한 동작이었다** (2026-09-09)
`WeldController.cpp` 를 3-Way 로 열면 BASE 칸이 통째로 비어 보였다. 고장이 아니다.
두 브랜치의 공통 조상(`9b48b82`)에는 그 파일이 <b>아예 없다.</b> master 와 feature/cpp-tuning 이
<b>각자 새로 만든 파일</b>이라 견줄 조상이 없는 것이다. 그래서 모든 줄이 "양쪽에서 새로 넣은 줄"이 되고
충돌 6개가 나온다. 뜻은 맞다.
**다만 화면이 그 사실을 말해 주지 않았다.** 빈 칸은 누가 봐도 고장으로 읽힌다.
BASE 머리글에 그렇게 적었다 - `BASE (merge base) · 이 파일 없음 - 양쪽에서 새로 만든 파일입니다`.
조상에 파일이 있는 경우는 지금까지처럼 파일 이름이 그대로 나온다.
---
### D-1. 주석만 다른 파일을 다른 색으로 — **완료** (2026-09-09)
폴더 비교 결과에 `주석만 다름` 상태를 새로 두었다. 코드는 같고 주석·공백만 다른 파일이다.

View File

@ -624,8 +624,12 @@ namespace MergeHub.ViewModels
Lines.Clear();
foreach (var row in rows) Lines.Add(row);
// BASE 가 비어 있으면 <b>그 파일이 공통 조상에 없었다</b>는 뜻이다 - 양쪽 브랜치가
// 각자 새로 만든 파일이라 견줄 조상이 없다. 그냥 두면 빈 칸이 고장으로 보인다.
BaseHeader = threeWay
? $"BASE ({baseOrigin}) · {path}"
? string.IsNullOrEmpty(baseText)
? $"BASE ({baseOrigin}) · 이 파일 없음 - 양쪽에서 새로 만든 파일입니다"
: $"BASE ({baseOrigin}) · {path}"
: $"BASE · {commit.ShortSha} · {path}";
LocalHeader = $"LOCAL · {_workspace.CurrentBranch}";
RemoteHeader = isConflict