SYNOPSIS

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

DESCRIPTION

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

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

つまり、これを使用して、重複している可能性のあるコミットを探すことができます。

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

OPTIONS

--stable

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

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

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

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

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

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

GIT

Part of the git(1) suite