2 .\" Title: git-patch-id
3 .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
4 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
7 .\" Source: Git 2.38.0.rc1.6.g4fd6c5e444
10 .TH "GIT\-PATCH\-ID" "1" "09/23/2022" "Git 2\&.38\&.0\&.rc1\&.6\&.g4f" "Git Manual"
11 .\" -----------------------------------------------------------------
12 .\" * Define some portability stuff
13 .\" -----------------------------------------------------------------
14 .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15 .\" http://bugs.debian.org/507673
16 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
17 .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20 .\" -----------------------------------------------------------------
21 .\" * set default formatting
22 .\" -----------------------------------------------------------------
23 .\" disable hyphenation
25 .\" disable justification (adjust text to left margin only)
27 .\" -----------------------------------------------------------------
28 .\" * MAIN CONTENT STARTS HERE *
29 .\" -----------------------------------------------------------------
31 git-patch-id \- Compute unique ID for a patch
35 \fIgit patch\-id\fR [\-\-stable | \-\-unstable]
40 Read a patch from the standard input and compute the patch ID for it\&.
42 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\(cqs "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\&.
44 IOW, you can use this thing to look for likely duplicate commits\&.
46 When dealing with \fIgit diff\-tree\fR 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\&. This can be used to make a mapping from patch ID to commit ID\&.
51 Use a "stable" sum of hashes as the patch ID\&. With this option:
61 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;
72 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\&.
78 This is the default if patchid\&.stable is set to true\&.
88 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\&.
94 This is the default\&.
102 Part of the \fBgit\fR(1) suite