4차 A-2: 내보낸 보고서에 만든 사람을 넣음
이름 판단을 MergeNote.AuthorOf 로 모아 머지 주석과 보고서가 같은 이름을 쓴다. 이름이 비면 줄 자체를 넣지 않는다. 검사 8건 추가.
This commit is contained in:
parent
7278829d1e
commit
0625236fc3
@ -126,4 +126,34 @@ doc/
|
||||
| [저장하지 않고 계속] | 파일은 손대지 않은 채 다음 파일이 열렸다 |
|
||||
| 고친 것 없이 두 번 연속 열기 | 창이 뜨지 않았다 |
|
||||
|
||||
검사 514건 통과 · 빌드 경고 0 · 오류 0.
|
||||
검사 514건 통과 · 빌드 경고 0 · 오류 0.
|
||||
---
|
||||
|
||||
## A-2. 내보낸 보고서에 만든 사람이 없던 것 — **완료** (2026-09-10)
|
||||
|
||||
**왜** - `결과 내보내기` 로 뽑은 글에 `만든 때` 는 있는데 **누가 뽑았는지가 없었다.**
|
||||
남에게 보내라고 만든 기능인데 작성자가 없으면 받는 쪽이 되묻게 된다.
|
||||
|
||||
**이름 판단을 한 함수로 모았다.** `MergeNote.AuthorOf` 를 새로 빼고 `MergeNote.Build` 도 그것을 쓴다.
|
||||
설정에 적힌 이름이 없으면 윈도우 계정으로 물러선다. **같은 사람이 같은 화면에서 한 일인데
|
||||
주석과 보고서에 다른 이름이 남으면 그 자체가 버그다** - 판단이 두 군데로 갈리면 언젠가 어긋난다.
|
||||
|
||||
**이름이 비어 있으면 줄 자체를 넣지 않는다.** `만든 사람: ` 만 덩그러니 있는 것보다 없는 편이 낫다.
|
||||
|
||||
파일 비교 · 폴더 비교 두 보고서에 모두 들어간다. 자리는 `만든 때` 바로 아래다.
|
||||
|
||||
**확인한 것**
|
||||
|
||||
실제로 뽑아 본 파일 머리글이다.
|
||||
|
||||
```
|
||||
MergeHub 파일 비교 결과
|
||||
만든 때: 2026-09-10 20:33:17
|
||||
만든 사람: 김승준
|
||||
왼쪽 : ...\left\Other.cpp
|
||||
오른쪽: ...\right\Other.cpp
|
||||
```
|
||||
|
||||
화면의 머지 주석 미리보기가 `// [김승준] 2026-09-10` 이었으니 **두 이름이 같다.**
|
||||
|
||||
검사 8건 추가(`ReportTest` 23 → 31). 전체 **522건 통과** · 빌드 경고 0 · 오류 0.
|
||||
@ -8,6 +8,7 @@
|
||||
|
||||
| 날짜 | 항목 | 커밋 |
|
||||
|---|---|---|
|
||||
| 2026-09-10 | **4차 A-2** — 내보낸 보고서 머리글에 만든 사람을 넣음. 이름 판단을 머지 주석과 한 함수로 모았다 | 아래 |
|
||||
| 2026-09-10 | **4차 A-1** — 저장하지 않은 편집이 말없이 사라지던 길 여덟 군데를 막음. 플랫폼에 세 갈래 확인 창을 새로 넣었다 | 아래 |
|
||||
| 2026-09-10 | **4차 D-2** — 항목을 끝내면 상세·상태·한 줄을 각각 어디에 적을지 공통 규칙으로 못박음 | 아래 |
|
||||
| 2026-09-10 | **4차 D-1** — 721줄짜리 진행상황을 `history/` 의 날짜별 파일로 나누고 지시서를 `작업지시/` 로 모음 | 아래 |
|
||||
@ -28,6 +29,7 @@
|
||||
|
||||
| 날짜 | 문서 | 내용 |
|
||||
|---|---|---|
|
||||
| 2026-09-10 | **4차 A-2** — 내보낸 보고서 머리글에 만든 사람을 넣음. 이름 판단을 머지 주석과 한 함수로 모았다 | 아래 |
|
||||
| 2026-09-10 | **4차 A-1** — 저장하지 않은 편집이 말없이 사라지던 길 여덟 군데를 막음. 플랫폼에 세 갈래 확인 창을 새로 넣었다 | 아래 |
|
||||
| 2026-09-10 | **4차 D-2** — 항목을 끝내면 상세·상태·한 줄을 각각 어디에 적을지 공통 규칙으로 못박음 | 아래 |
|
||||
| 2026-09-10 | **4차 D-1** — 721줄짜리 진행상황을 `history/` 의 날짜별 파일로 나누고 지시서를 `작업지시/` 로 모음 | 아래 |
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
| 상태 | 항목 |
|
||||
|---|---|
|
||||
| **완료** | A-1 저장하지 않은 편집이 말없이 사라진다 |
|
||||
| 대기 | A-2 내보낸 보고서에 만든 사람이 없다 |
|
||||
| **완료** | A-2 내보낸 보고서에 만든 사람이 없다 |
|
||||
|
||||
### B. 매일 쓰는 마찰 줄이기
|
||||
|
||||
|
||||
@ -20,11 +20,11 @@ namespace MergeHub.Services
|
||||
|
||||
/// <summary>파일 비교 결과.</summary>
|
||||
public static string ForFile(string leftLabel, string rightLabel,
|
||||
IReadOnlyList<MergeLine> lines, DateTime when)
|
||||
IReadOnlyList<MergeLine> lines, DateTime when, string? author = null)
|
||||
{
|
||||
var text = new StringBuilder();
|
||||
|
||||
Head(text, "파일 비교 결과", leftLabel, rightLabel, when);
|
||||
Head(text, "파일 비교 결과", leftLabel, rightLabel, when, author);
|
||||
|
||||
var changed = 0;
|
||||
var added = 0;
|
||||
@ -73,11 +73,11 @@ namespace MergeHub.Services
|
||||
|
||||
/// <summary>폴더 비교 결과.</summary>
|
||||
public static string ForFolder(string leftFolder, string rightFolder,
|
||||
FolderCompareResult result, DateTime when)
|
||||
FolderCompareResult result, DateTime when, string? author = null)
|
||||
{
|
||||
var text = new StringBuilder();
|
||||
|
||||
Head(text, "폴더 비교 결과", leftFolder, rightFolder, when);
|
||||
Head(text, "폴더 비교 결과", leftFolder, rightFolder, when, author);
|
||||
text.AppendLine("요약: " + result.Summary);
|
||||
if (result.Truncated) text.AppendLine("(항목이 너무 많아 도중에 멈춘 결과입니다)");
|
||||
text.AppendLine();
|
||||
@ -115,10 +115,16 @@ namespace MergeHub.Services
|
||||
}
|
||||
}
|
||||
|
||||
private static void Head(StringBuilder text, string title, string left, string right, DateTime when)
|
||||
/// <param name="author">
|
||||
/// 뽑은 사람. 남에게 보내라고 만든 글이라 <b>누가 뽑았는지</b>가 없으면 받는 쪽이 되묻게 된다.
|
||||
/// 비어 있으면 줄 자체를 넣지 않는다 - "만든 사람: " 만 덩그러니 있는 것보다 없는 편이 낫다.
|
||||
/// </param>
|
||||
private static void Head(StringBuilder text, string title, string left, string right, DateTime when,
|
||||
string? author)
|
||||
{
|
||||
text.AppendLine($"MergeHub {title}");
|
||||
text.AppendLine($"만든 때: {when:yyyy-MM-dd HH:mm:ss}");
|
||||
if (!string.IsNullOrWhiteSpace(author)) text.AppendLine($"만든 사람: {author}");
|
||||
text.AppendLine($"왼쪽 : {left}");
|
||||
text.AppendLine($"오른쪽: {right}");
|
||||
text.AppendLine(Rule);
|
||||
@ -144,4 +150,4 @@ namespace MergeHub.Services
|
||||
_ => "같음"
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,9 +21,19 @@ namespace MergeHub.Services
|
||||
/// 주석 한 조각을 만든다. 구성은 딱 세 가지 - [사용자] 날짜 설명.
|
||||
/// 설명이 비어 있어도 [사용자]와 날짜는 항상 남는다.
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// 기록에 남길 사람 이름. 설정에 적힌 이름이 없으면 윈도우 계정으로 물러선다.
|
||||
///
|
||||
/// <b>따로 뺀 까닭</b> - 머지 주석과 내보낸 보고서에 <b>같은 이름</b>이 찍혀야 한다.
|
||||
/// 같은 사람이 같은 화면에서 한 일인데 두 곳에 다른 이름이 남으면 그 자체가 버그다.
|
||||
/// 판단이 두 군데로 갈리면 언젠가 어긋난다.
|
||||
/// </summary>
|
||||
public static string AuthorOf(string? author) =>
|
||||
string.IsNullOrWhiteSpace(author) ? Environment.UserName : author!.Trim();
|
||||
|
||||
public static string Build(string? author, DateTime when, string? comment, string? path)
|
||||
{
|
||||
var who = string.IsNullOrWhiteSpace(author) ? Environment.UserName : author!.Trim();
|
||||
var who = AuthorOf(author);
|
||||
|
||||
var body = $"[{who}] {when:yyyy-MM-dd}";
|
||||
|
||||
|
||||
@ -270,7 +270,9 @@ namespace MergeHub.ViewModels
|
||||
|
||||
try
|
||||
{
|
||||
var report = CompareReport.ForFolder(LeftFolder, RightFolder, result, DateTime.Now);
|
||||
// 파일 비교 쪽과 같은 이름이 찍혀야 한다(MergeNote.AuthorOf).
|
||||
var report = CompareReport.ForFolder(LeftFolder, RightFolder, result, DateTime.Now,
|
||||
MergeNote.AuthorOf(_workspace.AuthorName));
|
||||
TextFile.Write(dialog.FileName, report);
|
||||
MessageUtil.ShowSuccessToast($"저장했습니다 · {Path.GetFileName(dialog.FileName)}");
|
||||
}
|
||||
|
||||
@ -1591,9 +1591,11 @@ namespace MergeHub.ViewModels
|
||||
|
||||
try
|
||||
{
|
||||
// 머지 주석과 같은 자리에서 이름을 가져온다. 두 곳에 다른 이름이 찍히면 그 자체가 버그다.
|
||||
var report = CompareReport.ForFile(ReportLabel(BaseHeader, LeftFile),
|
||||
ReportLabel(LocalHeader, RightFile),
|
||||
Lines, DateTime.Now);
|
||||
Lines, DateTime.Now,
|
||||
MergeNote.AuthorOf(_workspace.AuthorName));
|
||||
TextFile.Write(dialog.FileName, report);
|
||||
MessageUtil.ShowSuccessToast($"저장했습니다 · {Path.GetFileName(dialog.FileName)}");
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user