X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=Documentation%2Fdiff-format.txt;h=e38a1f14056b2e3cfe3c281eb7df7e5b44d520db;hb=3b559eab55693111e0922cd3dd41bfdba2e22989;hp=2060ae2fcb9935ed11ecb71a093ad22c661339bf;hpb=fb8e23fae2ac9af831260079b14eabad316f3769;p=git.git diff --git a/Documentation/diff-format.txt b/Documentation/diff-format.txt index 2060ae2fc..e38a1f140 100644 --- a/Documentation/diff-format.txt +++ b/Documentation/diff-format.txt @@ -59,68 +59,45 @@ When `-z` option is not used, TAB, LF, and backslash characters in pathnames are represented as `\t`, `\n`, and `\\`, respectively. +diff format for merges +---------------------- -Generating patches with -p --------------------------- - -When "git-diff-index", "git-diff-tree", or "git-diff-files" are run -with a '-p' option, they do not produce the output described above; -instead they produce a patch file. - -The patch generation can be customized at two levels. - -1. When the environment variable 'GIT_EXTERNAL_DIFF' is not set, - these commands internally invoke "diff" like this: - - diff -L a/ -L b/ -pu -+ -For added files, `/dev/null` is used for . For removed -files, `/dev/null` is used for -+ -The "diff" formatting options can be customized via the -environment variable 'GIT_DIFF_OPTS'. For example, if you -prefer context diff: - - GIT_DIFF_OPTS=-c git-diff-index -p HEAD +"git-diff-tree" and "git-diff-files" can take '-c' or '--cc' option +to generate diff output also for merge commits. The output differs +from the format described above in the following way: +. there is a colon for each parent +. there are more "src" modes and "src" sha1 +. status is concatenated status characters for each parent +. no optional "score" number +. single path, only for "dst" -2. When the environment variable 'GIT_EXTERNAL_DIFF' is set, the - program named by it is called, instead of the diff invocation - described above. -+ -For a path that is added, removed, or modified, -'GIT_EXTERNAL_DIFF' is called with 7 parameters: - - path old-file old-hex old-mode new-file new-hex new-mode -+ -where: +Example: - -file:: are files GIT_EXTERNAL_DIFF can use to read the - contents of , - -hex:: are the 40-hexdigit SHA1 hashes, - -mode:: are the octal representation of the file modes. +------------------------------------------------ +::100644 100644 100644 fabadb8... cc95eb0... 4866510... MM describe.c +------------------------------------------------ -+ -The file parameters can point at the user's working file -(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file` -when a new file is added), or a temporary file (e.g. `old-file` in the -index). 'GIT_EXTERNAL_DIFF' should not worry about unlinking the -temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits. +Note that 'combined diff' lists only files which were modified from +all parents. -For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1 -parameter, . +Generating patches with -p +-------------------------- -git specific extension to diff format -------------------------------------- +When "git-diff-index", "git-diff-tree", or "git-diff-files" are run +with a '-p' option, they do not produce the output described above; +instead they produce a patch file. You can customize the creation +of such patches via the GIT_EXTERNAL_DIFF and the GIT_DIFF_OPTS +environment variables. -What -p option produces is slightly different from the -traditional diff format. +What the -p option produces is slightly different from the traditional +diff format. 1. It is preceded with a "git diff" header, that looks like this: - diff --git a/file1 b/file2 + diff --git a/file1 b/file2 + The `a/` and `b/` filenames are the same unless rename/copy is involved. Especially, even for a creation or a deletion, @@ -204,7 +181,7 @@ or like this (when '--cc' option is used): deleted file mode , + The `mode ,..` line appears only if at least one of -the is diferent from the rest. Extended headers with +the is different from the rest. Extended headers with information about detected contents movement (renames and copying detection) are designed to work with diff of two and are not used by combined diff format. @@ -214,9 +191,9 @@ copying detection) are designed to work with diff of two --- a/file +++ b/file + -Contrary to two-line header for traditional 'unified' diff -format, and similar to filenames in ordinary "diff header", -/dev/null is not used for creation or deletion. +Similar to two-line header for traditional 'unified' diff +format, `/dev/null` is used to signal created or deleted +files. 4. Chunk header format is modified to prevent people from accidentally feeding it to `patch -p1`. Combined diff format