1

いくつかの Linux カーネル モジュールを含む古いリポジトリのクローンを作成しました (聞かないでください)。Linux マシンでクローンを作成すると、すべて問題ありません。しかし、私の Mac では、誰か (おそらく Mac OS X) がモジュールにバイナリ変更を加えています。私はすでに autocrlf を無効にしました。

クローンの直後の出力は次のとおりgit diff -p --stat です

 .../kernel/net/ipv4/netfilter/ipt_ecn.ko           |  Bin 3853 -> 4535 bytes
 .../kernel/net/ipv4/netfilter/ipt_ttl.ko           |  Bin 3458 -> 3904 bytes
 .../kernel/net/netfilter/xt_connmark.ko            |  Bin 4534 -> 5618 bytes
 .../2.6.26-2-686/kernel/net/netfilter/xt_dscp.ko   |  Bin 4378 -> 5217 bytes
 .../2.6.26-2-686/kernel/net/netfilter/xt_mark.ko   |  Bin 3679 -> 4334 bytes
 .../kernel/net/netfilter/xt_rateest.ko             |  Bin 4545 -> 7137 bytes
 .../2.6.26-2-686/kernel/net/netfilter/xt_tcpmss.ko |  Bin 3841 -> 6553 bytes
 7 files changed, 0 insertions(+), 0 deletions(-)

diff --git a/i686/modules/2.6.26-2-686/kernel/net/ipv4/netfilter/ipt_ecn.ko b/i686/modules/2.6.26-2-686/kernel/net/ipv4/netfilter/ipt_ecn.ko
index 76d7d8d..b1470d6 100644
Binary files a/i686/modules/2.6.26-2-686/kernel/net/ipv4/netfilter/ipt_ecn.ko and b/i686/modules/2.6.26-2-686/kernel/net/ipv4/netfilter/ipt_ecn.ko differ
diff --git a/i686/modules/2.6.26-2-686/kernel/net/ipv4/netfilter/ipt_ttl.ko b/i686/modules/2.6.26-2-686/kernel/net/ipv4/netfilter/ipt_ttl.ko
index d974dc9..9dcb633 100644
Binary files a/i686/modules/2.6.26-2-686/kernel/net/ipv4/netfilter/ipt_ttl.ko and b/i686/modules/2.6.26-2-686/kernel/net/ipv4/netfilter/ipt_ttl.ko differ
diff --git a/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_connmark.ko b/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_connmark.ko
index d9381a6..14c2a2c 100644
Binary files a/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_connmark.ko and b/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_connmark.ko differ
diff --git a/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_dscp.ko b/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_dscp.ko
index 36af201..178adfa 100644
Binary files a/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_dscp.ko and b/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_dscp.ko differ
diff --git a/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_mark.ko b/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_mark.ko
index 2dd1a0a..1329162 100644
Binary files a/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_mark.ko and b/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_mark.ko differ
diff --git a/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_rateest.ko b/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_rateest.ko
index 8678387..b23e514 100644
Binary files a/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_rateest.ko and b/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_rateest.ko differ
diff --git a/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_tcpmss.ko b/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_tcpmss.ko
index 13e4891..7c3c61c 100644
Binary files a/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_tcpmss.ko and b/i686/modules/2.6.26-2-686/kernel/net/netfilter/xt_tcpmss.ko differ

Agit reset --hardもそのトリックをしません。ただし、奇妙なことが起こります。リセットを行うたびに、git diffスイッチの場所の右側のサイズとファイル名の一部の大文字が変更されます。Mac で大文字と小文字を区別しないファイルシステムを使用していますが、それが原因でしょうか? どうすればこれを修正できますか (可能であれば、Mac を再フォーマットせずに)

4

1 に答える 1

4

この問題は、HFS+ ファイルシステムの大文字と小文字を区別しないデフォルトが原因です。

問題のある最初のファイルを取得します。

i686/modules/2.6.26-2-686/kernel/net/ipv4/netfilter/ipt_ecn.ko

ipt_ECN.ko(最初に記録されたように)同じディレクトリに次の名前のファイルもあることがわかります。

git ls-tree HEAD -- i686/modules/2.6.26-2-686/kernel/net/ipv4/netfilter/ | 
grep '^ipt_.*\.ko'

理論的には、大文字と小文字を区別するバージョンの HFS+ を使用するようにブート ボリュームを再フォーマットできますが、ランダムなアプリケーションで問題が発生する傾向があります (例: という名前のファイルを保存/インストールするfooが、後で という名前のファイルのみを読み取ろうとするアプリケーションFoo)。

バックアップ/再フォーマット/復元を除いて、大文字と小文字を区別する HFS+ でフォーマットされたディスク イメージで作業できます。ディスク ユーティリティを使用して新しいディスク イメージ (おそらく「スパース バンドル」イメージ) を作成し、作業ツリーをそのボリュームに配置します (下にマウントされます/Volumes/)。デフォルトのディスク イメージを作成し、最終ボリュームの [消去] タブで [Mac OS 拡張 (大文字と小文字を区別、ジャーナリング)] を指定して再フォーマットする必要がある場合があります。

于 2010-10-10T05:54:42.390 に答える