| The output from linkgit:git-format-patch[1] can lead to a different |
| commit message when applied with linkgit:git-am[1]. The patch that is |
| applied may also be different from the one that was generated, or patch |
| application may fail outright. |
| ifdef::git-am[] |
| See the <<discussion,DISCUSSION>> section above for the syntactic rules. |
| endif::git-am[] |
| |
| ifndef::git-am[] |
| include::format-patch-end-of-commit-message.adoc[] |
| endif::git-am[] |
| |
| Note that this is especially problematic for unindented diffs that occur |
| in the commit message; the diff in the commit message might get applied |
| along with the patch section, or the patch application machinery might |
| trip up because the patch target doesn't apply. This could for example |
| be caused by a diff in a Markdown code block. |
| |
| The solution for this is to indent the diff or other text that could |
| cause problems. |
| |
| This loss of fidelity might be simple to notice if you are applying |
| patches directly from a mailbox. However, changes originating from Git |
| could be applied in bulk, in which case this would be much harder to |
| notice. This could for example be a Linux distribution which uses patch |
| files to apply changes on top of the commits from the upstream |
| repositories. This goes to show that this behavior does not only impact |
| email workflows. |
| |
| Given these limitations, one might be tempted to use a general-purpose |
| utility like patch(1) instead. However, patch(1) will not only look for |
| unindented diffs (like linkgit:git-am[1]) but will try to apply indented |
| diffs as well. |