settings, additional, .env

settings gehört nicht ins git ...

tl;dr

Pro & Con

Wenn man die TYPO3 Entwickler in Lager unterteilen möchte, könnte man eine scharfe Grenze zwischen denjenigen ziehen die setting.php (LocalConfiguration.php) in git legen und diejenigen die das nicht tuen.

Die Gründe dafür sind in der Regel schnell aufgezählt:

  1. Wenn ich das Projekt auschecke, soll es sofort laufen. Dazu brauche ich die settings.php
  2. … weil das alle so machen … ?

Die Gründe dagegen sind:

  1. Wenn man nicht aufpasst, hat man credentials in der Datei
  2. Wenn man im Backend die Extensions Settings öffnet, wird die Datei umformatiert und man bekommt unnütze Dateien in den commit
  3. Wenn man im Live-System eine Anpassung in den Extension Settings macht, werden diese beim nächsten Deployment überschrieben. (Hier bekomme ich dann immer wieder gesagt, dass dieses Feature nicht verwendet werden darf)
  4. Eigentlich ist die Datei nicht lesbar und kann in einem code-review überhaupt nicht richtig bewertet werden

additional.php

Da die settings.php, wenn sie aus dem git kommt, meist Einstellungen hat die nicht wirklich auf dem Zielsystem brauchbar sind, wurde die additional.php eingeführt. Hier habe ich dann die verrücktesten Varianten gefunden. 

Die einen haben in diese Datei einen Context-abhängigen Loader eingebaut der dann für Live, Stage, Development und alle möglichen Zustände weitere Settings lädt. Oder beim Deployment wird das Zielsystem getestet und die entsprechenden Dateien (die dann auch mal mit allen Credentials im git geplfegt werden) werden hin und her kopiert.

Weil die addtional.php so wild herum gehoben wird, darf sie natürlich nicht im git stehen.

Und wenn das nicht reicht, werden Einstellungen als .env, .env.local, .env.production und .env.WasWeißIchNoch geladen.

Dabei ist es doch so einfach

  1. setting.php kommt nicht ins git
    Für alle die das unbedingt wollen, hintelegen wir eine settings.php.dist im git. Die kann man dann kopieren - aber um ehrlich zu sein, da steht bei mit nur Unsinn drin. Es kommen aber keine credentials rein!
  2. addtional.php kommt ins git.
    Hier steht alles drin, was ich unbedingt möchte, dass es überall wirkt. Im Zweifelsfall baue ich hier ein paar conditions ein um zwischen den verschiedenen System zu unterscheiden. Es kommen aber keine credentials rein!
  3. am Ende von additional kommt ein Loader der die Credential von .env lädt.

Dadurch gewinne ich alles

  1. Keine Credentials im git
  2. Keine unsinnigen Dateien im Commit
  3. Ich kann auf dem Live-System einstellungen über die Extension Settings vornehmen
  4. die Credentials bleiben auf dem Live-System

Kommentare

Keine Kommentare

Kommentar schreiben

* Diese Felder sind erforderlich