Subject: [PATCH] Also read SQUASH_MSG if a conflict on a merge squash occurred

From: Sven Strickroth <[email-masked]>
Date: Tue, 8 Mar 2016 05:17:54 +0100

After a merge --squash with a conflict the commit message did
not contain the information about the squashed commits, but
only the "# Conflicts:" information.

Signed-off-by: Sven Strickroth <[email-masked]>
---
 builtin/commit.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/builtin/commit.c b/builtin/commit.c
index d054f84..0405d68 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -729,6 +729,12 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
 		if (strbuf_read_file(&sb, git_path_merge_msg(), 0) < 0)
 			die_errno(_("could not read MERGE_MSG"));
 		hook_arg1 = "merge";
+		/* append SQUASH_MSG here if it exists and a merge --squash was originally performed */
+		if (!stat(git_path_squash_msg(), &statbuf)) {
+			if (strbuf_read_file(&sb, git_path_squash_msg(), 0) < 0)
+				die_errno(_("could not read SQUASH_MSG"));
+			hook_arg1 = "squash";
+		}
 	} else if (!stat(git_path_squash_msg(), &statbuf)) {
 		if (strbuf_read_file(&sb, git_path_squash_msg(), 0) < 0)
 			die_errno(_("could not read SQUASH_MSG"));
-- 
Best regards,
 Sven Strickroth
 PGP key id F5A9D4C4 @ any key-server