Einfache Versionierung, sehr einfach

Ich bekam grad eine e-mail, dass ein ururaltes Script von mir, das auf ungeklärten, verschlungenen Wegen hier gelandet ist, unter CS5 anscheinend nicht mehr läuft.Es geht bei dem Script darum, bei jedem Sicherungsvorgang automatisch ein Backup der vorigen Version zu erstellen.

Ich bekam grad eine e-mail, dass ein ururaltes Script von mir, das auf ungeklärten, verschlungenen Wegen hier gelandet ist, unter CS5 anscheinend nicht mehr läuft.

Es geht bei dem Script darum, bei jedem Sicherungsvorgang automatisch ein Backup der vorigen Version zu erstellen.

Das Script "save_with_backup" gibt es jetzt auch als JavaScript und mit ein paar kleinen Verbesserungen.

Gebrauch

Als erstes müssen Sie ein klein wenig Programmierung vornehmen, indem Sie eine Zeile im Script ändern, d.h. an Ihre Bedürfnisse anpassen. Zeile 2 bis 4 im Script sind

  1. var desktop_path = Folder.desktop.toString();
  2. // var backup_path = "/someFolder/someSubfolder/backupLocation";
  3. var backup_path = desktop_path+"/backup"

So wie das Script jetzt ist, legt es auf dem Schreibtisch (egal ob Mac oder PC, dafür sorgt Zeile 2) den Ordner "Backup" an. Wenn Schreibtisch für Sie OK ist, aber es soll da in einem anderen Ordner landen, ändern Sie einfach Zeile 4, zum Beispiel in

  1. var backup_path = desktop_path+"/diversesZeuchs/InDesign-Backups"

Falls die Backups ganz woanders auf Ihrer Festplatte landen sollen, fügen Sie direkt vor Zeile 4 zwei / ein und löschen die // am Anfang von Zeile 3.

  1. var desktop_path = Folder.desktop.toString();
  2. var backup_path = "/someFolder/someSubfolder/backupLocation";
  3. //var backup_path = desktop_path+"/backup"

Ändern Sie dann den Pfad; achten Sie darauf, dass ganz am Ende der Pfadangabe kein / stehen darf.

Dann speichern Sie das Script in Ihren "Scripts Panel" Ordner, gehen unter "Bearbeiten > Tastaturbefehle" und weisen dem Script im Produktbereich "Skripten" als Tastaturkürzel Apfel/STRG S zu

Das Ergebnis

Das Script legt der besseren Übersicht halber im Backup-Ordner eine Unterordnerstruktur an.

Für jeden Tag einen neuen Ordner und der Datei wird die aktuelle Uhrzeit vorangestellt.

Das hat zwei Vorteile: zum einen wird damit sichergestellt, dass ein Backup nicht ein voriges Backup überschreibt (es sei denn Sie speichern zweimal in einer Sekunde), und Sie erhalten automatisch eine Chronologie der gespeicherten Dateien. Das ist fast so gut wie Versionsnummern ;)

Feedback wie immer erwünscht. Wäre es zum Beispiel für irgendjemanden nützlich, wenn das Script nicht per Shortcut aufgerufen wird, sondern grundsätzlich immer, wenn der Anwender Datei > Sichern aufruft? Das geht, schien mir aber etwas radikal.

Comments

Wie wäre es mit dem datum im Dateinamen

Hallo.

Es ist doch mit JS relativ simpel das aktuelle Datum abzufragen?
var saveDate = new date();
Wenn man jetzt eine String-Variable so zusammenbaut, dass sie Datum und vielleicht Stunde, Minute enthält und die dann an den Dateinamen anhängen.

Damit könnte man sich das Versionieren in Unterordnern sparen, oder?

Schöne Grüße,
der Stephan.

Datum im Dateinamen

Sicher, das könnte man alles machen. Aber die Dateinamen würden in Nullkommanix unübersichtlich lang und der Backupordner wäre in Nullkommanix unübersichtlich voll.
 
Ich sehe also den Sinn nicht.
Aber da der Quellcode ja offen ist, nehmen Sie die Ändeung doch einfach selbst vor :)

Einfache Versionierung, sehr einfach

Tolle Idee.

Ich hab es bisher unter InDesign noch nicht getestet kann dafür aber sagen, dass es unter Photoshop CS4 und Photoshop CS5 (je 64bit) bestens funktioniert.

Nur mal als Überlegung: Wäre es nicht besser die Zeile 15
if (doc.saved == true) {
auf "false" zu setzen, sodass er dann ein Backup der bisherigen Datei macht und die letzten Änderungen in die Ausgangsdatei speichert?
Wie gesagt nur eine Überlegung. Soll überhaupt keine Kritik oder ähnliches sein. Muss auch zu geben, dass ich überhaupt nicht im täglichen Workflow mit Indesign (aber dafür mit Photoshop) drinstecke. Vielleicht fehlt mir da die Praxis. Aber ich dachte Fragen kostet nichts. :-)

Tobias

Was heißt "doc.saved"?

Erstaunlich. Ich hatte gar nicht dran gedacht, dass das Script auch in anderen Adobe Programmen funktionieren könnte :)
 
Zu Zeile 15: In InDesign fragt doc.saved ab, ob das Dokument überhaupt jemals gespeichert wurde, also ob es überhaupt eine Datei irgendwo gibt, die man duplizieren kann.
In Photoshop fragt doc.saved, ob die letzten Änderungen an dem Bild bereits gespeichert wurden.
 
Für Photoshop müsste man daher am besten Zeile 27 und Zeile 15 löschen. Der try-catch Block sorgt dafür, dass man eine Fehlermeldung erhält, falls ein Bild ohne Datei gespeichert werden soll.
Wichtig: getestet habe ich das nicht. Also auf eigene Gefahr :)
 
Danke

RE: Was heißt "doc.saved"?

Naja an sich sind ja keine InDesign-spezififschen Befehle drin. Was auch der Grund war das ganze einfach mal mit Photoshop zu probieren.

Allerdings werde ich die "if doc.saved"-Abfrage drin lassen (im Photoshop-Skript), denn ein Backup von einer unveränderten Datei muss nicht sein.

Noch etwas: Wissen Sie ob es in Photoshop auch möglich ist, das Skript aufzurufen wenn man Datei > Sichern aufruft bzw. sagen wie man es in InDesign macht?

Tobias