2010-01-13 4 views
2

Мне удалось получить индекс в состоянии, когда некоторые файлы не отслеживаются, как ожидалось.git не обнаруживает изменений в некоторых файлах

В качестве примера я size.h и test.h в неизменном виде в рабочем каталоге:

$ git-ls-files -st size.h test.h 
H 100644 de2c741b07d86f92bdd660626848072cb2bf510f 0  size.h 
H 100644 8bb24bc7483ffcfc0fc1a3761dc63e86a1b3e003 0  test.h 
$ git status 
# On branch master 
nothing to commit (working directory clean) 

Тогда я сделать некоторые случайные изменения в обоих файлах:

$ fortune >> size.h 
$ fortune >> test.h 

По какой-то причине размера .h не изменяется (хотя файл явно есть). В то же время test.h модифицируется, как и ожидалось:

$ git status 
# On branch master 
# Changed but not updated: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
#  modified: test.h 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

После удаления индекса и сброса все возвращается в нормальное русло:

$ rm .git/index 
$ git reset 
Unstaged changes after reset: 
M  size.h 
M  test.h 
$ git status 
# On branch master 
# Changed but not updated: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
#  modified: size.h 
#  modified: test.h 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

Я работал с мерзавцем 1.6.6 на CentOS и msysgit 1.6.5.1 на Windows над samba в этом хранилище до появления странности. Я не смог воспроизвести это из нового клона.

У меня возникает чувство, что это ошибка в msysgit, возможно, в сочетании с самбой. Есть идеи?

ответ

3

Единственная ошибка, которую я видел, которая также отображает неправильный статус для Git over samba - GitX ticket 147.
Речь идет о противоположной ситуации (статус git показывает модификацию файла, который не был изменен), но предполагает, что некоторые элементы файла (размер? Date? Rights?) Неправильно передаются через долю samba.

Это заставило меня почувствовать, что это проблема с часами на компьютере. Установка времени на сервере -1h не помогает.
BTW, gitx и git-gui отлично работают через sshfs на тех же двух машинах (но, хотя удобно, sshfs не так быстро, как samba в локальной сети).

Locking issue, как известно, происходит при клонировании репо над долей самбы.

2

я испытывал эту проблему с версией 1.7.9.msysgit.0

Проблема заключалась в том, что я переместил проект в новый каталог, и по крайней мере один из моих подмодулей была абсолютный путь к worktree.

Как только я удалил каталоги подмодулей, удалил их записи в .git/modules и повторно инициализировал и обновил их, проблема исчезла.

Это было странно, потому что git не давал абсолютное сообщение об ошибке или предупреждении (которое я мог видеть) при проверке статуса проекта, только когда я обновил обновление подмодуля git - он показал бы мне ошибку, t получить путь, который он хотел.

Смежные вопросы