Gedanken über die Home-Verzeichnis Organisation

Am bei Plasisent veröffentlicht.

Dieses Wochenende habe ich zwei Artikel über die Struktur/Organisation des eigenen Homedirs gelesen. Von Joey, der dieses Verzeichnis schon seit vielen Jahren versioniert. Anders als er, würde ich nicht CVS oder SVN verwenden, sondern gleich git-annex. Aber er musste diese geile Software auch erst einmal entwickeln.

Mögliche Homedir/annex Struktur

Wenn ich mein Homedir in ein Git-Repository einchecke, möchte ich auch eine andere Verzeichnis-Struktur als aktuell verwenden. Eine Idee ist die folgende:

/home/micha/
    ./annex/
        ./code/
        ./docs/
        ./gtd/
        ./media/
            ./audios/
            ./videos/
            ./pictures/
    ./Documents → /home/micha/annex/docs/
    ./Downloads → /home/micha/tmp/downloads/
    ./Music → /home/micha/annex/media/audios/
    ./Pictures → /home/micha/annex/media/pictures/
    ./Videos → /home/micha/annex/media/videos/
    ./tmp/

Erklärung der einzelnen Ordner

Der annex-Ordner enthält alle Daten. Die Ordner ~/Documents, ~/Music, ~/Pictures und ~/Videos werden als Symlinks angelegt. Dadurch können auch dumme Standard-Programme ohne große Konfiguration verwendet werden. In ~/tmp kann ich Dateien anlegen, ohne sie gleich einsortieren zu müssen. (Sollte natürlich nicht oft geschehen.)

Software-Projekte an denen ich arbeite, landen in ~/annex/code/. Vielleicht als subtree, vielleicht als submodule. Dieses Verzeichnis ist mir noch nicht ganz klar. Auf jeden Fall ist dies ein Verzeichnis, in dem alle darunterliegenden Ordner ein eigenes Repository enthalten sollten.

In ~/annex/docs/ liegt privater Kram: Briefe, Steuererklärung, Gedanken, Blog-Post-Drafts, ledger-files, Anspiele, Gemeinde-Dateien. Hauptsächlich Kram, der bei der normalen Computer-Nutzung anfällt, der aber nicht unbedingt einem Projekt zugeordnet werden kann. (Vielleicht ist das auch ein »stuff«-Ordner, der sortiert werden sollte.)

Um an ein paar Sachen schneller ran zu kommen, würde ich einen ~/annex/gtd/ Ordner anlegen. Darin beispielsweise mein todo.txt-file (hoffentlich nur mit Next Actions gefüllt), ein eigenes projects-file, ein read-and-review-Ordner und andere Nettigkeiten, die man für Getting Things Done brauchen könnte.

Die Struktur von ~/annex/media finde ich selbsterklärend. Warum audio und nicht Musik? Weil ich dort auch Podcasts und Predigten speichere. Ich bin mir noch nicht ganz sicher, ob ich Videos und Bilder trennen möchte. Ab und an mache ich doch den ein oder anderen Handy-Film, der als Erinnerung bei den Bildern gespeichert werden soll. Vielleicht wird daraus ein visuals-Ordner. Stattdessen könnten Talks und Mediathek-Videos im GTD Read/Review Verzeichnis aufbewahrt werden. Dieser Gedanke gefällt mir eigentlich gut.

Fragen und Aufgaben

Generell freue ich mich über Feedback. Hier wären ein paar Fragen, die ich mir zu diesem Thema gerade stelle. Vielleicht hast du ja ein ähnliches Setup oder zumindest Ideen dazu. Dann freue ich mich über eine Mail.

Fünf Jahre alte „temporäre“ Dateien verhindern

Kann ich ~/tmp regelmäßig automatisiert leeren? Zum Beispiel per cronjob alle Dateien, die länger als vier Wochen nicht angefasst wurden. Denkbar wäre auch eine neue GTD-Inbox; mv notUsed ~/tmp/toDelete/. Wenn es dort länger als eine Woche nicht angefasst wird löschen. Oder eine andere Regel?

git annex und subtrees/submodules

Wie geht git-annex mit git submodules oder git subtrees um?

Was denn nun? Subtree oder Submodule?

Welche Technik wäre für ~/annex/code/ am besten geeignet? Aktuell denke ich, dass Submodules die richtige Wahl wären. Wobei, nein. Eigentlich bin ich mir unsicher. Subtrees könnten auch gut funktionieren. Mist. (Vergleich zwischen Subtrees und Submodules.)

Habe ich irgendetwas vergessen?