Git Config Commit Comments (#2145)

Closes #2136
This commit is contained in:
Concelare 2024-03-22 22:12:08 +00:00 committed by GitHub
parent 3d06b54d2c
commit b15c8643c8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 25 additions and 6 deletions

View File

@ -1,9 +1,12 @@
//! Git Api for Commits
use super::{CommitId, RepoPath};
use crate::{
error::Result,
sync::{repository::repo, utils::get_head_repo},
};
use git2::{ErrorCode, ObjectType, Repository, Signature};
use git2::{
message_prettify, ErrorCode, ObjectType, Repository, Signature,
};
use scopetime::scope_time;
///
@ -119,6 +122,20 @@ pub fn tag_commit(
Ok(c)
}
/// Loads the comment prefix from config & uses it to prettify commit messages
pub fn commit_message_prettify(
repo_path: &RepoPath,
message: String,
) -> Result<String> {
let comment_char = repo(repo_path)?
.config()?
.get_string("core.commentChar")
.map(|char_string| char_string.chars().next())?
.unwrap_or('#') as u8;
Ok(message_prettify(message, Some(comment_char))?)
}
#[cfg(test)]
mod tests {
use crate::error::Result;

View File

@ -5,7 +5,7 @@
pub mod blame;
pub mod branch;
mod commit;
pub mod commit;
mod commit_details;
pub mod commit_files;
mod commit_filter;

View File

@ -11,8 +11,9 @@ use crate::{
ui::style::SharedTheme,
};
use anyhow::{bail, Ok, Result};
use asyncgit::sync::commit::commit_message_prettify;
use asyncgit::{
cached, message_prettify,
cached,
sync::{
self, get_config_string, CommitId, HookResult,
PrepareCommitMsgSource, RepoPathRef, RepoState,
@ -195,7 +196,8 @@ impl CommitPopup {
drop(file);
std::fs::remove_file(&file_path)?;
message = message_prettify(message, Some(b'#'))?;
message =
commit_message_prettify(&self.repo.borrow(), message)?;
self.input.set_text(message);
self.input.show()?;
@ -254,8 +256,8 @@ impl CommitPopup {
}
}
//TODO: honor `core.commentChar`
let mut msg = message_prettify(msg, Some(b'#'))?;
let mut msg =
commit_message_prettify(&self.repo.borrow(), msg)?;
if verify {
// run commit message check hook - can reject commit