git, Permissions und Dotfiles
Wenn man zur Zeit nach einer Lösung sucht, um die eigenen Dotfiles mit git zu verwalten, dann hat man so ein bißchen das Gefühl, da wäre schon alles gesagt worden. Ich habe lange Zeit selbst eine fertige Lösung benutzt, nämlich Nate’s dfm. Das hatte den großen Vorteil, in Perl geschrieben zu sein, und irgendwie ist Perl ja überall dabei.
Leider hatte dfm
, genau wie viele andere Implementierungen, das Problem, keine
Permissions managen zu können (was irgendwie klar ist, nachdem git selbst nur
“ausführbar”, “nicht ausführbar” und “Symlink” kann). Wenn man routinemäßig de
reinzige User auf einer Kiste ist, dann ist das nicht ganz so ein großes Problem
(bis dann die PHP-Anwendung ihren Input nicht validiert und …), aber ich hab
leider den Fall, das abdecken zu müssen (und außerdem nervt es, wenn sich die
Hälfte der Tools permanent über unsichere Berechtigungen beschwert, und man dann
selbige per Hand einstellen muss).
Und so entstand mein erster, halbwegs sinnvoller Beitrag auf GitHub: dotfiles. Damit gibt es jetzt dann eine Million und eine Lösung :-)
Kurz zur Erklärung: Der Ansatz verwendet ein bare-Repository (die Idee kommt
von
Atlassian)
und eine explizite working copy ausserhalb des eigentlichen git-Trees. Zudem
wird das Skript
setgitpermissions.perl
verwendet, um über den Umweg von commit-Hooks (git ab 2.9 kann ja auch Hooks in
externen Verzeichnissen) die Berechtigungen nicht zu vergessen. Einzige
Voraussetzung ist ein installiertes Perl (sollte ja eh überall der Fall sein),
und zur Arbeits-Erleichterung ein Alias, der die git-Einstellungen unter dem
Befehl dot
verfügbar macht.
Man sollte übrigens tunlichst vermeiden, ein dot clean
einzugeben ;-)