feat: if you are the author, use "You" instead of name

pull/13133/head
Nik Revenco 2025-06-07 11:57:55 +01:00
parent 100ad75d9e
commit 41cb919b5d
1 changed files with 22 additions and 4 deletions

View File

@ -61,15 +61,33 @@ impl FileBlame {
}; };
let message = commit.as_ref().and_then(|c| c.message().ok()); let message = commit.as_ref().and_then(|c| c.message().ok());
let author = commit.as_ref().and_then(|c| c.author().ok());
let time = author.and_then(|a| a.time.parse::<gix::date::Time>().ok()); let commit_author = commit.as_ref().and_then(|c| c.author().ok());
// NOTE: Repo author is not the person who created the repository,
// but it is the person who is using Helix right now.
//
// If the person who is using Helix made the commit, (they have the same name),
// then instead of using the name, use "You".
let repo_author = repo
.author()
.transpose()
.ok()
.flatten()
.is_some_and(|author| {
commit_author.is_some_and(|commit_author| author.name == commit_author.name)
})
.then(|| "You".to_string());
let author_name =
repo_author.or_else(|| commit_author.map(|author| author.name.to_string()));
let time = commit_author.and_then(|a| a.time.parse::<gix::date::Time>().ok());
let line_blame = LineBlame { let line_blame = LineBlame {
commit_hash: commit commit_hash: commit
.as_ref() .as_ref()
.and_then(|c| c.short_id().map(|id| id.to_string()).ok()), .and_then(|c| c.short_id().map(|id| id.to_string()).ok()),
author_name: author.map(|a| a.name.to_string()), author_name,
author_email: author.map(|a| a.email.to_string()), author_email: commit_author.map(|a| a.email.to_string()),
commit_date: time.map(|time| time.format(gix::date::time::format::SHORT)), commit_date: time.map(|time| time.format(gix::date::time::format::SHORT)),
commit_title: message.as_ref().map(|msg| msg.title.to_string()), commit_title: message.as_ref().map(|msg| msg.title.to_string()),
commit_body: message commit_body: message