2008-09-13 7 views
0

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

Позже, когда мои часы исправлены, и я скомпилирую свои источники, система перестраивает большую часть проекта, потому что некоторые из последних дат модификации в будущем. Каждая последующая перекомпиляция имеет одинаковую проблему.

Решение, которое я знаю, являются:

а) Найдите файл, который имеет будущее время и повторно сохранить его. Этот метод не идеален, потому что проект очень большой, и для поиска файлов, которые были изменены, требуется даже время для расширенного поиска Windows.

b) Удалите весь проект и переустановите его из svn.

Кто-нибудь знает, как я могу обойти эту проблему?

Возможно ли установить визуальную студию, которая позволит мне рассказать компилятору использовать бит архива вместо последней даты модификации для обнаружения изменений исходного файла?

Возможно, имеется реверсивный инструмент сброса даты изменения, который можно использовать в этой ситуации?

ответ

1

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

Однако, потому что я люблю PowerShell:

Get-ChildItem -r . | 
    ? { $_.LastWriteTime -gt ([DateTime]::Now) } | 
    Set-ItemProperty -Name "LastWriteTime" -Value ([DateTime]::Now) 
0

Я не использую окна - но, безусловно, есть что-то вроде awk или grep, которые вы можете использовать для поиска «будущих» файлов с отметкой времени, а затем «прикасайтесь» к ним, чтобы они имели нужное время - даже скрипт perl ,

+0

Я мог бы сделать программу/скрипт, но, безусловно, уже что-то сделано. – 2008-09-13 23:37:23

1

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

1

Установка Unix Utils

touch temp 
find . -newer temp -exec touch {} ; 
rm temp 

Убедитесь в том, чтобы использовать полный путь при вызове находку, или это будет, вероятно, использовать FIND.EXE Windows' вместо этого. Это не проверено в оболочке Windows - вам может потребоваться немного изменить синтаксис.

5

Я бы порекомендовал использовать виртуальную машину, где вы можете общаться с часами до вашего сердца, и это не повлияет на вашу машину разработки. Два бесплатных: Virtual PC от Microsoft и VirtualBox от Sun.

0

1) Используйте систему сборки, которая не использует временные метки для обнаружения изменений, как scons

2) Используйте ccache, чтобы ускорить систему сборки который использует временные метки (и восстанавливает все).

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

+0

Оба этих решения обрабатываются [makepp] (http: // makepp.sourceforge.net/), первый - автоматически, последний - необязательный. – Daniel 2013-09-24 21:53:36

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