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

Subversion Discussion :

Dev local Win et serveur Linux pré-prod


Sujet :

Subversion

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut Dev local Win et serveur Linux pré-prod
    Bonsoir à tous,

    Voici ma problématique que beaucoup ont du déjà rencontré :

    Disons que je bosse sur www.svnestmagique.com, sur mon serveur Linux, j'ai le repository mais aussi un var/www/svnestmagique.com qui fait régulierement des svn update de mon repository. C'est en fait un vhost de pré-prod.

    Parallelement, les développeurs bossent sous windows et font des commit sur le serveur linux, qui sont ensuite visibles sur la pré-prod une fois le svn update lancé sur le serveur.

    Le souci, c'est que lorsque l'on travail en local, on peut être amané à écrire ce genre de chose dans un fichier :

    Path=D:\wamp\www\projet1\etc

    et bien sur quand on commit, et que l'on fait un svn update sur la prépod, on doit repasser sur les fichiers pour changer le Path avec un chemin unix.

    Ma question est donc, n'y aurait-il pas déjà quelque chose, une option de svn ou autre qui puisse gérer ce genre de problématique ?

    J'avais pensé à une solution perso mais pas très pratique qui consisterait, pour un fichier donné à écrire ce genre de chose :

    #[context:dev1]
    Path=D:\path\du\dev1\en\local
    #[context:preprod]
    #Path=/var/www/toto

    Donc le dev1 positionne sa variable Path, il indique le contexte sur la ligne le précedent, et donne également la valeur pour le context preprod mais il commente la directive.

    Ensuite, il faut mettre en place un script bash ou php-cli qui recherche les lignes commencant par #[context:, puis qui soit commente la ligne suivante si le contexte est différent de prepod, soit la decommente si la valeur située après le : est preprod.

    Qu'en pensez vous?

  2. #2
    Membre actif Avatar de djidane39
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 272
    Points : 250
    Points
    250
    Par défaut
    le problème c'est que des fichiers de configuration personnel (spécifique à une machine) sont versionnés, ce qui ne devrai pas être le cas.
    La solutions recommandées est de ne tout simplement pas versionner ce genre de fichiers!
    Si ce genre de chemin se trouvent dans du code, il faut l'externaliser dans un fichier de conf, et ne pas le versionner...

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 254
    Points : 181
    Points
    181
    Par défaut
    En effet. Voilà une des raisons pour lesquelles il faut éviter le hardcoding. C'est à dire ne pas coder directement ce genre de strings dans la source mais les placer dans des fichiers de configuration. Fichier de configuration qui ne sera effectivement pas versionné.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    JE parle justement des fichiers conf, si dans un fichier conf tu as un path, tu va devoir le modifier sur tous tes contextes.

    A moins de passer par un script bash et des sed, mais justement je voulais savoir si svn proposait quelque chose dans ce sens.

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 254
    Points : 181
    Points
    181
    Par défaut
    Non SVN ne propose rien. Une solution c'est de ne pas versionner tes fichiers config ou de versionner tout tes fichiers config en les renomants en fonction de l'environnement. Mais c'est la débrouillardise pour ce genre de choses avec SVN (et tout autre versioning systems aussi je pense).

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    Apparement une solution serait la suivante :

    pour le fichier /conf/setup.ini, lui créer un /conf/setup.ini-DIST.

    dans setup.ini-DIST qui est une copie de setup.ini, on remplace les variables par des tags, donc aurait path=%PATH_FOR_NOTHING%

    Ensuite, on se fait un fichier de mapping par environnement, qui contient des trucs du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %PATH_FOR_NOTHING%=/srv/toto/tata
    et pour finir, on a un script shell à qui on dit d'aller chercher les -dist, de remplacer les variables à partir de ce que contient le fichier de mapping, et de remplacer le setup.ini par le setup.in-dist renommé bien sur.

    Le truc c'est que je n'ai pas encore trouvé de script déjà tout fait, ou au moins une base de départ... ca doit être un script basé sur des grep, des find et des sed surement !

  7. #7
    Membre du Club
    Profil pro
    dev
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Points : 61
    Points
    61
    Par défaut
    pour le fichier /conf/setup.ini, lui créer un /conf/setup.ini-DIST.
    Salut,
    tu peux faire simplement comme tu dis:
    * 1 fichier de conf pour l'environnement dist setup.ini-DIST
    * 1 fichier de conf pour l'environnement de dev SETUP.INI (en majuscules)
    Ces 2 fichiers sont versionnés.
    Sous windows, normalement insensible à la casse, le fichier SETUP.INI va être pris en considération, et sur ton serveur linux, tu peux faire un lien symbolique setup.ini qui pointe sur SETUP.INI_DIST (ln -s SETUP.INI setup.ini).
    Ton environnement de dev va utiliser setup.ini qui est en fait SETUP.INI_DIST.
    Sous linux setup.ini et SETUP.INI peuvent cohabiter l'un à côté de l'autre sans ambiguïté

    a+

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    Merci, c'est effectivement une solution pour un environnement à un seul serveur Linux.

    Par contre si tu as une machine de preprod (linux), une de recettage, une de dev, etc. ca ne suffit plus...

Discussions similaires

  1. Lenteur chargement pages web : serveur linux local
    Par ashker dans le forum Apache
    Réponses: 10
    Dernier message: 13/09/2011, 16h13
  2. Eclipse sur Windows et dev local sur Linux : comment faire ?
    Par fredouille31 dans le forum Eclipse PHP
    Réponses: 2
    Dernier message: 17/01/2011, 10h26
  3. Réponses: 5
    Dernier message: 30/07/2008, 08h06
  4. SVN sur Windows, Dev en remote sous serveur Linux commun
    Par matjap dans le forum Subversion
    Réponses: 7
    Dernier message: 10/01/2007, 17h55
  5. Serveur Linux avec clients Windows
    Par ostaquet dans le forum Installation
    Réponses: 2
    Dernier message: 01/08/2002, 15h40

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