2008-09-23 10 views
6

Mein Chef bat mich, einen Subversion Server für ihn einzurichten, damit er alle seine Dokumente über verschiedene Maschinen synchronisieren kann und immer noch auf sie zugreifen kann, wenn keine Internetverbindung besteht.Preserve Dateierstellungsdatum in Subversion

Ich habe dies für ihn, aber jetzt fordert er, dass die 'create date' Dateiattribut erhalten bleiben. Ich erklärte dies, da er alle Dateien heruntergeladen hat, die ihr Erstellungsdatum sind, aber er besteht darauf, dass ich eine Methode finde, diese zu erhalten, da sie den Desktop-Suchagenten betrifft, den er benutzt. Gibt es eine Möglichkeit, dieses Attribut über Subversion beizubehalten, oder muss ich ein Skript schreiben, um das Datum jeder Datei abzurufen und ihn nach jedem erstmaligen Auschecken "berühren" zu lassen?

Beachten Sie, dass die Menge der Dokumente, die dem SVN-Repository hinzugefügt wurden, mehrere Jahre zurückreicht, und er möchte, dass diese Daten über alle Checkouts hinweg erhalten bleiben. Also könnte das Datum der letzten Änderung, die Subversion hat, möglicherweise um Jahre von dem entfernt sein, was er will.

Antwort

3

Entschuldigung - missverstanden die Frage zum ersten Mal.

Eine Option könnte die Verwendung der Befehle svnadmin dump und load sein.

  • Dump das Repository mit Svnadmin Dump.
  • Schreiben Sie ein Skript, um die Ausgabe zu durchsuchen und das SVN-Erstellungsdatum auf das Erstellungsdatum der Datei in Ihrem Quellordner zu aktualisieren.
  • Laden Sie die aktualisierte Dump-Datei mit svnadmin load zurück.
  • Verwenden Sie die Legen Sie Dateidaten auf die "letzte Festschreibung" Einstellung, die ich zuvor vorgeschlagen.

Ich bin mir nicht sicher, ob dies möglich ist, aber von der Spitze meines Kopfes denke ich, es wäre. Ich scheine mich an ein Skript zu erinnern, das in etwa so vorging, als ich von SourceSafe zu Subversion wechselte - ich werde sehen, ob ich es finden kann.

EDIT: Ja, Sie könnten in der Lage sein, einige Code Krippe von hier (http://www.pumacode.org/projects/vss2svn)

+0

Das ist wirklich kreativ, danke für die Antwort. Ich werde das heute Abend versuchen, nachdem mein Chef für den Abend aufgebrochen ist. Es wird eine Weile dauern, um zu laufen, denn er hat 11 Gigs von Dokumenten –

+0

Aus Neugier: Hat es funktioniert? Und wie lange hat der 11 Gig gedauert? – jan

+0

lustig Ich habe einen Chef mit einer fast genauen Anforderung. Hast du Glück dabei? –

0

Das letzte Mal, als ich nachgesehen habe, gab es in Subversion keine Möglichkeit, den Zeitstempel der Originaldatei beizubehalten.

+0

Gibt es ein Update dazu? Hält SVN die Erstellungs-/Änderungsdaten bis jetzt? – AxD

4

TortoiseSVN Mit

  • rechte Maustaste und wählen Sie TortoiseSVN -> Einstellungen
  • Wählen Set Datei stammt aus dem "letzten Mal begehen"

denke ich, dass funktioniert für dich.

+2

Das Datum, das er möchte, ist nicht das Subversionsdatum, sondern die Daten der Dateien, bevor sie in das Subversion-Repository importiert wurden. Ich habe die Frage aktualisiert, um dies zu berücksichtigen. –

+1

Alternativ, wenn Sie Tortoise nicht verwenden, entfernen Sie die Zeile: 'use-commit-times = yes' in $ HOME/.subversion/config –

0

Sie könnten eine Subversion-Dateieigenschaft verwenden, um das Änderungsdatum zu speichern, aber Sie müssten ein eigenes Skript schreiben, um die Eigenschaft beim Einchecken zu aktualisieren und das Änderungsdatum beim Auschecken festzulegen.

1

Schauen Sie sich die Eigenschaft "svn: date":

svn propset svn:date --revprop -r HEAD "2007-04-22" 

, die einen Haken erfordert pre-revprop -change im Voraus eingerichtet werden.