Unverified Commit 3cca14b3 by Edward Thomson Committed by GitHub

Merge pull request #6125 from stforek/git_commit_summary_spaces

git_commit_summary: ignore lines with spaces
parents dca31d24 1e015088
...@@ -547,7 +547,7 @@ const char *git_commit_message(const git_commit *commit) ...@@ -547,7 +547,7 @@ const char *git_commit_message(const git_commit *commit)
const char *git_commit_summary(git_commit *commit) const char *git_commit_summary(git_commit *commit)
{ {
git_str summary = GIT_STR_INIT; git_str summary = GIT_STR_INIT;
const char *msg, *space; const char *msg, *space, *next;
bool space_contains_newline = false; bool space_contains_newline = false;
GIT_ASSERT_ARG_WITH_RETVAL(commit, NULL); GIT_ASSERT_ARG_WITH_RETVAL(commit, NULL);
...@@ -556,10 +556,21 @@ const char *git_commit_summary(git_commit *commit) ...@@ -556,10 +556,21 @@ const char *git_commit_summary(git_commit *commit)
for (msg = git_commit_message(commit), space = NULL; *msg; ++msg) { for (msg = git_commit_message(commit), space = NULL; *msg; ++msg) {
char next_character = msg[0]; char next_character = msg[0];
/* stop processing at the end of the first paragraph */ /* stop processing at the end of the first paragraph */
if (next_character == '\n' && (!msg[1] || msg[1] == '\n')) if (next_character == '\n') {
if (!msg[1])
break; break;
if (msg[1] == '\n')
break;
/* stop processing if next line contains only whitespace */
next = msg + 1;
while (*next && git__isspace_nonlf(*next)) {
++next;
}
if (!*next || *next == '\n')
break;
}
/* record the beginning of contiguous whitespace runs */ /* record the beginning of contiguous whitespace runs */
else if (git__isspace(next_character)) { if (git__isspace(next_character)) {
if(space == NULL) { if(space == NULL) {
space = msg; space = msg;
space_contains_newline = false; space_contains_newline = false;
......
...@@ -139,8 +139,11 @@ void test_commit_commit__summary(void) ...@@ -139,8 +139,11 @@ void test_commit_commit__summary(void)
{ {
assert_commit_summary("One-liner with no trailing newline", "One-liner with no trailing newline"); assert_commit_summary("One-liner with no trailing newline", "One-liner with no trailing newline");
assert_commit_summary("One-liner with trailing newline", "One-liner with trailing newline\n"); assert_commit_summary("One-liner with trailing newline", "One-liner with trailing newline\n");
assert_commit_summary("One-liner with trailing newline and space", "One-liner with trailing newline and space\n ");
assert_commit_summary("Trimmed leading&trailing newlines", "\n\nTrimmed leading&trailing newlines\n\n"); assert_commit_summary("Trimmed leading&trailing newlines", "\n\nTrimmed leading&trailing newlines\n\n");
assert_commit_summary("First paragraph only", "\nFirst paragraph only\n\n(There are more!)"); assert_commit_summary("First paragraph only", "\nFirst paragraph only\n\n(There are more!)");
assert_commit_summary("First paragraph only with space in the next line", "\nFirst paragraph only with space in the next line\n \n(There are more!)");
assert_commit_summary("First paragraph only with spaces in the next line", "\nFirst paragraph only with spaces in the next line\n \n(There are more!)");
assert_commit_summary("First paragraph with unwrapped trailing\tlines", "\nFirst paragraph\nwith unwrapped\ntrailing\tlines\n\n(Yes, unwrapped!)"); assert_commit_summary("First paragraph with unwrapped trailing\tlines", "\nFirst paragraph\nwith unwrapped\ntrailing\tlines\n\n(Yes, unwrapped!)");
assert_commit_summary("\tLeading tabs", "\tLeading\n\ttabs\n\nare preserved"); /* tabs around newlines are collapsed down to a single space */ assert_commit_summary("\tLeading tabs", "\tLeading\n\ttabs\n\nare preserved"); /* tabs around newlines are collapsed down to a single space */
assert_commit_summary(" Leading Spaces", " Leading\n Spaces\n\nare preserved"); /* spaces around newlines are collapsed down to a single space */ assert_commit_summary(" Leading Spaces", " Leading\n Spaces\n\nare preserved"); /* spaces around newlines are collapsed down to a single space */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment