mirror of
https://github.com/git/git.git
synced 2026-02-27 18:29:43 +00:00
Merge branch 'kh/doc-am-format-sendmail'
Doc update. * kh/doc-am-format-sendmail: doc: add caveat about round-tripping format-patch
This commit is contained in:
33
Documentation/format-patch-caveats.adoc
Normal file
33
Documentation/format-patch-caveats.adoc
Normal file
@@ -0,0 +1,33 @@
|
||||
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.
|
||||
8
Documentation/format-patch-end-of-commit-message.adoc
Normal file
8
Documentation/format-patch-end-of-commit-message.adoc
Normal file
@@ -0,0 +1,8 @@
|
||||
Any line that is of the form:
|
||||
|
||||
* three-dashes and end-of-line, or
|
||||
* a line that begins with "diff -", or
|
||||
* a line that begins with "Index: "
|
||||
|
||||
is taken as the beginning of a patch, and the commit log message
|
||||
is terminated before the first occurrence of such a line.
|
||||
@@ -233,6 +233,7 @@ applying.
|
||||
create an empty commit with the contents of the e-mail message
|
||||
as its log message.
|
||||
|
||||
[[discussion]]
|
||||
DISCUSSION
|
||||
----------
|
||||
|
||||
@@ -252,14 +253,11 @@ where the patch begins. Excess whitespace at the end of each
|
||||
line is automatically stripped.
|
||||
|
||||
The patch is expected to be inline, directly following the
|
||||
message. Any line that is of the form:
|
||||
message.
|
||||
include::format-patch-end-of-commit-message.adoc[]
|
||||
|
||||
* three-dashes and end-of-line, or
|
||||
* a line that begins with "diff -", or
|
||||
* a line that begins with "Index: "
|
||||
|
||||
is taken as the beginning of a patch, and the commit log message
|
||||
is terminated before the first occurrence of such a line.
|
||||
This means that the contents of the commit message can inadvertently
|
||||
interrupt the processing (see the <<caveats,CAVEATS>> section below).
|
||||
|
||||
When initially invoking `git am`, you give it the names of the mailboxes
|
||||
to process. Upon seeing the first patch that does not apply, it
|
||||
@@ -283,6 +281,13 @@ commits, like running 'git am' on the wrong branch or an error in the
|
||||
commits that is more easily fixed by changing the mailbox (e.g.
|
||||
errors in the "From:" lines).
|
||||
|
||||
[[caveats]]
|
||||
CAVEATS
|
||||
-------
|
||||
|
||||
:git-am: 1
|
||||
include::format-patch-caveats.adoc[]
|
||||
|
||||
HOOKS
|
||||
-----
|
||||
This command can run `applypatch-msg`, `pre-applypatch`,
|
||||
|
||||
@@ -798,6 +798,10 @@ if they are part of the requested range. A simple "patch" does not
|
||||
include enough information for the receiving end to reproduce the same
|
||||
merge commit.
|
||||
|
||||
=== PATCH APPLICATION
|
||||
|
||||
include::format-patch-caveats.adoc[]
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:git-am[1], linkgit:git-send-email[1]
|
||||
|
||||
@@ -692,6 +692,11 @@ Links of a few such community maintained helpers are:
|
||||
- https://github.com/AdityaGarg8/git-credential-email[git-msgraph]
|
||||
(cross platform client that can send emails using the Microsoft Graph API)
|
||||
|
||||
CAVEATS
|
||||
-------
|
||||
|
||||
include::format-patch-caveats.adoc[]
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:git-format-patch[1], linkgit:git-imap-send[1], mbox(5)
|
||||
|
||||
Reference in New Issue
Block a user