Contactez-nous

Kitpages
17 rue de la Frise
38000 Grenoble
tel : 04 58 00 33 81

Par Philippe Le Van (@plv) Dernière mise à jour : 12 April 2011

Mettre à jour Symfony Standard Edition

Warning

Cette page n'est ni vraiment à jour, ni vraiment pertinente. Je la garde en attendant de mettre une version mieux pensée.

Introduction

Si on utilise Symfony Standard Edition (2.0.0PR11 à l'heure de cet article), on télécharge d'un coup Symfony2, différents bundles et différentes librairies (doctrine2 notamment).

Ensuite, si on suit à la lettre les recommandations, notre code applicatif se retrouve mélangé avec Symforny Standard Edition (SF-SE).

Si ensuite on souhaite mettre à jour SF-SE, comment peut-on s'y prendre ?

Cet article propose une solution basée sur GIT. Elle n'est pas complètement enthousiasmante. Si vous avez des améliorations ou des idées meilleures à soumettre, je suis à votre écoute dans les commentaires.

Vue d'ensemble

Globalement, je suis les étapes suivantes :

  • mettre SF-SE dans mon GIT
  • Créer un 2e projet GIT par un fork de SF-SE pour mon projet
  • En cas d'upgrade de SF-SE, voir comment gérer le merge

Mettre SF-SE dans mon GIT

télécharger Symfony Standard Edition sur le site http://symfony.com/download

Dézippez le dans un répertoire, et ajoutez le à votre GIT.

Voilà ce que ça pourrait donner chez vous.

git init
git add .
git commit -m "add initial version"
git remote add origin git@mon_serveur_git:sf-se.git
git push origin master

Forker le projet sf-se

Hum... fork en GIT ? c'est une notion bien connue, c'est le gros bouton "fork" dans github. Seulement git fork, ça n'existe pas. En fait c'est une forme de clone.

Voyons comment on peut faire un fork chez nous en interne.

# cloner en changeant le nom du remote de l'origine
git clone -o sf-se-origin git@mon_serveur_git:sf-se.git my_project
 
# ajouter un remote origin vers le nouveau projet
git remote add origin git@mon_server_git:my_project.git
 
# configurer une branche master spécifique au sf2
git config branch.sf-se-master.remote sf-se-origin
git config branch.sf-se-master.merge refs/heads/master
 
# dit à git que lors d'un push sur sf-se-origin
# la branche sf-se-master doit aller vers la
# branche master de sf-se
git config remote.sf-se-origin.push refs/heads/sf-se-master:master
 
# indique quelles branches à rappatrier lors d'un fetch
git config remote.sf-se-origin.fetch +refs/heads/master:refs/remotes/sf-se-origin/master
 
# renvoie les données my_project sur mon_serveur_git
git push origin master
 
# configure les tracking branch normales
git config branch.master.remote origin
git config branch.master.merge refs/heads/master

Hum... c'est une loi de la nature : rien n'est jamais simple dans GIT...

Mise à jour de Symfony2 standard Edition

Maintenant supposons qu'on doive mettre à jour Symfony Standard Edition. Voilà les étapes à suivre.

 

  • Mettre à jour SF-SE dans le repository sf-se
  • commiter puis pusher cette dernière version dans sf-se
  • aller dans my-project
  • faire un merge sur my-project du projet sf-se

Voyons ce que ça donne concrètement :

# télécharger la dernière version
wget http://symfony.com/download?v=Symfony_Standard_Vendors_2.0.0PR11.tgz
# Décompresser
tar zxvf Symfony_Standard_Vendors_2.0.0PR11.tgz
 
# ATTENTION Crados
# déplacer de .git/ de l'ancienne version dans le
# nouveau répertoire symfony
mv sf-se/.git Symfony/
rm -rf sf-se/
mv Symfony sf-se
 
# tout pusher dans le repository
cd sf-se
git add .
git commit -a -m "mise en place version 2.0.0PR11"
git push
 
# merger le nouveau code
git fetch sf-se-origin
git merge sf-se-origin/master

Conclusion

Maintenant il ne reste plus qu'à résoudre les éventuels conflits dans votre code et à corriger les erreurs liées à la migration.

Je vous le concède, c'est assez compliqué, mais d'un autre coté ça paraît relativement propre à l'arrivée comme façon de faire.

Il y a peut-être moyen de scripter tout ça pour que les opérations paraissent plus simples.

Commentaires

Note : on ne peut plus ajouter de commentaire sur ce site