archive: don't let remote clients get unreachable commits
[gitweb.git] / Documentation / git-format-patch.txt
index 7548a21d352f0625a114f48c3063612f2a063436..3c29655d753902facf7f356dd30b1783ec96660e 100644 (file)
@@ -9,7 +9,7 @@ git-format-patch - Prepare patches for e-mail submission
 SYNOPSIS
 --------
 [verse]
-'git-format-patch' [-k] [-o <dir> | --stdout] [--thread]
+'git format-patch' [-k] [-o <dir> | --stdout] [--thread]
                   [--attach[=<boundary>] | --inline[=<boundary>]]
                   [-s | --signoff] [<common diff options>]
                   [-n | --numbered | -N | --no-numbered]
@@ -27,7 +27,7 @@ DESCRIPTION
 Prepare each commit with its patch in
 one file per commit, formatted to resemble UNIX mailbox format.
 The output of this command is convenient for e-mail submission or
-for use with linkgit:git-am[1].
+for use with 'git-am'.
 
 There are two ways to specify which commits to operate on.
 
@@ -39,14 +39,11 @@ There are two ways to specify which commits to operate on.
    REVISIONS" section in linkgit:git-rev-parse[1]) means the
    commits in the specified range.
 
-A single commit, when interpreted as a <revision range>
-expression, means "everything that leads to that commit", but
-if you write 'git format-patch <commit>', the previous rule
-applies to that command line and you do not get "everything
-since the beginning of the time".  If you want to format
-everything since project inception to one commit, say "git
-format-patch \--root <commit>" to make it clear that it is the
-latter case.
+The first rule takes precedence in the case of a single <commit>.  To
+apply the second rule, i.e., format everything since the beginning of
+history up until <commit>, use the '\--root' option: "git format-patch
+\--root <commit>".  If you want to format only <commit> itself, you
+can do this with "git format-patch -1 <commit>".
 
 By default, each output file is numbered sequentially from 1, and uses the
 first line of the commit message (massaged for pathname safety) as
@@ -58,10 +55,12 @@ output, unless the --stdout option is specified.
 If -o is specified, output files are created in <dir>.  Otherwise
 they are created in the current working directory.
 
-If -n is specified, instead of "[PATCH] Subject", the first line
-is formatted as "[PATCH n/m] Subject".
+By default, the subject of a single patch is "[PATCH] First Line" and
+the subject when multiple patches are output is "[PATCH n/m] First
+Line". To force 1/1 to be added for a single patch, use -n.  To omit
+patch numbers from the subject, use -N
 
-If given --thread, git-format-patch will generate In-Reply-To and
+If given --thread, 'git-format-patch' will generate In-Reply-To and
 References headers to make the second and subsequent patch mails appear
 as replies to the first mail; this also generates a Message-Id header to
 reference.
@@ -74,14 +73,17 @@ include::diff-options.txt[]
 -<n>::
        Limits the number of patches to prepare.
 
--o|--output-directory <dir>::
+-o <dir>::
+--output-directory <dir>::
        Use <dir> to store the resulting files, instead of the
        current working directory.
 
--n|--numbered::
-       Name output in '[PATCH n/m]' format.
+-n::
+--numbered::
+       Name output in '[PATCH n/m]' format, even with a single patch.
 
--N|--no-numbered::
+-N::
+--no-numbered::
        Name output in '[PATCH]' format.
 
 --start-number <n>::
@@ -90,13 +92,14 @@ include::diff-options.txt[]
 --numbered-files::
        Output file names will be a simple number sequence
        without the default first line of the commit appended.
-       Mutually exclusive with the --stdout option.
 
--k|--keep-subject::
+-k::
+--keep-subject::
        Do not strip/add '[PATCH]' from the first line of the
        commit log message.
 
--s|--signoff::
+-s::
+--signoff::
        Add `Signed-off-by:` line to the commit message, using
        the committer identity of yourself.
 
@@ -142,9 +145,9 @@ include::diff-options.txt[]
        to any configured headers, and may be used multiple times.
 
 --cover-letter::
-       Generate a cover letter template.  You still have to fill in
-       a description, but the shortlog and the diffstat will be
-       generated for you.
+       In addition to the patches, generate a cover letter file
+       containing the shortlog and the overall diffstat.  You can
+       fill in a description in the file before sending it out.
 
 --suffix=.<sfx>::
        Instead of using `.patch` as the suffix for generated
@@ -162,6 +165,13 @@ not add any suffix.
        applied.  By default the contents of changes in those files are
        encoded in the patch.
 
+--root::
+       Treat the revision argument as a <revision range>, even if it
+       is just a single commit (that would normally be treated as a
+       <since>).  Note that root commits included in the specified
+       range are always formatted as creation patches, independently
+       of this flag.
+
 CONFIGURATION
 -------------
 You can specify extra mail header lines to be added to each message
@@ -170,10 +180,11 @@ and file suffix, and number patches when outputting more than one.
 
 ------------
 [format]
-        headers = "Organization: git-foo\n"
-        subjectprefix = CHANGE
-        suffix = .txt
-        numbered = auto
+       headers = "Organization: git-foo\n"
+       subjectprefix = CHANGE
+       suffix = .txt
+       numbered = auto
+       cc = <email>
 ------------
 
 
@@ -181,10 +192,10 @@ EXAMPLES
 --------
 
 * Extract commits between revisions R1 and R2, and apply them on top of
-the current branch using `git-am` to cherry-pick them:
+the current branch using 'git-am' to cherry-pick them:
 +
 ------------
-$ git format-patch -k --stdout R1..R2 | git-am -3 -k
+$ git format-patch -k --stdout R1..R2 | git am -3 -k
 ------------
 
 * Extract all commits which are in the current branch but not in the
@@ -200,7 +211,7 @@ For each commit a separate file is created in the current directory.
 project:
 +
 ------------
-$ git format-patch \--root origin
+$ git format-patch --root origin
 ------------
 
 * The same as the previous one:
@@ -222,14 +233,14 @@ as e-mailable patches:
 $ git format-patch -3
 ------------
 
-See Also
+SEE ALSO
 --------
 linkgit:git-am[1], linkgit:git-send-email[1]
 
 
 Author
 ------
-Written by Junio C Hamano <junkio@cox.net>
+Written by Junio C Hamano <gitster@pobox.com>
 
 Documentation
 --------------
@@ -237,4 +248,4 @@ Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
 
 GIT
 ---
-Part of the linkgit:git[7] suite
+Part of the linkgit:git[1] suite