Git меняет файлы в Mac OS X - PullRequest
       25

Git меняет файлы в Mac OS X

1 голос
/ 07 октября 2010

Я только что клонировал старый репозиторий, содержащий несколько модулей ядра 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

A git reset --hard тоже не помогает. Однако происходит нечто странное: каждый раз, когда я делаю сброс, размеры справа от git diff меняются местами, и некоторые заглавные буквы в имени файла меняются. У меня есть файловая система без учета регистра на Mac, может ли это быть причиной этого? Как я мог это исправить (если возможно, без переформатирования Mac)

1 Ответ

4 голосов
/ 10 октября 2010

Проблема связана с регистронезависимой файловой системой 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).

Если не считать bakup / reformat / restore, вы можете работать с образом диска, отформатированным с учетом регистра HFS +. Используйте Дисковую утилиту, чтобы создать новый образ диска (возможно, образ «разреженного комплекта») и поместить рабочее дерево в этот том (оно будет смонтировано в /Volumes/). Возможно, вам потребуется создать образ диска по умолчанию, а затем переформатировать его, указав «Mac OS Extended (чувствительно к регистру, с журналом)» на вкладке «Стереть» для тома rsulting).

...