29 lines
1.4 KiB
Markdown
29 lines
1.4 KiB
Markdown
# worm
|
|
|
|
Write once, read many-Speicher
|
|
|
|
## Ablauf ##
|
|
### Projektverzeichnisse vorbereiten ###
|
|
~~~
|
|
mkdir mein_repo
|
|
cd mein_repo
|
|
git init
|
|
mkdir Archiv # Das ist dein WORM-Speicher im Git-Repo
|
|
mkdir Neu # Hier legst du temporär neue Dateien ab
|
|
~~~
|
|
|
|
### pre-commit-hook einrichten ###
|
|
Der Hook verhindert, dass Dateien in das Archiv aufgenommen werden, wenn dort bereits eine Datei mit gleichem Namen gespeichert ist. Siehe Datei "pre-commit". Sie __muss__ im Verzeichnis Projektverzeichnis/.git/hooks mit dem Dateinamen "pre-commit" gespeichert werden.
|
|
Der Hook muss ausführbar gemacht werden:
|
|
~~~
|
|
chmod +x .git/hooks/pre-commit
|
|
~~~
|
|
|
|
### Die Scripte ###
|
|
> Beide Scripte verfügen nicht über einen _push_.
|
|
|
|
#### Das Cron-Script einrichten ####
|
|
Um automatisiert Dateien dem WORM-Speicher zuzuführen, werden sie im Verzeichnis "Neu" gespeichert (auch Unterverzeichnisse). Cron sorgt für die Übertragung der Dateien von "Neu" nach "Archiv", die noch nicht im WORM-Speicher vorhanden sind (commit-wrapper.sh). Übertragene Dateien werden aus dem Verzeichnis "Neu/" gelöscht, nicht übertragene Dateien verbleiben dort.
|
|
|
|
#### Interaktive Änderungen ####
|
|
Das Script commit-interactiv.sh macht das gleiche wie commit-wrapper.sh, allerdings fragt es bei jeder Datei, die schon im Archiv vorhanden ist, ob die Datei aus Neu/ mit einer Versionsnummer zusätzlich gespeichert werden soll. Diese Version des Scripts eignet sich nicht für einen cronjob. |