2

いくつかのバイナリ ファイルを含む git リポジトリがあります。chmod 755 をバイナリ ファイルの 1 つにステージングしました。git-apply を使用して別のマシンに適用できるこのモード変更の差分を生成したいと考えています。私は使用しています:

git diff --no-color --no-ext-diff --binary --cached 560d4ad7ca02fe3cb2403da89fadae0c27fbbe73

これは、非バイナリ モードの変更に対しても問題なく機能し、バイナリ自体も変更されている限り、バイナリ モードの変更に対しても機能します。しかし、バイナリ ファイルのモードだけが変更された場合、上記の diff は空です。

以下を使用すると、git diff から出力を取得できます。

git diff --no-color --no-ext-diff --binary --cached --raw 560d4ad7ca02fe3cb2403da89fadae0c27fbbe73

残念ながら、上記のコマンドの出力を git apply に渡すことはできません。

:100644 100755 e944703... e944703... M  asbserver

何か案は?バイナリファイルの内容とモードの変更の両方が変更された場合、差分が機能するのは奇妙に思えますか?

4

1 に答える 1

0
$ chmod +x foo
$ git diff
diff --git a/foo b/foo
old mode 100644
new mode 100755

使いやすそうな差分が得られます。多分あなたの問題は適用側にあります。どのようにパッチを適用していますか? --apply スイッチを使用していますか? (場合によっては必要になることがありますが、これは完全なコマンドによって異なります)。

コメントに従って編集します。バイナリファイルを使用すると、次のようになります。

$ chmod +x favicon.ico
$ git diff
diff --git a/assets/favicon.ico b/assets/favicon.ico
old mode 100644
new mode 100755

favicon.ico はバイナリとして正しく推測されます。

$ git show f948cbeb33532d0803a9c | grep favicon
diff --git a/assets/favicon.ico b/assets/favicon.ico
Binary files /dev/null and b/assets/favicon.ico differ
于 2012-01-04T19:48:51.120 に答える