Debian


VIM mit Syntastic for PHP  and Drupal development

Abbildung 1, Vim mit Editor Tab und location list.
Bei der Statischen Code Analyse1 (englisch linting), welche den den White-Box-Test-Verfahren zugeordnet ist wird der Quellcode einer Software auf seine Beschaffenheit überprüft.
Hierzu gehört z.B. neben dem eigentlichen Linting, in PHP mit z.B. php -l oder dem Tool phplint die Überprüfung von Coding-Standards2 oder das Erkennen von potenziellen Problemem bzw. suboptimalen Code wie z.B. ungenutzen Variablen, Properties oder Funktionen, zu hoher Komplexität (z.B. in Zusammenhang mit Wartbarkeit) und die Erkennung möglicher Fehler.

In der Programmiersprache PHP werden hierfür die Werkzeuge PHP_CodeSniffer3 (squizlabs/PHP_CodeSniffer4) und PHP Mess Detector5 genutzt, welche sich bequem in IDE's wie PHPStorm integrieren lassen6. Aber wie schaut es mit einem scheinbar betagtem und angestaubtem UNIX-Editor wie dem VIM aus?

Natürlich geht das auch im VIM! Wie zeigt dieser Post.

Ja, Drush auch kann Autocompletition, zu deutsch "Autovervollständigung"
und das anscheinenend nicht erst seit gestern, obwohl erst gestern entdeckt...

Tab-Vervollständigung

Ganz genau genommen, spricht man in diesem Fall der Autovervollständigung von einer Befehlszeilenergänzung bzw. Tab-Vervollständigung.
Es besteht auch im Drush-Kontext die Möglichkeit Drush-Befehle, globale Drush-Optionen und den spezifischen Optionen zu einem Drush-Befehlen
durch "tabben" (dem ein- oder zweimaligen Drücken der Tabulator Taste) in der Shell zu vervollständigen.

Beispiele

Tab-Vervollständigung von globalen Drush-Optionen:

florian@box:/var/www/example.com/drupal$ drush @git --<tab><tab>
--alias-path           --backend  
--backup-location      --cache-class-<bin>
--cache-default-class  --choice
--command-specific     --complete-debug
--config               --confirm-rollback
[...]

Tab-Vervollständigung von Drush-Befehlen, die mit sql- beginnen:

florian@box:/var/www/example.com/drupal$ drush @git sql-<tab><tab>
sql-cli   sql-conf   sql-connect    sql-create sql-drop
sql-dump  sql-query  sql-sanitize   sql-sync

Vervollständigung der Optionen, die mit dem Befehl sql-dump nutzbar sind:

florian@box:/var/www/example.com/drupal$ drush @git sql-dump --<tab><tab>
--create-db    --data-only   --gzip    --result-file   --structure-tables-key  
--tables-list   --database   --db-url  --ordered-dump  --skip-tables-key        
--tables-key

Damit der Webserver auch die Repositories in Gitweb anzeigen kann,
habe ich den Benutzer gitosis der Gruppe www-data hinzugefügt.

Als root:

usermod -g www-data gitosis

Auf birgit, die Datei /etc/apache2/sites-available/birgit.example.com mit dem folgendem Inhalt anlegen:

<VirtualHost *>
  ServerName birgit.example.com
  ServerAdmin webmaster@example.com
  DocumentRoot /srv/gitosis/repositories
  SetEnv GITWEB_CONFIG /etc/gitweb.conf
  Alias /gitweb.css /usr/share/gitweb/gitweb.css

Die Konfigurationsdatei für Gitweb,
hier angepasst $projectroot welche auf das Verzeichnis /srv/gitosis/repositories, in dem gitosis seine Repos ablegt zeigt.

# path to git projects (<project>.git)
# $projectroot = "/var/cache/git";
$projectroot = "/srv/gitosis/repositories";

# directory to use for temp files
$git_temp = "/tmp";

Einrichtung von gitweb der Weboberfläche für Git.

Jetzt kann als florian@demine ein neues Repository, hier "hongomat"
angelegt werden:

mkdir hongomat
cd hongomat
git init
vi foo
vi bar
git add foo bar
git commit -m 'Initial commit'

Mit git init wird das Repository initialisiert,
es ist ein initialer Commit nötig.

git remote add origin gitosis@birgit:hongomat.git

Jetzt können wir mit unserem frischgebackenem Admin-User florian@demine neue Repositories anlegen.

Als florian@demine auf der lokalen Workstation:

gitosis-admin.git auschecken

git clone gitosis@birgit:gitosis-admin.git

Zuerst muss wieder für den jew. Benutzer ein SSH-Key angelegt werden, falls noch kein Key da ist, damit sich der Benutzer über diesen Key am gitiosis Konto anmelden kann.

Als florian auf demine:

ssh-keygen -t rsa

Defaults übernehmen

Falls Windows Rechner als Clients verwendet werden sollen,