Frage

Manchmal habe ich auf Code arbeiten, dass die Computer-Uhr nach vorne bewegt. In diesem Fall einiger CPP oder H-Dateien ihr letztes Änderungsdatum für die Zukunft Zeit fertig.

Später, als meine Uhr festgelegt ist, und ich kompilieren meine Quellen, umbaut System den größten Teil des Projekts, da einige der neuesten Änderungsdaten in die Zukunft. Jede nachfolgende recompile hat das gleiche Problem.

Lösung, die ich kenne, sind:

a) Suchen Sie die Datei, die die Zukunft der Zeit hat und erneut speichern. Diese Methode ist nicht ideal, weil das Projekt sehr groß ist und es braucht Zeit, sogar für Fenster fortgeschrittenen Suche um die Dateien zu finden, die geändert werden.

b) Löschen Sie das gesamte Projekt und prüfen Sie es aus dem SVN aus.

Wer weiß, wie ich dieses Problem umgehen kann?

Gibt es vielleicht eine Einstellung in Visual Studio, den mir erlaubt, den Compiler zu sagen, den Archiv-Bit anstelle dem letzten Änderungsdatums zu verwenden, um Quelldatei Änderungen zu erkennen?

Oder vielleicht gibt es ein rekursive Änderungsdatum Reset-Tool, das in dieser Situation verwendet werden kann?

War es hilfreich?

Lösung

Wenn dies mein Problem ist, würde ich nach Wegen suchen, zu vermeiden, mit der Systemzeit Ausmisten. Isolieren Sie den Code unter Komponententests oder eine virtuelle Maschine, oder so etwas.

Allerdings, weil ich liebe Powershell :

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

Andere Tipps

würde ich empfehlen, eine virtuelle Maschine mit dem Sie Schlamassel mit der Uhr können Sie zum Inhalt Ihres Herzens und es wird nicht Ihre Entwicklung Maschine beeinflussen. Zwei freie gibt Virtual PC von Microsoft und VirtualBox von Sun.

Ich weiß nicht, ob dies in Ihrer Situation funktioniert aber wie Sie Ihre Uhr nicht vorwärts bewegen, sondern wickeln Sie Ihre gettime Methode (oder was auch immer Sie verwenden) und machen es für die Zukunft Zeit zurück, die Sie brauchen?

Installieren

Unix Utils

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

Stellen Sie sicher, den vollständigen Pfad zu verwenden, wenn Fund aufrufen oder es wird wahrscheinlich anstelle von Windows find.exe verwenden. Dies ist nicht getestet in der Windows-Shell -. Sie können die Syntax ein wenig ändern müssen

Ich benutze Windows nicht - aber sicher ist es so etwas wie awk oder grep, dass Sie die „Zukunft“ timestamped Dateien zu finden, verwenden können, und dann „touch“ sie so haben sie die richtige Zeit - auch ein Perl-Skript.

1) benutzen ein Bausystem, die Modifikationen nicht die Zeitstempel verwenden, zu erfassen, wie scons

2) Verwenden Sie ccache Ihr Build-System zu beschleunigen, die Zeitstempel nicht verwendet (und wieder aufzubauen alle).

In jedem Fall wird es md5sum der Verwendung zu überprüfen, ob eine Datei geändert wurde, nicht Zeitstempel.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top