comm-press: Your Drupal agency in Hamburg, Germany: Consulting, training, programming, service, webdesign and hosting

Alles was man nicht wirklich braucht weglassen . Unnötige Dinge von Drupal 7 per .gitignore ausschließen

von Karsten Frohwein
am

Drupal 7 so wie es ist hat einiges dabei, was man einfach nicht braucht. Ihr müsst jetzt stark sein, aber damit meine ich dich Book Modul! Es macht dem System aber nichts aus, wenn man es einfach löscht. Nur ist das nicht eigentlich ein Core Hack? Irgendwie schon, aber man verliert nicht die Kompatibilität zu Updates und schleppt weniger Ballast mit.

Es gibt einige Aspekte seinen Drupal Core klein zu halten. Viele .txt Dateien enthalten durchaus Sicherheitsrelevante Informationen, die Modul Liste ist kleiner, Drupal hat zumindest beim Cachen weniger zu parsen und eigentlich braucht man die install.php oder die update.php nicht, wenn man Drush einsetzt. Sehr lästig sind auch Beispiel Module oder gerade das Beispiel Feature vom Feature Modul, das immer eine "Test" Gruppe mitbringt und nervt.

Aus diesen Gründen habe ich mir überlegt, wie ich all diese Dinge weglassen kann ohne in Probleme zu geraten. Eigentlich hatte ich über Drupal 8 nachgedacht, da hier viel mehr Dinge als Plugins abgespeichert werden und ich die meisten Blöcke und Views einfach nicht brauchen werde.

Raus gekommen sind folgende Dinge:

Anmerkung: Beim http://www.freistil.it/ Hosting liegt das eigentliche Drupal unter "docroot/". Und ich gehe davon aus, das ihr das "minimal" Installationsprofil benutzt oder ein eigenes.

Module

docroot/modules/aggregator/ docroot/modules/blog/ docroot/modules/book/ docroot/modules/color/ docroot/modules/contact/ docroot/modules/contextual/ docroot/modules/dashboard/ docroot/modules/forum/ docroot/modules/openid/ docroot/modules/overlay/ docroot/modules/php/ docroot/modules/poll/ docroot/modules/rdf/ docroot/modules/simpletest/ docroot/modules/search/ docroot/modules/shortcut/ docroot/modules/statistics/ docroot/modules/syslog/ docroot/modules/toolbar/ docroot/modules/tracker/ docroot/modules/trigger/ All diese "Core" Module braucht man so gut wie nie und sie tun keinem weh. Dies zeigt übrigens auch, das man all diese Module auch wieder im Contribution Bereich nutzen könnte und nicht die Core Entwicklung belasten.

Themes

themes/garland Hier könnte man auch mehr weglassen und erst mal nur "Stark" benutzen. Hängt vom Drupal Installationsprofil ab.

Der "Scripts" Ordner

docroot/scripts Sind zwar nette Sripts, aber man sollte sie aus dem webroot lassen und wir benutzen das nie.

Textdateien

*README.txt *CHANGELOG.txt *COPYRIGHT.txt *INSTALL.*txt *LICENSE.*txt *MAINTAINERS.txt *STATUS.*txt *UPGRADE.txt web.config Alle .txt Dateien wegzulassen birgt doch einige Risiken, falls darin doch einmal Daten stehen, die man braucht, wie die robots.txt oder die Transliteraion Dateien. Aber alle anderen braucht man nicht und sie bieten einen leichten Einblick in die gerade verwendete Drupal Version.

Diverse Core Funktionalitäten

install.php xmlrpc.php authorize.php cron.php sites/example.sites.php update.php Die install.php braucht man eigentlich nie wieder und es geht auch per Drush. xmlrpc.php braucht man nur, wenn man es wirklich verwendet. Der Rest macht irgendwie Angst, wenn er nicht dabei ist, aber man braucht das alles wirklich nicht, wenn man Drush benutzt.

Test Features

date_migrate_example radioactivitydefaults migrate_example migrate_example_baseball migrate_extras_media migrate_extras_pathauto amazon_examples features_extra/test Die Spitze des Eisbergs. Gut gemeint, aber die Beispiel Module sollten alle versteckt sein und so sind sie einfach nicht dabei.

Tests

tests Dies schließt per .gitignore einfach alle Tests aus. Oben habe ich schon das simpletest Modul ausgeschlossen. Ich halte das einfach für Sinnvoll. Die Tests dauern ewig, haben auf einem Produktionssystem nichts verloren und können über Continious Integration auch anders wieder eingebunden werden.

Wenn man das alles getan hat, ist der Core recht klein. Dies alles hat kaum eine Relevanz für die Leistung des Systems, aber es ist einfach etwas aufgeräumter. Ich denke man kann noch mehr weglassen, gerade aus dem "misc" Ordner und ich habe noch keine Views und Panels-Plugins weggelassen. Aber ich finde es ist ein erster Schritt in die richtige Richtung.

git clean

git clean ist ein nettes Helferlein um nach einem Core Update die unerwünschten Dateien wieder zu löschen. Einfach "git clean -nxd" laufen lassen und schauen, was angezeigt wird. Danach dann mit dem Parameter "-f" damit auch wirklich die Daten gelöscht werden. Achtung dabei, das ihr nicht euren "/files" Ordner oder die "settings.php" löscht. Diese können auch einfach per "chmod" auf "kann nicht gelöscht werden" gesetzt werden und der Befehl wird es nur melden und nichts tun. Wenn die Dateien schon im git eingecheckt waren, müssen sie mit "git rm" entfernt werden.