Ich bin zur Zeit mit bluefish unterwegs. Bluefish legt eine Sicherungskopie von einer Datei an. Ändere ich die anschliessend erneut, wird diese Sicherungskopie überschrieben. Das ist mir jetzt zum Verhängnis geworden.
Was ich suche ist ein Editor der nach jeder Dateiänderung eine neue Sicherungskopie anlegt und die nach Möglichkeit mit Datum und Uhrzeit im Dateinamen abspeichert. Bluefish kann das nicht. Welcher Editor kann das?
Editor gesucht der nach jeder Dateiänderung SiKopie schreibt
-
- Beiträge: 332
- Registriert: 07.06.2007 20:01:12
Re: Editor gesucht der nach jeder Dateiänderung SiKopie schr
Du koenntest (und solltest) das Ganze unabhaengig vom Editor halten, und einfach die Daten nach jedem Schreiben sichern. Dafuer bietet sich Git in Kombination mit inotifywait (inotify-tools) an:Die letzte Zeile blockt nun am inotifywait, bis die Datei myfile neu geschrieben wird. Direkt danach wird sie als "Repository-Kandidat" markiert und in's Repository eingepflegt.
myfile sollte *keine* Sicherungskopie sein, die evtl. haeufiger als das Original abgespeichert wird, sondern das Original selbst.
Dazu noch ein paar Git-Basics: Wenn du irgendwas vermurkst hast, schaust du mit git log (alle Git-Befehle im Projektverzeichnis!) nach, welcher Zeitpunkt wohl noch unkaputt ist. Fuer diesen kopierst du die darueber liegende commit-ID (commit 6c597dc1a66434091d7aef13c0294998c506501d) und faehrst git checkout 6c597dc1a66434091d7aef13c0294998c506501d. Anschliessend ist das Verzeichnis fuer alle getrackten Dateien wieder im alten Zustand. Dann kann man irgendwas mit den alten Daten machen, diffen [1], oder sonstwas. Danach setzt man das Arbeitsverwzeichnis mit git checkout HEAD wieder in den Hauptzustand zurueck und arbeitet weiter. gitk ist auch eine nette, uebersichtliche GUI zum Betrachten von Git-Repositories.
Als Alternative kann man natuerlich Git weglassen und irgendwo Datei-basiert hinsichern:Dann hat man in ./versions haufenweise Dateien namens 1354541060-myfile, 1354541101-myfile, und so weiter. Der Timestamp im Sekundenformat ist besser fuer die Verwaltung, aber eher antiintuitiv. Abhilfe:Die Regex ueberprueft (simpel) auf einen folgenden Timestamp; in diesem Fall wird das erste Feld an date uebergeben, welches etwas wie 2012-12-03.14:24:20 herausformatiert [2]. Dann hat man eine Liste, wo vorne der Dateiname steht und hinten der lesbare Timestamp dazu.
Gruss Cae
[1] git difftool eignet sich gut; es benoetigt keinen checkout
[2] ja, der GNU-awk hat auch strftime(), der ist aber unportabel.
Code: Alles auswählen
$ cd projectdir # darin wird gearbeitet
$ git init # Repository initialisieren
$ git add myfile # die zu bearbeitende Datei Git gegenueber bekannt machen
$ git commit -m'init' # ... und ihren aktuellen Zustand im Repository speichern
$ while :; do inotifywait -e modify myfile; git add myfile; git commit -m"autocommit"; done
#- die Schleife blockiert die Shell nun. Datei editieren.
myfile sollte *keine* Sicherungskopie sein, die evtl. haeufiger als das Original abgespeichert wird, sondern das Original selbst.
Dazu noch ein paar Git-Basics: Wenn du irgendwas vermurkst hast, schaust du mit git log (alle Git-Befehle im Projektverzeichnis!) nach, welcher Zeitpunkt wohl noch unkaputt ist. Fuer diesen kopierst du die darueber liegende commit-ID (commit 6c597dc1a66434091d7aef13c0294998c506501d) und faehrst git checkout 6c597dc1a66434091d7aef13c0294998c506501d. Anschliessend ist das Verzeichnis fuer alle getrackten Dateien wieder im alten Zustand. Dann kann man irgendwas mit den alten Daten machen, diffen [1], oder sonstwas. Danach setzt man das Arbeitsverwzeichnis mit git checkout HEAD wieder in den Hauptzustand zurueck und arbeitet weiter. gitk ist auch eine nette, uebersichtliche GUI zum Betrachten von Git-Repositories.
Als Alternative kann man natuerlich Git weglassen und irgendwo Datei-basiert hinsichern:
Code: Alles auswählen
$ cd projectdir
$ mkdir versions || :
$ while :; do inotifywait -e modify myfile; cp -ab myfile "versions/$(date +%s)-myfile"; done
Code: Alles auswählen
$ ls versions/* | mawk -F- '$1 ~ /^13/ { printf $0 "\t"; system("date -d @" $1 " +%F.%T"); }'
Gruss Cae
[1] git difftool eignet sich gut; es benoetigt keinen checkout
[2] ja, der GNU-awk hat auch strftime(), der ist aber unportabel.
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Editor gesucht der nach jeder Dateiänderung SiKopie schr
Vim kennt mehere Arten von Versionskontrolle. Ok man muss den Vim mögen und das Installieren der Plugins verstehen. Ich habe es mal getestet mit den Plugins
Basis writebackup
http://www.vim.org/scripts/script.php?script_id=1828
Versionskontrolle writebackupVersionControl
http://www.vim.org/scripts/script.php?script_id=1829
Automatik writebackupAutomator
http://www.vim.org/scripts/script.php?script_id=3940
Leider habe ich es noch nicht hinbekommen, dass bei jedem Speichern der Datei direkt eine neue Version gespeichert wird. Hiermit kann man jedoch per ":W" neue Versionen speichern bzw. täglich werden neue Versionen erzeugt. Gibt aber auch bestimmt dafür ein besseres Plugin. Persönlich nutze ich die Funktionen nicht. Ich habe tägliche inkrementelle Backups für alle Dateien und halte eine Version pro Tag für ausreichend. GIT ist aber auch eine gute Alternative. Dann kann man auch seinen Editor behalten. Das mit dem "inotifywait" und der endlosen while-Schleife ist so eine Sache. Persönlich wäre mir das wohl zu unsicher.
Basis writebackup
http://www.vim.org/scripts/script.php?script_id=1828
Versionskontrolle writebackupVersionControl
http://www.vim.org/scripts/script.php?script_id=1829
Automatik writebackupAutomator
http://www.vim.org/scripts/script.php?script_id=3940
Leider habe ich es noch nicht hinbekommen, dass bei jedem Speichern der Datei direkt eine neue Version gespeichert wird. Hiermit kann man jedoch per ":W" neue Versionen speichern bzw. täglich werden neue Versionen erzeugt. Gibt aber auch bestimmt dafür ein besseres Plugin. Persönlich nutze ich die Funktionen nicht. Ich habe tägliche inkrementelle Backups für alle Dateien und halte eine Version pro Tag für ausreichend. GIT ist aber auch eine gute Alternative. Dann kann man auch seinen Editor behalten. Das mit dem "inotifywait" und der endlosen while-Schleife ist so eine Sache. Persönlich wäre mir das wohl zu unsicher.