Skip to content

Commit 7938f1d

Browse files
committed
feat: More meaningful automated commit messages
1 parent ffca53d commit 7938f1d

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

src/lib.rs

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ impl TodoList {
7979
.ok()
8080
.and_then(|r| r.target());
8181
let mut labels: std::collections::HashMap<Label, git2::Oid> = Default::default();
82-
for event in self.commands.iter() {
82+
for (i, event) in self.commands.iter().enumerate() {
8383
match event {
8484
Command::Label(label) => {
8585
let current_oid = last_oid.ok_or_else(|| eyre::eyre!("no commits yet"))?;
@@ -110,14 +110,17 @@ impl TodoList {
110110
} else {
111111
repo.signature()?
112112
};
113-
let message = tree.message.as_deref().unwrap_or("Automated");
113+
let message = tree
114+
.message
115+
.clone()
116+
.unwrap_or_else(|| format!("Commit (command {i})"));
114117
let mut parents = Vec::new();
115118
if let Some(last_oid) = last_oid {
116119
parents.push(repo.find_commit(last_oid)?);
117120
}
118121
let parents = parents.iter().collect::<Vec<_>>();
119122
let current_oid =
120-
repo.commit(None, &sig, &sig, message, &new_tree, &parents)?;
123+
repo.commit(None, &sig, &sig, &message, &new_tree, &parents)?;
121124
last_oid = Some(current_oid);
122125

123126
if let Some(sleep) = self.sleep {
@@ -169,11 +172,21 @@ impl TodoList {
169172
} else {
170173
repo.signature()?
171174
};
172-
let message = merge.message.as_deref().unwrap_or("Automated");
175+
let message = merge.message.clone().unwrap_or_else(|| {
176+
format!(
177+
"Merged {} (command {i})",
178+
merge
179+
.base
180+
.iter()
181+
.map(|s| s.as_str())
182+
.collect::<Vec<_>>()
183+
.join(" "),
184+
)
185+
});
173186
let ours_tree = repo.find_tree(ours_tree_oid)?;
174187
let parents = parents.iter().collect::<Vec<_>>();
175188
let current_oid =
176-
repo.commit(None, &sig, &sig, message, &ours_tree, &parents)?;
189+
repo.commit(None, &sig, &sig, &message, &ours_tree, &parents)?;
177190
last_oid = Some(current_oid);
178191

179192
if let Some(sleep) = self.sleep {
@@ -195,8 +208,8 @@ impl TodoList {
195208
} else {
196209
repo.signature()?
197210
};
198-
let message = "Automated";
199-
repo.tag(tag.as_str(), commit.as_object(), &sig, message, true)?;
211+
let message = format!("Tag (command {i})");
212+
repo.tag(tag.as_str(), commit.as_object(), &sig, &message, true)?;
200213
}
201214
Command::Head => {
202215
let current_oid = last_oid.ok_or_else(|| eyre::eyre!("no commits yet"))?;

0 commit comments

Comments
 (0)