Skip to content

Commit 8ef9791

Browse files
committed
Announce commit header in human friendly format
1 parent b4a0c38 commit 8ef9791

File tree

1 file changed

+59
-9
lines changed

1 file changed

+59
-9
lines changed

src/lib.rs

Lines changed: 59 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ mod config;
77
mod owned;
88
mod stack;
99

10+
use git2::DiffStats;
1011
use std::io::Write;
1112
use std::path::Path;
1213

@@ -600,19 +601,21 @@ fn announce(logger: &slog::Logger, announcement: Announcement) {
600601
let commit_short_id = commit_short_id
601602
.as_str()
602603
.expect("the commit short id is always a valid ASCII string");
604+
let change_header = format_change_header(diff);
605+
603606
info!(
604607
logger,
605608
"committed";
606609
"fixup" => destination,
607610
"commit" => commit_short_id,
608-
"header" => format!("+{},-{}", diff.insertions(), diff.deletions()),
611+
"header" => change_header,
609612
);
610613
}
611614
Announcement::WouldHaveCommitted(fixup, diff) => info!(
612615
logger,
613616
"would have committed";
614617
"fixup" => fixup,
615-
"header" => format!("+{},-{}", &diff.insertions(), &diff.deletions())
618+
"header" => format_change_header(diff),
616619
),
617620
Announcement::WouldHaveRebased(command) => info!(
618621
logger, "would have run git rebase"; "command" => format!("{:?}", command)
@@ -684,6 +687,39 @@ fn announce(logger: &slog::Logger, announcement: Announcement) {
684687
}
685688
}
686689

690+
fn format_change_header(diff: &DiffStats) -> String {
691+
let insertions = diff.insertions();
692+
let deletions = diff.deletions();
693+
694+
let mut header = String::new();
695+
if insertions > 0 {
696+
header.push_str(&format!(
697+
"{} {}(+)",
698+
insertions,
699+
if insertions == 1 {
700+
"insertion"
701+
} else {
702+
"insertions"
703+
}
704+
));
705+
}
706+
if deletions > 0 {
707+
if !header.is_empty() {
708+
header.push_str(", ");
709+
}
710+
header.push_str(&format!(
711+
"{} {}(-)",
712+
deletions,
713+
if deletions == 1 {
714+
"deletion"
715+
} else {
716+
"deletions"
717+
}
718+
));
719+
}
720+
header
721+
}
722+
687723
#[cfg(test)]
688724
mod tests {
689725
use git2::message_trailers_strs;
@@ -743,8 +779,18 @@ mod tests {
743779
log_utils::assert_log_messages_are(
744780
capturing_logger.visible_logs(),
745781
vec![
746-
&json!({"level": "INFO", "msg": "committed", "fixup": "Initial commit."}),
747-
&json!({"level": "INFO", "msg": "committed", "fixup": "Initial commit."}),
782+
&json!({
783+
"level": "INFO",
784+
"msg": "committed",
785+
"fixup": "Initial commit.",
786+
"header": "1 insertion(+)",
787+
}),
788+
&json!({
789+
"level": "INFO",
790+
"msg": "committed",
791+
"fixup": "Initial commit.",
792+
"header": "2 insertions(+)",
793+
}),
748794
&json!({
749795
"level": "INFO",
750796
"msg": "To squash the new commits, rebase:",
@@ -789,7 +835,7 @@ line
789835
"level": "INFO",
790836
"msg": "committed",
791837
"fixup": "Initial commit.",
792-
"header": "+0,-3",
838+
"header": "3 deletions(-)",
793839
}),
794840
&json!({
795841
"level": "INFO",
@@ -838,7 +884,7 @@ lines
838884
"level": "INFO",
839885
"msg": "committed",
840886
"fixup": "Initial commit.",
841-
"header": "+1,-1",
887+
"header": "1 insertion(+), 1 deletion(-)",
842888
}),
843889
&json!({
844890
"level": "INFO",
@@ -1275,7 +1321,7 @@ lines
12751321
"level": "INFO",
12761322
"msg": "committed",
12771323
"fixup": "Initial commit.",
1278-
"header": "+3,-0",
1324+
"header": "3 insertions(+)",
12791325
}),
12801326
&json!({
12811327
"level": "INFO",
@@ -1711,11 +1757,15 @@ lines
17111757
vec![
17121758
&json!({
17131759
"level": "INFO",
1714-
"msg": "would have committed", "fixup": "Initial commit.", "header": "+1,-0"
1760+
"msg": "would have committed",
1761+
"fixup": "Initial commit.",
1762+
"header": "1 insertion(+)",
17151763
}),
17161764
&json!({
17171765
"level": "INFO",
1718-
"msg": "would have committed", "fixup": "Initial commit.", "header": "+2,-0"
1766+
"msg": "would have committed",
1767+
"fixup": "Initial commit.",
1768+
"header": "2 insertions(+)",
17191769
}),
17201770
],
17211771
);

0 commit comments

Comments
 (0)