Uploaded image for project: 'Sourcetree For Mac'
  1. Sourcetree For Mac
  2. SRCTREE-8064

Git - Commit after merge - Incorrect parameter passed to Git Hook "prepare-commit-msg"

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • High
    • None
    • 4.2.4
    • Git
    • None
    • Severity 2 - Major

    Description

      Minimum Steps to Reproduce

      1) Add a "prepare-commit-msg" Git hook (see Git docs here) that contains a shell script that outputs the second parameter passed to the hook:
      #!/bin/sh

      echo $2
      2) In Sourcetree, perform a merge that has no conflicts WITHOUT the "Commit merge immediately (if no conflicts)" option checked.

      3) In Sourcetree, commit the result and click "Show Full Output" in the resulting modal window.

      4) Observe the output; specifically around the last line before "Completed successfully."

      Expected Result

      The "prepare-commit-msg" script should output the second parameter as: "merge".

      This can be verified by performing a merge WITH the "Commit merge immediately (if no conflicts)" option checked (which will result in the correct value of "merge" being printed).

      Actual Result

      The "prepare-commit-msg" script outputs the second parameter as "message" (which is incorrect; it should be "merge").

      Real use case & Why this is an issue

      The steps above are simply to demonstrate the issue.

      The actual issue occurs when we perform a merge that has conflicts and then try to commit from Sourcetree. This results in the same scenario as seen in the steps above, where Sourcetree does not commit the merge immediately but does provide a commit message. After we resolve the conflicts we commit from Sourcetree and that is when we see the issue.

      My team's "prepare-commnit-msg" hook relies on the second parameter to customize the commit message when a merge conflict exists. We rely on this commit message to know what files had conflicts so we know what files to review and re-test after a merge with conflicts.

      Without the correct parameter, our hook cannot detect that a merge is occurring and therefore cannot customize the commit message.

      Workaround

      Do not use Sourcetree; commit from the command line.

      Attachments

        Activity

          People

            Unassigned Unassigned
            7b593c0c3df8 TJ Markham
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: