Junio C Hamano <gits...@pobox.com> writes:

> Junio C Hamano <gits...@pobox.com> 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 <s...@cs-ware.de>
---

 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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to