SYNOPSIS

git patch-id [--stable | --unstable | --verbatim]

DESCRIPTION

標準入力からパッチを読み取り、そのパッチIDを計算します。

「パッチID」は、パッチに関連付けられたファイル差分のSHA-1の合計に過ぎず、行番号は無視されます。そのため、「適度に安定」していますが、同時に適度に一意です。つまり、同じ「パッチID」を持つ2つのパッチは、ほぼ同じものであることが保証されています。

このコマンドの主な利用シーンは、 重複している可能性のあるコミットを探すことです。

git diff-tree 出力を処理する場合、パッチの前にコミットのオブジェクト名が付いているという事実を利用して、2つの40バイトの16進文字列を出力します。最初の文字列はパッチIDで、2番目の文字列はコミットIDです。これを使用して、パッチIDからコミットIDへのマッピングを作成できます。

OPTIONS

--verbatim

与えられた入力のパッチIDを計算します。 空白(whitespace)は削除しません。

これは patchid.verbatim が true の場合のデフォルトです。
--stable

パッチIDとして「安定した」ハッシュの合計を使用します。 このオプションを使用すると:

  • パッチを構成するファイル差分を並べ替えても、IDには影響しません。特に、 "-O<orderfile>" の異なる2つの設定で同じ2つのツリーを比較することによって生成された2つのパッチは、同じパッチIDになります。これにより、計算結果をキーとして使用して、 2本のツリー間の変更に関するメタ情報にインデックスを付ける事ができます。

  • 結果として、 "-O<orderfile>" を使用せずに取得されたdiff出力で使用された場合でも、 git 1.9 以前で生成された値、または「unstable」ハッシュ(以下 --unstable を参照)が構成されたときに生成された値とは異なります。これにより、そのような「不安定な」または過去のパッチIDを格納している既存のデータベースが使用できなくなります。

  • パッチ内の空白(whitespace)はすべて無視され、 ID には影響しません。

    patchid.stable が true に設定されている場合は、こちらがデフォルトになります。
--unstable

パッチIDとして「不安定な」ハッシュを使用します。このオプションを使用すると、生成される結果は git1.9 以前でかつ空白(whitespace)を無視して作成されたパッチID値と互換性があります。git 1.9 以前で作成されたパッチIDを保存している既存のデータベースを使用しているユーザー(並べ替えられたパッチを処理しないユーザー)は、このオプションを使用することをお勧めします。

※これがデフォルトです。

GIT

Part of the git(1) suite