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

SCM Discussion :

[branches/tag] les pratiques


Sujet :

SCM

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Points : 248
    Points
    248
    Par défaut [branches/tag] les pratiques
    Bonjour,

    J'ai toujours un doute dans ma gestion de conf, j'ai lu quelques posts dessus, mais je n'ai toujours pas la réponse qui me convainc... Ouvrons un petit débat

    Bon, je passe outre les outils, actuellement j'utilise SVN, mais c'est une discussion générale sur l'organisation des branches (même si certains pratiques sont peut-être plus adaptées à certains outils, à voir plus tard)

    Soit un petit projet.

    Voilà actuellement comment je procède:

    trunk (mon code stable)
    |-> devel (une branche pour réunir les développements)
    |----> devel_bug1
    |----> devel_ajoutfonction_de_rodriguez
    |----> devel_...
    |-> release1 (par ex v1.0 du 01/01/2014 - correspond à un tag)
    |-> demo1 (parx ex demo du 15/12/2013 - correspond à un tag)
    L'avantage que j'y vois:
    - la branche devel fait un peu office d'intégration, toutes ses branches dérivées (devel_bug1, devel_ajoutfonction_de_rodriguez, ...) sont mergées dedans
    - on commit les sous-dev dans devel pour que ses copains intègrent les modifs, et on synchronise son sous-devel à partir de devel : le trunk ne bouge pas encore
    - quand tous les developpements de chacun sont op, et fonctionnent bien ensemble dans devel, on peu merger dans le trunk => le trunk est (relativement ) stable

    Les problèmes:
    - trop de merge : il faut merger les sous-devel dans devel, puis devel dans trunk
    - devel et trunk peuvent être très désynchronisé pendant un moment, le merge peut souvent être laborieux (avec svn 7 en tout cas)

    Je crois savoir que normalement, on branche directement à partir du trunk. Comme ça il n'y a qu'un niveau de merge.

    Mais ça veut dire que pour ques ses potes se synchronisent sur les fix/improve de chacun, il faut comitter dans trunk directement => à ce moment le trunk n'est plus vraiment stable
    => ce à quoi on peut me répondre, la version stable est le tag de la dernière release
    => ce à quoi je pourrai répondre, et si on fait pas soucvent de release ?

    Merci pour vos avis/eclaircissement/pratiques

  2. #2
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut
    De mon point de vue il faut éviter le plus possible les merges.
    C'est une source d'erreur et d'autant plus si tu merges en fin de release, avec donc peut de temps devant toi pour tout bien vérifier.

    Donc pour moi oui il faut commiter dans le trunk, mais le développeur à le devoir de commiter quelque chose de stable.
    Pour cela l'intégration continue est ton amie. Si un commit est foireux (au sens regression fonctionnelle, ça marche aussi au sens technique mais la le développeur n'est pas censé commiter un truc qui plante ou compile pas), tu le verras tout de suite.

    En pratique l'état de ton trunk en cours de release n'est pas génant en soit. Si tu ne fais pas beaucoup de release rien ne t'empeche de faire des releases fictives intermédiaires si vraiment tu veux avoir des points de retour "stables". (Sur ce point ta solution n'apporte pas de plus d'ailleurs)

    Il ne faut pas voir le trunk comme toujours dans un état livrable en production. Ce sont justement les tags qui te permettent de garantir un état stable à un moment donné. Ce qui se passe entre deux tags, ça n'a pas d'importance.
    Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

    La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

    (\ _ /)
    (='.'=)
    Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Points : 248
    Points
    248
    Par défaut
    Donc pour moi oui il faut commiter dans le trunk, mais le développeur à le devoir de commiter quelque chose de stable.
    Pour cela l'intégration continue est ton amie. Si un commit est foireux (au sens regression fonctionnelle, ça marche aussi au sens technique mais la le développeur n'est pas censé commiter un truc qui plante ou compile pas), tu le verras tout de suite.
    Oui ça me parait juste... Sauf que, peut-etre un cas qui nous est propre qu'à nous, mais l'intégration continue passe souvent, faute de moyens/temps donné, à la trappe, à notre grand damn, mais c'est une réalité :/

    En pratique l'état de ton trunk en cours de release n'est pas génant en soit. Si tu ne fais pas beaucoup de release rien ne t'empeche de faire des releases fictives intermédiaires si vraiment tu veux avoir des points de retour "stables". (Sur ce point ta solution n'apporte pas de plus d'ailleurs)
    Disons qu'on ne commit dans le trunk qu'une version testée intégralement sur la devel, donc on peut toujours partir du trunk si on nous demande une version stable

    Si tu ne fais pas beaucoup de release rien ne t'empeche de faire des releases fictives intermédiaires si vraiment tu veux avoir des points de retour "stables". (Sur ce point ta solution n'apporte pas de plus d'ailleurs)
    Il ne faut pas voir le trunk comme toujours dans un état livrable en production. Ce sont justement les tags qui te permettent de garantir un état stable à un moment donné. Ce qui se passe entre deux tags, ça n'a pas d'importance.
    Oui ça me semble de bon sens... en revanche j'imagine qu'il faut se forcer dans ce cas à nettoyer qq tags "stables" de tps en tps, sinon on en a plein (sous svn le tag est une branche).


    En tout cas merci pour ce premier retour

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 3
    Points : 7
    Points
    7
    Par défaut
    Je pense que même s'il y a des bonnes pratiques svn, elles répondent avant tout à un besoin. Si ton besoin est simple, je te conseil d'avoir une organisation simple.

    Personnellement j'organise mes dépôts de la façon suivante (on retrouvera certains points communs avec ton organisation initiale).

    Je mets en place une branche par horizon de livraison. C'est à dire qu'une branche a un but, un objectif : "Développer la version 1.2.23 de mon application" par exemple.

    Une question qui se pose est "ai-je besoin de créer des branches pour chaque développements avant de les merger sur ma branche de dev" ? La réponse à cette question est intrasèquement liées à une autre question : "as tu besoin de faire des développements parallèles ?" Si oui, il est effectivement préférable de travailler sur une autre branche et de merger avec ta branche principale, si non je ne suis pas convaincu que cela apporte une véritable valeur à ton projet.

    Quand j'atteins une version stable que je désire livrer, je créé un tag comprenant la date & la version.

    Là dessus, on me dit souvent "et tu fais quoi du trunk" ? Ton trunk peut être ce que tu veux. Il est avant tout important que tu choisisses comment tu t'organises et pourquoi tu fais ce choix. C'est pas important d'avoir raison, c'est plus important de comprendre ce qui nous amène à une situation.

    Personnellement, j'aime bien avoir une image de la prod sur mon trunk. C'est à dire que parmis tous les tags de toutes mes livraisons, mon trunk correspond au tag qui est actuellement en production. Mais je ne peux faire ça que parce que je ne fais aucun développement sur mon trunk.

    Ce que j'essaye de dire, c'est que tout dépend de la volumétrie de ton projet et de l'équipe, de ses besoins en terme de développement parallèle pour une même version, et de ses besoins de développer en parallèle plusieurs versions.

    Tu es tout seul et c'est un projet pour le fun ? Alors prend un trunk et développe dessus sans te poser plus de question.
    Si tu veux être plus sérieux, alors crée des branches pour les développements des différents modules.
    Tu as besoin de développement parallèles ? alors créé des branches depuis ta branche de dev (ou ton trunk) pour éviter les conflits.
    Tu as besoin de développer des versions en parallèles ? Alors le trunk ne peux plus être ta branche de développement. Il faut le décentralisé et avoir une branche de dev principal pour la V1X et une pour la V2Y (avec un ancêtre commun).

    J'ai l'impression que j'aurais être plus concis dans ma réponse, mais bon ^^

    Bon courage

  5. #5
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Citation Envoyé par drKzs Voir le message
    Bon, je passe outre les outils, actuellement j'utilise SVN, mais c'est une discussion générale sur l'organisation des branches (même si certains pratiques sont peut-être plus adaptées à certains outils, à voir plus tard)
    Justement le workflow que tu proposes est très bien adapté à GIT et il est difficile à mettre en oeuvre avec SVN. Le workflow dépend avant tout du gestionnaire de source que tu vas utiliser. Si tu peux utiliser GIT, il n'y a pas à hésiter, il est plus moderne, plus rapide, plus flexible. Il a en revanche un cout de formation plus élevé que SVN.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

Discussions similaires

  1. [Bonne pratique] Branches, tags, et trunk
    Par gifffftane dans le forum Subversion
    Réponses: 13
    Dernier message: 01/03/2010, 16h23
  2. Les pratiques de validation industrielle
    Par Myriam59 dans le forum Test
    Réponses: 6
    Dernier message: 20/11/2009, 17h37
  3. [Bonne pratique] Trunk-Branches-Tag doivent ils etre versionnés ?
    Par vdaanen dans le forum Subversion
    Réponses: 1
    Dernier message: 11/03/2009, 15h51
  4. [WinCVS] Merge du tronc principal à une branche (tag) séparée créée
    Par randriano dans le forum CVS
    Réponses: 2
    Dernier message: 01/02/2008, 11h35
  5. Meta-tags : les mots clés
    Par caranta0013 dans le forum Référencement
    Réponses: 8
    Dernier message: 04/09/2007, 10h54

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