Autogenerated manpages for v2.47.0-rc0-18-ge9356b
[git-manpages.git] / man1 / git-patch-id.1
blobbcac41ccdf3a318a29ec854e8227fa334ee40f46
1 '\" t
2 .\"     Title: git-patch-id
3 .\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
4 .\" Generator: DocBook XSL Stylesheets v1.79.2 <http://docbook.sf.net/>
5 .\"      Date: 2024-09-30
6 .\"    Manual: Git Manual
7 .\"    Source: Git 2.47.0.rc0.18.ge9356ba3ea
8 .\"  Language: English
9 .\"
10 .TH "GIT\-PATCH\-ID" "1" "2024-09-30" "Git 2\&.47\&.0\&.rc0\&.18\&.ge" "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 .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
18 .ie \n(.g .ds Aq \(aq
19 .el       .ds Aq '
20 .\" -----------------------------------------------------------------
21 .\" * set default formatting
22 .\" -----------------------------------------------------------------
23 .\" disable hyphenation
24 .nh
25 .\" disable justification (adjust text to left margin only)
26 .ad l
27 .\" -----------------------------------------------------------------
28 .\" * MAIN CONTENT STARTS HERE *
29 .\" -----------------------------------------------------------------
30 .SH "NAME"
31 git-patch-id \- Compute unique ID for a patch
32 .SH "SYNOPSIS"
33 .sp
34 .nf
35 \fIgit patch\-id\fR [\-\-stable | \-\-unstable | \-\-verbatim]
36 .fi
37 .SH "DESCRIPTION"
38 .sp
39 Read a patch from the standard input and compute the patch ID for it\&.
40 .sp
41 A "patch ID" is nothing but a sum of SHA\-1 of the file diffs associated with a patch, with 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\&.
42 .sp
43 The main usecase for this command is to look for likely duplicate commits\&.
44 .sp
45 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\&.
46 .SH "OPTIONS"
47 .PP
48 \-\-verbatim
49 .RS 4
50 Calculate the patch\-id of the input as it is given, do not strip any whitespace\&.
51 .sp
52 .if n \{\
53 .RS 4
54 .\}
55 .nf
56 This is the default if patchid\&.verbatim is true\&.
57 .fi
58 .if n \{\
59 .RE
60 .\}
61 .RE
62 .PP
63 \-\-stable
64 .RS 4
65 Use a "stable" sum of hashes as the patch ID\&. With this option:
66 .sp
67 .RS 4
68 .ie n \{\
69 \h'-04'\(bu\h'+03'\c
70 .\}
71 .el \{\
72 .sp -1
73 .IP \(bu 2.3
74 .\}
75 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;
76 .RE
77 .sp
78 .RS 4
79 .ie n \{\
80 \h'-04'\(bu\h'+03'\c
81 .\}
82 .el \{\
83 .sp -1
84 .IP \(bu 2.3
85 .\}
86 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\&.
87 .RE
88 .sp
89 .RS 4
90 .ie n \{\
91 \h'-04'\(bu\h'+03'\c
92 .\}
93 .el \{\
94 .sp -1
95 .IP \(bu 2.3
96 .\}
97 All whitespace within the patch is ignored and does not affect the id\&.
98 .sp
99 .if n \{\
100 .RS 4
103 This is the default if patchid\&.stable is set to true\&.
105 .if n \{\
111 \-\-unstable
112 .RS 4
113 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 and whitespace is ignored\&. 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\&.
115 .if n \{\
116 .RS 4
119 This is the default\&.
121 .if n \{\
125 .SH "GIT"
127 Part of the \fBgit\fR(1) suite