IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Travailler sous Subversion (SVN) avec Symfony


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 32
    Points : 39
    Points
    39
    Par défaut Travailler sous Subversion (SVN) avec Symfony
    Permettre un travail collaboratif sur un grand framework si puissant tel que le framework Symfony est essentiel dans un projet complexe. Dans cet article, nous allons donc voir comment travailler avec le système de versionnage Subversion (svn).

    Les avantages sont importants:


    • Travailler avec confiance en manières collaborative
    • Pouvoir revenir à une version précédente
    • permettre à plusieurs personnes de travailler efficacement sur le projet
    • Un accès à toutes les versions successives de l’application
    C’est parti!




    Créer un dossier de stockage partagé (repository)

    Un « Repository » ou dossier de stockage partagée , c’est le dossier où va être stocké l’ensemble des modifications et ajouts apportés par les acteurs du projets.

    Nous allons donc créer ce répertoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     mkdir /home/projects/sfProjectSymfolive
    svnadmin create /home/projects/sfProjectSymfolive
    Création de la structure de notre projet

    Un projet SVN se doit de comporter 3 dossiers principaux:


    • tags
    • branches
    • trunk
    Le tronc (trunk) étant la version actuelle, et les branches/tags des versions de développement ou des versions passées qui continuent néanmoins à être maintenues.

    Créons donc cette structure dans un dossier temporaire, pour l’intégrer au Repository:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mkdir /tmp/project /tmp/project/trunk /tmp/project/tags /tmp/project/branchessvn import /tmp/project/ file:///home/projects/sfProjectSymfolive -m "Import de la structure"
    On obtient donc la structure arborescante suivante:


    • root
    • branches
    • tags
    • trunk
    La copie de votre projet

    Une « copie de travail« , c’est une copie intégrale de votre projet que vous allez pouvoir modifier, enrichir, recréer, tout en étant certain que chacune des modification sera bien enregistrée dans le Repository. Il doit donc exister autant de copies de travail que de personnes qui interviennent sur votre projet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     cd /home/domains/sfProjectSymfolive svn co file:///home/projects/sfProjectSymfolive ./
    On a donc un répertoire qui contient nos trois dossiers: branches, tags et trunk. Nous allons rajouter un nouveau répertoire: vendor.

    Ajoutons-le donc avec:

    Il nous reste donc plus qu’a connecter ce répertoire à une copie distante de Symfony. Cette manipulation permettra de récupérer automatiquement les nouvelles mises à jour du package

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    svn propedit svn:externals ./vendor
    Dans la fenêtre qui s’ouvre on rentre simplement le nom du package, puis l’adresse SVN correspondant à la version que l’on souhaite récupérer.Dans notre exemple, c’est la version 1.0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    symfony http://svn.symfony-project.com/branches/1.0/
    Nous allons donc envoyer nos changements aux repository :

    Une fois les changements effectués, faite un simple update de votre copie de travail et le tour est joué

    Et la lumière SVN fut Le système récupère tout seul l’ensemble de l’arbre de Symfony. L’avantage, c’est qu’à chaque correction de bug sur la branche que vous avez choisie, votre version locale sera immédiatement modifiée, à chaque fois que vous ferez un update.

    Création du projet Symfony

    Dans Symfony, toutes les lignes de commandes se font via l’intermédiaire du fichier symfony.bat. Dans notre arborescence, l’executable symfony se trouve dans le répetoire vendor/data/bin/. Pour créer un projet, on va donc simplement se rendre dans le répertoire cible (trunk/ dans notre cas), puis ajouter un nouveau projet à partir de l’executable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     cd /home/domaines/sfProjectSymfonylive/trunk // toujours notre copie de travail php5 /home/domaines/sfProjectSymfolive/vendor/symfony/data/bin/symfony init-project sfProject
    Quelques réglages

    Une simple commande permet d’ajouter tous les nouveaux fichiers en une seule passe:

    Ensuite on intègre les changements au repository

    Et voila! Le tour es joué

    Je finirai par vous montrer que tous ces lignes de commandes peuvent se fair graphiquement via le logiciel Toirtoise SVN:
    YouTube- Installing and using TortoiseSVN!

    Billet original

  2. #2
    Membre régulier Avatar de Sylvain__A_
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2008
    Messages : 100
    Points : 94
    Points
    94
    Par défaut
    Cool ! Merci à vous

    Je connaissais pas propedit

    Je n'ai pas bien compris ce que c'est que ce dossier tmp ? Pourquoi temporaire ? Pour moi au contraire, SVN c'est construit pour durer ...

    Pour élargir la discussion, je me demande quelle solution choisir pour synchroniser trunk avec le webroot d'Apache. J'ai 2 versions, prod et preprod. Uploader les fichiers vers la prod manuellemnt, je trouve ça rassurant, ça me va bien. Mais ça pourrait être pratique, si lorsque tu comittes vers la preprod, les fichiers se mettent à jour dans le webroot du projet. J'ai un peu étudié phing :

    phing

    C'est vraiment génial, ça me fait penser à Ant ou Maven, mais je me demandais si personne n'avais une idée plus ... simple, instantanée, un genre de lien symbolique.

  3. #3
    Nouveau membre du Club
    Profil pro
    dsi
    Inscrit en
    Mai 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : dsi

    Informations forums :
    Inscription : Mai 2004
    Messages : 6
    Points : 25
    Points
    25
    Par défaut
    @Sylvain : bienvenu dans le monde l'intégration continue

    En gros si tu commites dans pré-prod (en fait non, mais je développe juste après), pour de suite copier dans prod, tu peux m'expliquer l'utilité de pré-prod ?

    En gros :
    - commit dans ton espace de versionnage
    - update de pré-prod
    - lancement des tests unitaires dans cet environnement
    - si c'est bon, intégration (note bien ce mot) dans prod

    Sinon, tout le reste c'est un peu que des procédures qui alourdissent la chose, sans t'amener aucun confort.

    Pour l'intégration, un rsync peut suffire.

    Mais des choses comme hudson par exemple, sont là pour ça.
    Avec update/tests/intégration pris en charge par un process.
    Et surtout toute la métrique qu'on peut avoir besoin derrière.

    En gros, pour moi, c'est un peu tout ou rien.
    Soit tu fais l'effort d'une chaine d'intégration complète, soit tu te donne l'impression/fais croire que tu "maitrises".

    [apparté : SVN c'est sympa, mais dès que le projet vit pas mal, avec plusieurs intervenants, ca devient vite un truc qui fait juste de la sauvegarde, autant regarder du coté de GIT ou Mercurial]

  4. #4
    Membre régulier Avatar de Sylvain__A_
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2008
    Messages : 100
    Points : 94
    Points
    94
    Par défaut
    tu peux m'expliquer l'utilité de pré-prod ?
    Oui, c sur que vu comme ça Pour moi la prod correspond à un build, c'a'd une livraison, un état stable du code, le résultat d'une phase de tests / retake ...
    Par contre, la preprod, c un environnement d'expérimentation. C'est un clone de la prod, coté configuration, mais sur lequel on upload du code très régulièrement, à des fins de validation par exemple...

    J'ai regardé Hudson, c vrai que ça à l'air d'être intéressant, mais il faut un serveur EE (sauf erreur), et on s'éloigne de Symfony.

    La méthode que tu proposes est intéressante, mais PHING permettrait de faire un export journalier du SVN, quand un simple update, oblige à synchroniser directement celui-ci.

    Pourquoi parles tu d'intégration ? ça a l'air important pour toi, pourquoi ?

    A propos de GIT, c vrai que sur le papier ça a l'air Tip Top, mais j'avoue qu'à l'installation, j'ai été un peu dérouté ...

  5. #5
    Membre du Club
    Inscrit en
    Mars 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2004
    Messages : 21
    Points : 47
    Points
    47
    Par défaut
    Pas vraiment en rapport avec le sujet, mais plutôt avec symfolive...

    L'idée du site est très bonne et il y a beaucoup de bonne volonté derrière, de plus les tutos sont bien faits.
    Une seule chose que je déplore et qui est un gros inconfort pour moi, et sans doute pour d'autres aussi: ce sont les fautes, y en a quand même pas mal, et même en page d'accueil, ca pique aux yeux .
    Please un petit effort et ce site deviendra incontournable !

  6. #6
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 18
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    Pas mal comme tuto mais il manque la partie svn:ignore. C'est important car elle permet que certains fichiers soient modifiés sans être inclus dans un commit. C'est particulièrement utile pour les fichiers qui vont être générés par Symfony.

    Basiquement il faut ajouter cette propriété aux répertoires suivants :
    - cache
    - log
    - data
    - web/uploads (le cas échéant)

    Et il n'est pas mauvais de compléter cela par un nouveau svn:ignore dans les répertoires /lib/model/doctrine, /lib/filter/doctrine et /lib/form/doctrine :
    - svn:ignore Base*.class.php

    Cette dernière commande permet de ne pas inclure dans le référentiel les fichiers de Base du modèle générés par le framework. Donc lorsqu'un commit est effectué seul le fichier shéma.yml est remonté, ce qui permet d'utiliser doctrine:migrate pour migrer sa base de données sans avoir à la régénérer et donc sans perdre les données.

    Un autre tuto bien fait sur le même sujet :
    http://www.lelio.fr/blog/2010/01/cre...rojet-symfony/

    [edit] J'explique pour la commande doctrine:migrate :
    En fait il faut utiliser doctrine:generate-migrations-diff, cette commande va calculer les différences entre le fichier schema.yml et les classes Base* du modèle afin de produire un script qui va migrer la database et les classe avec la commande doctrine:migrate sans perdre les données de la database.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 212
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par fanto30
    [apparté : SVN c'est sympa, mais dès que le projet vit pas mal, avec plusieurs intervenants, ca devient vite un truc qui fait juste de la sauvegarde, autant regarder du coté de GIT ou Mercurial]

    Tu utilises toi fanto30 GIT sous symfony ?

Discussions similaires

  1. tutoriel subversion compatible avec tortoise svn
    Par thor76160 dans le forum Ubuntu
    Réponses: 0
    Dernier message: 24/09/2011, 12h58
  2. Réponses: 2
    Dernier message: 24/03/2011, 19h10
  3. Travailler sous Subversion (SVN) avec Symfony
    Par forum dans le forum Langage
    Réponses: 0
    Dernier message: 29/05/2010, 19h40
  4. excécuter un projet travaillé sous netbeans 6.7.1 avec netbeans 6.8
    Par élève_ingénieur dans le forum NetBeans
    Réponses: 0
    Dernier message: 25/01/2010, 16h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo