2010-08-26 4 views
4

Мы следующая проблема во время работы git fsck --full --strict команду:мерзавец Fsck отчетности «несоответствие sha1»

error: sha1 mismatch ced885d12a0677f2db9025e1e684c72e67283fcd 

error: ced885d12a0677f2db9025e1e684c72e67283fcd: object corrupt or missing 
error: sha1 mismatch cf5a1546bd2de5611eaf6136fb5ca02b4e358bec 

error: cf5a1546bd2de5611eaf6136fb5ca02b4e358bec: object corrupt or missing 
error: sha1 mismatch cf5d9d5723014921370de479c54a73230c86a981 

error: cf5d9d5723014921370de479c54a73230c86a981: object corrupt or missing 
error: sha1 mismatch cf675ce5bc5eeb5937441c6a02976cf2fa40076b 

error: cf675ce5bc5eeb5937441c6a02976cf2fa40076b: object corrupt or missing 
error: sha1 mismatch cf7c5156cf127eb7141505946df51b2b57925a50 

error: cf7c5156cf127eb7141505946df51b2b57925a50: object corrupt or missing 
dangling commit 3468455f0d9d055bbe957744aa10e670469d3912 
dangling commit daeec54632203157a70bae93b9d7c3290820c2f9 
(more dangling commit messages) 

(Примечание: Я не очень забочусь о оборванных сообщения фиксации я остановлюсь на проблеме sha1 рассогласования. .)

Мое толкование этого сообщения состоит в том, что git-fsck пересматривает sha1 из полезной нагрузки, но обнаруживает, что sha1 отличается от того, который используется для обозначения объекта. В репозитории объектов не хватает (я проверил w/git cat-file).

Странная вещь, что если я снова запустить команду, я до сих пор есть SHA1 сообщения, но и для различных объектов:

error: sha1 mismatch 1452752024456a509540591c4879b3e3534f457e 

error: 1452752024456a509540591c4879b3e3534f457e: object corrupt or missing 
error: sha1 mismatch 16e08310d7182e97092d2783c911dbcf66538238 

error: 16e08310d7182e97092d2783c911dbcf66538238: object corrupt or missing 
dangling commit 3468455f0d9d055bbe957744aa10e670469d3912 

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

Мы бежим Linux и текущей версии GIT является:

$git --version 
git version 1.7.2.2.170.g5c7f2 

Ошибки были там в предыдущей версии (1.6.5.rc2.18.g6d8b). Эти git были построены из источников, используя gcc 3.4.4.

ОДНАКО, когда я копирую репозиторий на другом хосте, git fsck не сообщает никаких проблем. Версия git - 1.7.2.1 (предоставляется Fedora).

Я сделал следующие замечания:

  1. Объекты, имеющие недопустимые sha1, часто в том же диапазоне (в первом примере, sha1s начинаются с се или КФ) и ошибки, запускаемые в пределах небольшой период во время запуска fsck. Я считаю, что git-fsck выполняет упорядоченное сканирование (или, возможно, объекты сортируются в пакете).
  2. Эти объекты относительно большие капли (> 900k)
  3. Мы выполнили 15-минутный завершенный memtest-проход для возможного сбоя аппаратной памяти. Мы не обнаружили никаких проблем. На этом сервере не наблюдается другого странного поведения, которое также выполняет множество других задач, отличных от git.
  4. git gc не жалуюсь

Гипотезы до сих пор:

  1. Эта проблема вызвана неправильной сборкой мерзавец (? Библиотека версия компилятора)
  2. Наш MemTest не удалось найти реальное проблема с памятью.
  3. Существует небольшая ошибка в вычислении git-fsck sha1, которая происходит случайным образом (или, точнее, в определенные короткие окна времени) для больших капель.

Как мы можем решить это?

+2

Увидев, что вы используете нестабильную версию git, ваше лучшее место, чтобы спросить, скорее всего, будет списком Git или #git на FreeNode IRC. Я бы проверить там, чтобы начать, так как это может быть ошибка в Git, или нет, но с конструкцией разработки лучше всего проверить. –

+0

Я тоже подозревал, что нестабильная разработка.Но странно, что обе версии разработки (1.6.5.rc.2.18 и 1.7.2.2.170) показывают ту же проблему. Я попытался создать версию для разработки на другом хосте, и я запускаю fsck без проблем. Следующим шагом было скопировать исполняемый файл, чтобы запустить его на другом хосте. Не проблема. Итак, похоже, это связано с самим сервером, на котором работает Linux Centos 4.2 на двухъядерном процессоре Intel Pentium D @ 3GHz. Возможно, это связано с тем, что некоторые старые библиотеки лежат на Centos. Есть ли такая вещь, как системные требования для Git? – gawi

+0

Возможно, вы получаете получение случайного искажения коррупции с диска. Это может быть вызвано многими вещами, часто (но не всегда) аппаратными средствами. Если аппаратное обеспечение может вызвать что-то другое, кроме памяти. Попробуйте, например, скопировать каталог .git, используя 'cp -ar', а затем' diff -r' копию с оригиналом. Если они приходят по-другому, git отключается. –

ответ

2

Должно быть, это была какая-то аппаратная проблема.