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

EDI et Outils pour Java Discussion :

[CVS]Gestion de 2 versions avec une partie commune


Sujet :

EDI et Outils pour Java

  1. #1
    Membre régulier Avatar de Gromitou
    Profil pro
    Inscrit en
    Février 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Février 2003
    Messages : 98
    Points : 81
    Points
    81
    Par défaut [CVS]Gestion de 2 versions avec une partie commune
    Salut a tous,

    une question toute bête mais à laquelle je ne trouve point de réponse :

    J'ai 2 versions d'une appli (appelons les V1 et V2 ...) mais qui ont pas mal de classes en commun.

    Et donc, quand je modifie une classe V2 mais qui est aussi une classe V1, j'aimerais que mes modifs soient répercutées dans la classe de la V1. Par contre, quand je modifie une classe V2 mais qui est différente de la V1 (même si elle a le même nom), je voudrais que ces modifs ne soient pas appliquées à la V1.

    Comment obtenir avec CVS, et si CVS ne sais pas faire, comment puis je procéder pour arriver à ce résultat ?

    Merci d'avance,

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Bonjour,

    tu peux regarder du côté de "Branch" en CVS.

    Ce qui suit suppose que tu possèdes un minimum de connaissances au niveau de CVS.
    En fait, si tu as bien fait les choses, tu as mis un TAG sur tes fichiers correspondant à la version 1. Il va falloir créer une nouvelle branche à partir de ce noeud pour intégrer des modifications (par exemple la correction de bugs identifiés en utilisant l'application). Ca c'est une chose, ca te permettra déjà de mettre à jour la version 1.
    Même méthode pour la version 2 (sauf si en fait ce que tu appelles version 2 est la version en cours de développement).

    Pour répercuter les modifications faites sur la version 1 en mettant à jour la version 2, il te faudra utiliser la commande cvs update avec l'option -j (en ayant récupéré auparavant la "dernière version 2" dans la branche dérivée) pour mettre à jour sur ton poste local les fichiers pour lesquels il existe des modifications au niveau de la version 1 (attention, il n'est pas exclu que CVS te dise qu'il y a des conflits et te demande de les résoudre).

    Si je peux te donner un conseil, commence par te documenter sur cet aspect de CVS avant de tenter quelquechose, car il existe plusieurs manières de faire (notamment au niveau de la facon d'appeler la commande et des options) dont les plus élaborées te permettront de mieux gérer des changements fréquents.

    N'hésites pas à poser des questions si je n'ai pas exactement répondu à ta question (je pars sur l'hypothèse que tes versions ont été réalisées en utilisant un stockage sur un serveur CVS depuis le départ)

    Cordialement

    Eric

  3. #3
    Membre régulier Avatar de Gromitou
    Profil pro
    Inscrit en
    Février 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Février 2003
    Messages : 98
    Points : 81
    Points
    81
    Par défaut
    Merci beaucoup de ton aide.

    j'ai effectivement quelques maigres connaissances en CVS.

    J'avais déjà commencé à explorer les branches, en faisant une branche pour la V1 et une pour la V2. Mon véritable problème en fait est de fusionner (merger en langage CVS ?) automatiquement un fichier qui serait "commun" (ou étiqueté en tant que tel) aux deux versions.

    Pour prendre un exemple : je modifie la frame de login de l'appli dans la version 1 et quand je la valide dans le dépot CVS de la V1, elle se valide également dans la V2. Par contre, cette double validation ne se fera pas pour une classe spécifique à une version.

    Vois tu comment faire concrêtement ???

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Bonjour,

    premièrement, je pense que ca doit bien se faire en ayant mis un TAG sur tes 2 versions et en ayant créé des branches, sauf si en fait ton désir est de ne pas mettre à jour l'ensemble des fichiers dans la version 2 qui existent à la fois dans les 2 versions (dans ce cas, il te faudra mettre à jour la version 2 en précisant à chaque fois la liste des fichiers ... ce qui va être assez pénible).

    Bon je t'explique la démarche que je te propose et quii permet d'éviter un maximum de problèmes (il y a des astuces ensuite qui permettent de se simplifier la vie, mais avec cette méthode tu comprends ce qui se passe).

    Commencons à partir de la création d'une branche :

    Création de la branche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cvs checkout -r Tag_V1 nom_module
    cvs tag -b Tag_V1-branch
    Idem pour la version 2.

    Intégration de modification dans la version 1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cvs checkout -r Tag_V1-branch nom_module
    tu fais tes modifications.

    tu poses un Tag :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cvs tag Tag_V1-branch-1
    La prochaine fois que tu fais des modifications, un checkout sur Tag_V1-branch va tout de même te renvoyer la version la plus récente de la branche (et pas les versions présentes lorsque tu as mis le TAG). L'ajout de Tag à chaque modification sera lui utile pour mettre à jour la version 2 à partir des changements d'une modification à l'autre.

    Tu te places maintenant au niveau de la version 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    cvs checkout -r Tag_V2-branch nom_module
     
    cvs update -j Tag_V1 -j Tag_V1-branch-1 // on met à jour les fichiers locaux en intégrant pour chaque fichier les différences entre les 2 TAGs (possibilité de conflits néanmoins)
     
    cvs commit
     
    cvs tag Tag_V2-branch-1
    Et ainsi de suite...

    Si après cela, tu modifies à nouveau la version 1, tu vas poser un TAG Tag_V1-branch-2 et tu vas répercuter les

    changements au niveau de la version 2 par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    cvs checkout -r Tag_V2-branch nom_module
     
    cvs update -j Tag_V1-branch-1 -j Tag_V1-branch-2
     
    cvs commit
     
    cvs tag Tag_V2-branch-2
    Je viens de tester tout ca avec un exemple simple, et ca marche bien.
    Je te conseille donc de tester cette technique avec un simple fichier texte pour voir comment cela se passe.

    Bon courage

    Eric

  5. #5
    Membre régulier Avatar de Gromitou
    Profil pro
    Inscrit en
    Février 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Février 2003
    Messages : 98
    Points : 81
    Points
    81
    Par défaut
    Super !!!

    Ta réponse est bien détaillée et avec des exemples de code, c'est ce qu'il faut pour un débutant en CVS comme moi !!!



    Je vais faire des essais quand je serais un peu moi charrette d'ici quelques jours

    Encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion de plusieurs versions d'une même interface
    Par ecoulees dans le forum ODI (ex-Sunopsis)
    Réponses: 2
    Dernier message: 28/05/2008, 16h20
  2. File.exist avec une partie du nom seulement
    Par kahya dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 18/01/2008, 12h04
  3. Réponses: 1
    Dernier message: 08/05/2007, 13h44
  4. comment avoir une form avec une partie déroulante?
    Par Jayceblaster dans le forum Delphi
    Réponses: 5
    Dernier message: 21/05/2006, 18h54
  5. Réponses: 4
    Dernier message: 12/05/2006, 19h11

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