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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Junio C Hamano <gitster@xxxxxxxxx> writes:

> Junio C Hamano <gitster@xxxxxxxxx> writes:
>
>> The duplicated code to read the same file bothers me somewhat.
>>
>> I wondered if it makes the result easier to follow (and easier to
>> update) if this part of the code is restructured like this:
>>
>> 	if (file_exists(git_path_merge_msg()) ||
>>             file_exists(git_path_squash_msg())) {
>> 	    if (file_exists(git_path_squash_msg())) {
>> 		read SQUASH_MSG;
>> 	    }
>>             if (file_exists(git_path_merge_msg()))
>>             	read MERGE_MSG;
>> 	    }
>>             hook_arg1 = "merge";
>> 	}
>>
>> but I am not sure if that structure is better.
>
> ... as this duplicates file_exists() call to the same thing, which
> is no better than duplicated calls to read *_MSG files.

So, let's take the program structure from your original, but fix the
order of the inclusion (and the log message), perhaps like the
attached patch.

Don't we also want to have a new test so that this "contents from
both files are included in the result in the expected order" feature
will not get broken in the future?

-- >8 --
Subject: [PATCH] commit: do not lose SQUASH_MSG contents

When concluding a conflicted "git merge --squash", the command
failed to read SQUASH_MSG that was prepared by "git merge", and
showed only the "# Conflicts:" list of conflicted paths.

Place the contents from SQUASH_MSG at the beginning, just like we
show the commit log skeleton first when concluding a normal merge,
and then show the "# Conflicts:" list, to help the user write the
log message for the resulting commit.

Signed-off-by: Sven Strickroth <sven@xxxxxxxxxx>
---

 builtin/commit.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/builtin/commit.c b/builtin/commit.c
index b3bd2d4..4ad3931 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -726,9 +726,19 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
 				      &sb, &ctx);
 		hook_arg1 = "message";
 	} else if (!stat(git_path_merge_msg(), &statbuf)) {
+		hook_arg1 = "merge";
+
+		/*
+		 * In a conflicted 'merge squash', the material to help
+		 * writing the log message is found in SQUASH_MSG.
+		 */
+		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";
+		}
 		if (strbuf_read_file(&sb, git_path_merge_msg(), 0) < 0)
 			die_errno(_("could not read MERGE_MSG"));
-		hook_arg1 = "merge";
 	} 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"));
-- 
2.8.0-rc1-141-gbaa22e3


--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]