Intégrer Contao et SVN

Nombreux sont ceux qui me demandent comment intégrer un développement de modules Contao avec une solution de gestion professionnelle de code source. Effectivement, au premier coup d’œil cela peut paraître difficile, puisque Contao entrepose les modules dans /contao/system/modules, de sorte que si vous voulez utiliser Subversion, vous devriez avoir une arborescence possédant /trunk/tags/branches. Pourtant, la solution est toute simple : créer des liens symboliques.

Entreposez votre « repository » SVN à la racine de votre répertoire d’hébergement, soit au même niveau de Contao.

Vous aurez donc quelque chose comme ça :

/contao-version-x/system/modules/…
/monRepositoryModule/trunk/…

Réalisez un lien symbolique avec la commande Shell.

Pour Mac :


cd /Applications/MAMP/htdocs/contao-version /system/modules

Pour créer le lien symbolique, vous allez normalement obtenir :

ln -s /Applications/MAMP/htdocs/monModule/trunk monModule

Cette opération peut être répétée sur toutes les installations de Contao puisqu’on peut avoir le même code source en même temps. Si on veut utiliser une ancienne version, on peut faire le lien vers un tag :

ln -s /Applications/MAMP/htdocs/monModule/tags/version monModule

Pensez à remplacer le chemin par le vôtre puisqu’ici l’exemple est réalisé avec MAMP PRO, remplacez aussi «version» par le numéro de version et « monModule » par le nom de votre module.

Pour PC :

Ouvrir l’invite de commande en mode administrateur (clic de droite).

Faire un lien entre le répertoire désiré et le chemin de la version sur laquelle on travaille.

Exemple:


mklink /D "C:\Program Files (x86)\EasyPHP-version\www\contao-version\system\modules\monModule" 
"C:\Program Files (x86)\EasyPHP-5.3.6.0\www\monModule\trunk"

Pensez à remplacer le chemin par le vôtre puisqu’ici l’exemple est réalisé avec EasyPHP, remplacez aussi «version» par le numéro de version et « monModule » par le nom de votre module.

 

Pour Linux :

Si vous utilisez Linux, vous n’avez pas besoin d’aide, vous êtes déjà un roi de la ligne de commande.

 

Voilà: vous avez fait un lien et votre module est intégré à l’installation de Contao. L’avantage est de pouvoir garder la convention de nommage des dossiers de SVN, mais aussi de pouvoir installer votre module, depuis le même code source dans plusieurs installations de Contao : il suffit de répéter l’installation. Parfait pour tester rapidement son module dans plusieurs versions sans faire des doublons.

Un petit mot sur le nommage du dossier de votre module avec Contao

Je vous recommande vivement de faire un nom sans trop de chi-chi et sans caractères spéciaux; évitez aussi un nom qui pourrait déjà exister. N’oubliez pas que le nom du dossier est écrit en dur dans le fichier /monModule/config/autoload.php.

Pour chaque fichier une ligne a été ajoutée (en voici une du module newsletter) :


'Contao\Newsletter' => 
'system/modules/newsletter/classes/Newsletter.php',

Vous devez donc respecter le nom “newsletter” si vous souhaitez le mettre dans le dossier « modules » de Contao (en tant que dossier physique ou en tant que lien symbolique).

Un petit bug entre SVN et Contao 3.1.0

Attention si vous utilisez Contao 3.1.0 et que votre module en développement vous fait des misères, c’est probablement un bug provenant du système. Effectivement la version 3.1.0 ne supporte pas la lecture des dossiers Subversion (les fameux dossiers cachés .svn). Ne vous formalisez pas pour autant et passez à la dernière version, ce bug a été corrigé dès la version 3.1.1.