Мы все это слышали - «попробуйте чистую сборку и посмотрите, работает ли она». Зачастую при восстановлении исчезают странные ошибки времени выполнения. Это заставило меня задуматься - правильное отслеживание зависимостей - это работа системы сборки.Ошибки времени выполнения, которые исчезают при восстановлении, указывающие на ошибки в системе сборки?
Такие ошибки времени выполнения по определению ошибки в системе сборки - будь то make, или msbuild, или в зависимости от того, что произойдет. Или иначе, если чистая сборка и нормальная сборка дают разные результаты, заключается в том, что по определению ошибка в системе сборки?
Edit: Я предполагаю, the build environment is sane - это означает, что при обновлении файлов, их «Последнее изменение» метка времени становится новее (вместо старой временной метки или же). Фактически, все системы управления версиями, которые я знаю, следуют этому правилу, потому что иначе они будут разбивать системы построения, такие как Make, которые полагаются на отметки времени, чтобы отслеживать, какие файлы нужно обновлять.
Предположим, что есть проблема м с вашей системой. Проблема устраняется откатом одного из исходных модулей. Вы делаете регулярную сборку. Он видит, что отметка времени скомпилированного модуля после метки времени исходного модуля, поэтому он не перекомпилирует этот модуль. Вы запускаете встроенную систему, и у нее все еще есть проблема. Вы запускаете чистую сборку, и каждый модуль построен. Теперь проблема исправлена. –
Git устанавливает метку времени в текущее время при замене файла, в частности, для решения этой проблемы. Я думаю, что все системы контроля версий делают это так. http://stackoverflow.com/a/2179876/492336 – sashoalm
Я просто описываю сценарий, который произошел со мной. –