Возможно ли изменить код, не зная об этом Git? - PullRequest
6 голосов
/ 31 октября 2011

Этим утром я запустил свои тесты, и есть 2 отказа.Но я несколько дней не менял код, и все тесты проходили.

Согласно Git, изменений нет (за исключением cover.data, который является тестовым выводом).gitk не показывает никаких других изменений.

Как Git узнает, когда изменяется код?Может ли это быть вызвано сбоем / ошибкой SSD?

Каков наилучший способ выяснить, что произошло?

РЕДАКТИРОВАТЬ: Работа в Ruby on Rails с платформой Unit Test.

Ответы [ 3 ]

10 голосов
/ 31 октября 2011

Я бы начал с выяснения, почему тесты не прошли, и это может дать вам некоторые подсказки относительно того, как они могли пройти раньше. Иногда это проблема синхронизации, прерывистый сбой, что-то внешнее по отношению к жгуту теста, изменение данных, изменение даты или времени, все виды вещей.

9 голосов
/ 01 ноября 2011

Я вижу, Майк обнаружил вашу проблему (отметьте галочкой маленькое поле для ответа, пожалуйста).

Да, код может быть изменен без Git, зная об этом.Файл, вызвавший сбой, возможно, временный файл тестирования или фикстур, можно игнорировать либо в .gitignore, либо в .git / info / exclude.Выполнение git clean -dxf приведет к стиранию кассы с чего-либо, что неизвестно.git status --ignored покажет файлы, игнорируемые git.Если это так, вы хотите добавить лучшую очистку тестов как часть вашего бегуна тестов.

Для потомков, вот краткий список способов, которыми тесты могли завершиться неудачей без каких-либо изменений кода, видимых для git:

  • «Временные» тестовые файлы и устройства могут быть грязными.
  • «Временные» базы данных и таблицы могут быть грязными.
  • Чувствительны к времени или дате.
  • Он использует сетевые ресурсы, и они изменились.
  • Компилятор был изменен.
  • Использованные установленные библиотеки были изменены.
    • Библиотеки, в которых используются библиотеки, были изменены.
  • Ядро было изменено.
  • Все используемые серверы (базы данных, веб-серверы и т. Д ...) были изменены.
  • Используется параллельная обработка, и иногда возникает незначительная ошибка.
  • Диск (или файловая система, в которую помещаются временные файлы) заполнен.
  • Диск(или файловая система, в которой хранятся временные файлы) не работает.
  • Ваши квоты памяти / диска / процесса / файлового дескриптора были сокращены.
  • На машине не хватает памяти.
  • На машине закончились файловые дескрипторы.
  • Он использует приборы со случайно сгенерированными данными, а некоторые генерируют ошибки.
2 голосов
/ 31 октября 2011

В вашем хранилище не может быть никаких изменений, если Git не знает об этом и не регистрирует его где-либо, поскольку необходимо получить журналы, чтобы в любом случае можно было получить файлы репо.Я бы проверил, чтобы убедиться, что сбои не вызваны чем-то на машине, которое не должно работать одновременно с тестами, или это может быть условием гонки, которого вы не ожидаете.

...