summaryrefslogtreecommitdiff
path: root/Documentation/git-patch-id.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/git-patch-id.txt')
-rw-r--r--Documentation/git-patch-id.txt48
1 files changed, 34 insertions, 14 deletions
diff --git a/Documentation/git-patch-id.txt b/Documentation/git-patch-id.txt
index 253fc0fc25..31efc587ee 100644
--- a/Documentation/git-patch-id.txt
+++ b/Documentation/git-patch-id.txt
@@ -7,18 +7,19 @@ git-patch-id - Compute unique ID for a patch
SYNOPSIS
--------
-'git patch-id' < <patch>
+[verse]
+'git patch-id' [--stable | --unstable] < <patch>
DESCRIPTION
-----------
-A "patch ID" is nothing but a SHA1 of the diff associated with a patch, with
-whitespace and line numbers ignored. As such, it's "reasonably stable", but at
-the same time also reasonably unique, i.e., two patches that have the same "patch
-ID" are almost guaranteed to be the same thing.
+A "patch ID" is nothing but a sum of SHA-1 of the file diffs associated with a
+patch, with whitespace and line numbers ignored. As such, it's "reasonably
+stable", but at the same time also reasonably unique, i.e., two patches that
+have the same "patch ID" are almost guaranteed to be the same thing.
IOW, you can use this thing to look for likely duplicate commits.
-When dealing with 'git-diff-tree' output, it takes advantage of
+When dealing with 'git diff-tree' output, it takes advantage of
the fact that the patch is prefixed with the object name of the
commit, and outputs two 40-byte hexadecimal strings. The first
string is the patch ID, and the second string is the commit ID.
@@ -26,16 +27,35 @@ This can be used to make a mapping from patch ID to commit ID.
OPTIONS
-------
-<patch>::
- The diff to create the ID of.
-Author
-------
-Written by Linus Torvalds <torvalds@osdl.org>
+--stable::
+ Use a "stable" sum of hashes as the patch ID. With this option:
+ - Reordering file diffs that make up a patch does not affect the ID.
+ In particular, two patches produced by comparing the same two trees
+ with two different settings for "-O<orderfile>" result in the same
+ patch ID signature, thereby allowing the computed result to be used
+ as a key to index some meta-information about the change between
+ the two trees;
+
+ - Result is different from the value produced by git 1.9 and older
+ or produced when an "unstable" hash (see --unstable below) is
+ configured - even when used on a diff output taken without any use
+ of "-O<orderfile>", thereby making existing databases storing such
+ "unstable" or historical patch-ids unusable.
+
+ This is the default if patchid.stable is set to true.
-Documentation
---------------
-Documentation by Junio C Hamano and the git-list <git@vger.kernel.org>.
+--unstable::
+ Use an "unstable" hash as the patch ID. With this option,
+ the result produced is compatible with the patch-id value produced
+ by git 1.9 and older. Users with pre-existing databases storing
+ patch-ids produced by git 1.9 and older (who do not deal with reordered
+ patches) may want to use this option.
+
+ This is the default.
+
+<patch>::
+ The diff to create the ID of.
GIT
---