2010-10-07 161 views
1

我剛克隆了一個包含一些Linux內核模塊的舊版本庫(不要問)。 如果我在Linux機器上克隆,一切都很好。然而,在我的Mac上,有人(可能是Mac OS X)會對模塊進行二進制更改。我已經禁用autocrlf。Git在Mac OS X上更改文件

這裏是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 

一個git reset --hard不會做的伎倆,無論是。但有些奇怪的事情發生了:每當我做重置時,git diff右邊的大小會切換位置,並且文件名中的一些大小寫會改變。我在Mac上有一個不區分大小寫的文件系統,這可能是這個原因嗎?我該如何解決這個問題(如果可能,不用重新格式化Mac)

回答

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的文件,但後來專門嘗試讀取名爲的文件)。

缺少bakup /重新格式化/還原,您可以在格式化爲區分大小寫的HFS +的磁盤映像中工作。使用「磁盤工具」創建一個新的磁盤映像(可能是一個「稀疏捆綁」映像),並將您的工作樹放入該卷(它將被掛載在/Volumes/下)。您可能需要創建一個默認磁盤映像,然後通過在擦除卷的擦除選項卡中指定「Mac OS Extended(區分大小寫,日誌式)」來重新格式化它)。