2010-01-31 2 views
60

Ich möchte sicher sein, dass, wenn ich etwas in Subversion von einer Maschine begehen, und ich an einer anderen auschecke, ich den gleichen Wert für Datum und Zeitstempel bekommen werde.Wie kann ich die ursprüngliche Datei [Commit] Timestamp auf Subversion behalten?

Derzeit habe ich festgestellt, dass die Datetime der Datei Änderung von dem Zeitpunkt ist, als ich die Synchronisierung anstelle des ursprünglichen Werts durchgeführt habe.

Für mich macht es keinen Sinn zu wissen, wann die Dateien synchronisiert wurden - ich will nur die letzte Commit-Zeit sehen.

Dieses Problem bezieht sich nicht auf die Zeitzone.

+0

Ich zweitens - wenn es nicht möglich ist, sollte es vielleicht eine Feature-Anfrage sein. –

+0

Warum ist das wertvoll? – thekbb

+6

Anwendungsfall: Sie haben ein Produkt (Quelle), das von Ihrem Team geändert wird, und jedes Mal, wenn das Produkt aktualisiert wird, müssen Sie Ihre Änderungen erneut synchronisieren. Wenn die Zeitstempel der Dateien geändert werden, wird der Dateivergleich nicht funktionieren, oder es wird viel viel langsamer sein. Ein Problem tritt auf, wenn Sie zwei verschiedene Checkouts mit lokalen Änderungen synchronisieren möchten, die niemals in den Upstream gehen. – sorin

Antwort

57

Sie können es in gesetzt:

[miscellany] 
use-commit-times = yes 

Obwohl Sie seltsame Nebenwirkungen haben, wenn wir über Quelldateien im Gespräch sind.

Zum Beispiel bauen Sie Ihre Software und tun svn update. Jetzt ist der Zeitstempel der aktualisierten Dateien älter als der Zeitstempel der Build-Ergebnisdatei und wird nicht neu erstellt, obwohl einige Quelldateien geändert wurden. Sei sehr vorsichtig mit dieser Einstellung.

+10

Damit wird die Änderungszeit für die ausgecheckte Kopie so festgelegt, dass sie mit der Zeit übereinstimmt, zu der Änderungen am Repository zuletzt vorgenommen wurden. Dies ist * nicht * dasselbe wie das Speichern des Änderungsdatums, das die Datei hatte, als sie ursprünglich in das Repository importiert wurde. – bendin

+3

Ich glaube, es ist das, was OP bedeutete - wie in der Frage angegeben - „Ich will nur das letzte Mal begehen sehen“ – silk

+0

Es scheint, dass die offensichtliche Lösung nicht implementiert ist: was ich will, ist die Änderungszeit übertragen (nicht begehen oder Check-out Zeit) und beim Zusammenführen während der Kasse die neuere Zeit verwendet wird. – Jochen

22

Wenn Sie TortoiseSVN verwenden, gibt es eine Option. TortoiseSVN -> Einstellungen -> Allgemein -> "Dateidaten auf die 'letzte Commit-Zeit' setzen".

+6

Dies ist nicht der ursprüngliche Zeitstempel. – oefe

+0

Diese Option klingt wie eine gute Lösung, aber wie kann ich das steuern, wenn ich Kommandozeilen-Svn-Client verwende (wie SlickSVN und nicht TortoiseSVN)? Eine plattformübergreifende Lösung wäre besser. – sorin

+1

Die OP heißt es: „Für mich macht es keinen Sinn, zu wissen, wann die Dateien synchronisiert wurden - ich möchte nur das sehen ** letzte Mal ** begehen.“ –

10

Subversion behält den ursprünglichen Zeitstempel der Datei nicht bei.

Wenn Sie unbedingt den Zeitstempel beibehalten müssen, müssen Sie es selbst tun. Beispielsweise könnten Sie den ursprünglichen Zeitstempel als Subversion-Eigenschaft speichern.

+0

Das stimmt nicht, Sie können dies mit einer Konfigurationseinstellung erzwingen, Sie müssen es nicht selbst tun. – silk

+8

againg, no- Verwendung-commit-Zeiten = yes ist die Zeit, die Datei begangen wurde, nicht der ursprüngliche Zeitstempel. – oefe

+0

Ahh, ok, ich habe dich missverstanden, tut mir leid. – silk

0

Es würde scheinen, dass 'stat -c% y $ FILE' als Teil eines pre-revprop-change-Hooks verwendet wird, der auf svn: date läuft. Das einzige Problem, das ich sehen könnte, ist das Datumsformat.