Dans mes projets PHP sous SVN, j’avais l’habitude de mettre les fichiers de conf en SVN ignore. Au moment du déploiement, il suffisait de renommer un fichier de conf modèle, de modifier quelques define, et hop, roule ma pool (de connexions). En gérant mes branches comme des projets différents dans mon IDE, je pouvais aussi avoir plusieurs modèles de configuration différents, et par exemple, adresser plusieurs bases de données.
En passant sous GIT j’ai voulu calquer le même principe. Mais seulement voilà, GIT est beaucoup plus performant et puissant pour le changement de branches. Je devrais être content, seulement profiter de cette puissance est adresser des configurations différentes selon la branche devient difficile. Soit la conf est dans .gitignore et je la partage pour toutes les branches, soit elle est dans le repository, et est identique sur toutes mes instances de production et sur mon environnement de développement.
Après quelques recherches, j’ai néanmoins trouvé une petite astuce qui permet de récupérer la branche courante. Dans le shell :
$ git branch | awk ‘/^\*/ { print $2 }’
vous donnera “master” par exemple.
En PHP, vous n’avez qu’à brancher sur un switch :
$branch=exec(“git branch | awk ‘/^\*/ { print $2 }’”);
switch($branch){
case ‘branche1’:
define(‘DATABASE’,’mabase_branche1’);
break;…
case ‘master’:
default:
define(‘DATABASE’,’mabase_master’);
}
Bien entendu, ce hack n’est utile que sur votre environnement de développement.