Merge branch 'tc/commit-abbrev-fix'
* tc/commit-abbrev-fix: commit::print_summary(): don't use format_commit_message() t7502-commit: add summary output tests for empty and merge commits t7502-commit: add tests for summary output
This commit is contained in:
@ -1168,13 +1168,11 @@ static void print_summary(const char *prefix, const unsigned char *sha1)
|
|||||||
initial_commit ? " (root-commit)" : "");
|
initial_commit ? " (root-commit)" : "");
|
||||||
|
|
||||||
if (!log_tree_commit(&rev, commit)) {
|
if (!log_tree_commit(&rev, commit)) {
|
||||||
struct pretty_print_context ctx = {0};
|
rev.always_show_header = 1;
|
||||||
struct strbuf buf = STRBUF_INIT;
|
rev.use_terminator = 1;
|
||||||
ctx.date_mode = DATE_NORMAL;
|
log_tree_commit(&rev, commit);
|
||||||
format_commit_message(commit, format.buf + 7, &buf, &ctx);
|
|
||||||
printf("%s\n", buf.buf);
|
|
||||||
strbuf_release(&buf);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
strbuf_release(&format);
|
strbuf_release(&format);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,8 +4,76 @@ test_description='git commit porcelain-ish'
|
|||||||
|
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
# Arguments: [<prefix] [<commit message>] [<commit options>]
|
||||||
|
check_summary_oneline() {
|
||||||
|
test_tick &&
|
||||||
|
git commit ${3+"$3"} -m "$2" | head -1 > act &&
|
||||||
|
|
||||||
|
# branch name
|
||||||
|
SUMMARY_PREFIX="$(git name-rev --name-only HEAD)" &&
|
||||||
|
|
||||||
|
# append the "special" prefix, like "root-commit", "detached HEAD"
|
||||||
|
if test -n "$1"
|
||||||
|
then
|
||||||
|
SUMMARY_PREFIX="$SUMMARY_PREFIX ($1)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# abbrev SHA-1
|
||||||
|
SUMMARY_POSTFIX="$(git log -1 --pretty='format:%h')"
|
||||||
|
echo "[$SUMMARY_PREFIX $SUMMARY_POSTFIX] $2" >exp &&
|
||||||
|
|
||||||
|
test_cmp exp act
|
||||||
|
}
|
||||||
|
|
||||||
|
test_expect_success 'output summary format' '
|
||||||
|
|
||||||
|
echo new >file1 &&
|
||||||
|
git add file1 &&
|
||||||
|
check_summary_oneline "root-commit" "initial" &&
|
||||||
|
|
||||||
|
echo change >>file1 &&
|
||||||
|
git add file1 &&
|
||||||
|
check_summary_oneline "" "a change"
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'output summary format for commit with an empty diff' '
|
||||||
|
|
||||||
|
check_summary_oneline "" "empty" "--allow-empty"
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'output summary format for merges' '
|
||||||
|
|
||||||
|
git checkout -b recursive-base &&
|
||||||
|
test_commit base file1 &&
|
||||||
|
|
||||||
|
git checkout -b recursive-a recursive-base &&
|
||||||
|
test_commit commit-a file1 &&
|
||||||
|
|
||||||
|
git checkout -b recursive-b recursive-base &&
|
||||||
|
test_commit commit-b file1 &&
|
||||||
|
|
||||||
|
# conflict
|
||||||
|
git checkout recursive-a &&
|
||||||
|
test_must_fail git merge recursive-b &&
|
||||||
|
# resolve the conflict
|
||||||
|
echo commit-a > file1 &&
|
||||||
|
git add file1 &&
|
||||||
|
check_summary_oneline "" "Merge"
|
||||||
|
'
|
||||||
|
|
||||||
|
output_tests_cleanup() {
|
||||||
|
# this is needed for "do not fire editor in the presence of conflicts"
|
||||||
|
git checkout master &&
|
||||||
|
|
||||||
|
# this is needed for the "partial removal" test to pass
|
||||||
|
git rm file1 &&
|
||||||
|
git commit -m "cleanup"
|
||||||
|
}
|
||||||
|
|
||||||
test_expect_success 'the basics' '
|
test_expect_success 'the basics' '
|
||||||
|
|
||||||
|
output_tests_cleanup &&
|
||||||
|
|
||||||
echo doing partial >"commit is" &&
|
echo doing partial >"commit is" &&
|
||||||
mkdir not &&
|
mkdir not &&
|
||||||
echo very much encouraged but we should >not/forbid &&
|
echo very much encouraged but we should >not/forbid &&
|
||||||
|
Reference in New Issue
Block a user