logo

oasis-root

Compiled tree of Oasis Linux based on own branch at <https://hacktivis.me/git/oasis/> git clone https://anongit.hacktivis.me/git/oasis-root.git

git-patch-id.1 (4104B)


  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: 2025-03-14
  6. .\" Manual: Git Manual
  7. .\" Source: Git 2.49.0
  8. .\" Language: English
  9. .\"
  10. .TH "GIT\-PATCH\-ID" "1" "2025-03-14" "Git 2\&.49\&.0" "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
  101. .\}
  102. .nf
  103. This is the default if patchid\&.stable is set to true\&.
  104. .fi
  105. .if n \{\
  106. .RE
  107. .\}
  108. .RE
  109. .RE
  110. .PP
  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\&.
  114. .sp
  115. .if n \{\
  116. .RS 4
  117. .\}
  118. .nf
  119. This is the default\&.
  120. .fi
  121. .if n \{\
  122. .RE
  123. .\}
  124. .RE
  125. .SH "GIT"
  126. .sp
  127. Part of the \fBgit\fR(1) suite