Skip to content

Commit 403f9ec

Browse files
feat(record)!: use default commit message for --stash
But only when no message is explicitly supplied. This is a breaking change. Previously, the user would be prompted for a message if none was supplied.
1 parent 2cb8484 commit 403f9ec

File tree

2 files changed

+80
-2
lines changed

2 files changed

+80
-2
lines changed

git-branchless-record/src/lib.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ use lib::core::rewrite::{
3131
RepoResource,
3232
};
3333
use lib::git::{
34-
process_diff_for_record, update_index, CategorizedReferenceName, FileMode, GitRunInfo,
35-
MaybeZeroOid, NonZeroOid, Repo, ResolvedReferenceInfo, Stage, UpdateIndexCommand,
34+
process_diff_for_record, update_index, CategorizedReferenceName, ConfigRead, FileMode,
35+
GitRunInfo, MaybeZeroOid, NonZeroOid, Repo, ResolvedReferenceInfo, Stage, UpdateIndexCommand,
3636
WorkingCopyChangesType, WorkingCopySnapshot,
3737
};
3838
use lib::try_exit_code;
@@ -157,6 +157,16 @@ fn record(
157157
)?);
158158
}
159159
} else {
160+
let config = repo.get_readonly_config()?;
161+
let interactive_stash = config.get_or("branchless.record.interactiveStash", true)?;
162+
let messages = if messages.is_empty() && stash && !interactive_stash {
163+
vec![config.get_or(
164+
"branchless.record.defautStashMessage",
165+
"temp: stash".to_string(),
166+
)?]
167+
} else {
168+
messages
169+
};
160170
let args = {
161171
let mut args = vec!["commit"];
162172
args.extend(messages.iter().flat_map(|message| ["--message", message]));

git-branchless-record/tests/test_record.rs

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,74 @@ fn test_record_stash() -> eyre::Result<()> {
342342
Ok(())
343343
}
344344

345+
#[test]
346+
fn test_record_stash_default_message() -> eyre::Result<()> {
347+
let git = make_git()?;
348+
349+
if !git.supports_reference_transactions()? {
350+
return Ok(());
351+
}
352+
git.init_repo()?;
353+
354+
git.run(&["config", "branchless.record.interactiveStash", "false"])?;
355+
356+
git.commit_file("test1", 1)?;
357+
358+
{
359+
git.write_file_txt("test1", "new test1 contents\n")?;
360+
361+
let (stdout, _stderr) = git.branchless("record", &["--stash"])?;
362+
insta::assert_snapshot!(stdout, @r###"
363+
[master 78c965b] temp: stash
364+
1 file changed, 1 insertion(+), 1 deletion(-)
365+
branchless: running command: <git-executable> branch -f master 62fc20d2a290daea0d52bdc2ed2ad4be6491010e
366+
branchless: running command: <git-executable> checkout master
367+
"###);
368+
}
369+
370+
{
371+
let stdout = git.smartlog()?;
372+
insta::assert_snapshot!(stdout, @r###"
373+
:
374+
@ 62fc20d (> master) create test1.txt
375+
|
376+
o 78c965b temp: stash
377+
"###);
378+
}
379+
380+
{
381+
git.run(&[
382+
"config",
383+
"branchless.record.defautStashMessage",
384+
"foo(bar)!: baz",
385+
])?;
386+
387+
git.write_file_txt("test1", "more new test1 contents\n")?;
388+
389+
let (stdout, _stderr) = git.branchless("record", &["--stash"])?;
390+
insta::assert_snapshot!(stdout, @r###"
391+
[master e574dfa] foo(bar)!: baz
392+
1 file changed, 1 insertion(+), 1 deletion(-)
393+
branchless: running command: <git-executable> branch -f master 62fc20d2a290daea0d52bdc2ed2ad4be6491010e
394+
branchless: running command: <git-executable> checkout master
395+
"###);
396+
}
397+
398+
{
399+
let stdout = git.smartlog()?;
400+
insta::assert_snapshot!(stdout, @r###"
401+
:
402+
@ 62fc20d (> master) create test1.txt
403+
|\
404+
| o 78c965b temp: stash
405+
|
406+
o e574dfa foo(bar)!: baz
407+
"###);
408+
}
409+
410+
Ok(())
411+
}
412+
345413
#[test]
346414
fn test_record_create_branch() -> eyre::Result<()> {
347415
let git = make_git()?;

0 commit comments

Comments
 (0)