Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2897 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Installation

  [CVS] Créer différentes branches/versions

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[CVS] Créer différentes branches/versions

n°321173
lelfe
Posté le 07-09-2003 à 22:18:51  profilanswer
 

Salut
 
Je developpe pas mal, sur beaucoup de projets différents et certains avec plusieurs versions différentes encore en activités, pour m'aider, je me suis installé un serveur CVS. Il marche bien, mais j'ai du mal à m'en sortir, et en particulier avec ces histoires de branches/tags/versions/revisions.
 
J'ai un projet, appelons "dragon", avec 3 version différentes qui sont encore en activités :
dragon (2.0)
dragon (2.5)
dragon (3.0)
 
J'aimerai passés ces trois versions sur le serveur avec ces différents attributs afin que je puisse continuer à travailler sur les trois versions indépendement.
 
Comment faire, car je m'en mèle les pinceaux avec toutes ces "appelations" différentes.
 
Lelfe

mood
Publicité
Posté le 07-09-2003 à 22:18:51  profilanswer
 

n°321204
z0rglub
Posté le 07-09-2003 à 23:40:58  profilanswer
 

pour ce qui est des appellations différents :
 
 - pour un fichier, on parle de revision (tu passes d'une révision à une autre en applicant une modif et en commitant)
 - pour un ensemble de fichier, on parlera de release
 
(comme ça déjà, on fera la différence entre version d'un fichier et version d'une application).
 
Une branche, c'est un tag spécial que tu appliques (généralement) à tous tes fichiers :

Code :
  1. z0rglub:~/work/www/phpwebgallery$ cvs tag -b release1_3


une fois que tu as fait cela, tu as créé une branche au niveau du référentiel CVS (le repository) et tu peux te créer un deuxième répertoire pour travailler sur la release1_3 comme ceci :

Code :
  1. z0rglub:~/work/www$ cvs checkout -r release1_3 -d phpwebgallery1.3 phpwebgallery


Lorsque tu seras dans ~/work/www/phpwebgallery1.3 et que tu feras des commits sur tes modifs de fichiers, tu feras les commits sur la branche release1_3 et pas sur le tronc commun de développement (main trunc).
 
J'espère que mes explications sont suffisament claires

n°321236
lelfe
Posté le 08-09-2003 à 10:00:29  profilanswer
 

Mais pour mes différentes branches, ce n'est pas possible de les avoir par version ? Il faut obligatoirement donner un nom au niveau  de la branche ?
On est obligé d'avoir quelque chose comme
 
release2.0
release2.5
release3.0
 
?
 
On peut avoir des branches automatique en fonction des versions ?
 
Et si en effet je suis obligé de passer par là, comment créer tout ca, car, si je ne me trompe pas, pour créer un tag, il faut travailler sur des sources récupérés à partir du CVS.
Alors, que là, moi, j'ai mes 3 répertoires hors CVS.
J'arrive bien à importer un des répertoires, mais, après, mettre les autres...
A moins que j'importe trois fois en changeant le flag -r à chaque fois ? (on peut pas spécifier un vendor name quand on importe ?)
Il se place où lui ? :(
 
Oulalala :)
 
Lelfe

n°321311
axey
http://www.00f.net
Posté le 08-09-2003 à 14:15:32  profilanswer
 

Essaye Subversion...
C'est beaucoup plus simple. Pour créer une branche ou un tag, tu as juste à recopier les répertoires que tu veux sous un autre nom.
 
Ex si ton répertoire principal s'appel "trunk" :
 
svn copy trunk branches/1.0
 
et c'est tout. Et non, ça ne prend pas deux fois plus de place au niveau du serveur.
 

n°321519
z0rglub
Posté le 08-09-2003 à 19:07:04  profilanswer
 

au cas où tu souhaites quand même tester CVS :
 
Si tu as déjà tes 3 rep que toi tu considères comme les 3 branches de ton appli, il faut
 

  • prendre le premier répertoire et décréter que c'est le tronc commun de développement (autrement dit, c'est pas une vraie branche), tu l'importes sous CVS, ça tu sais faire apparemment.
  • tu fais un checkout de ton module fraîchement ajouté, sans spécifier de branche (puisque tu n'en as pas encore, point de vue CVS) et dans le répertoire de ce checkout géré par CVS, tu tag tous tes fichiers avec le nom de ta release : release2_3 par exemple.
  • tu sors de ce répertoire et tu fais un checkout en précisant que tu veux la release2_3 : cvs co -r release2_3 mon_module
  • là ça devient sioux... ce que tu considère comme étant de la release2_3, tu le mets dans ce répertoire de checkout et remplaçant les fichiers, tu fais un commit du style : cvs ci -m "import des revisions des fichiers avant gestion par CVS"
  • tu fais pareil pour ton autre branche.


C'est compliqué ? oui, je sais.


Message édité par z0rglub le 08-09-2003 à 19:07:30
n°321661
lelfe
Posté le 08-09-2003 à 22:49:17  profilanswer
 

Je m'en sors pas, j'y arrive au début, mais sur la fin, c'est pas très clair. Tu ne t'es pas trompé entre les différent 2_3 que tu as écrit ?
 

z0rglub a écrit :

au cas où tu souhaites quand même tester CVS :


 
Oui, j'aimerai bien m'en servir.
 

z0rglub a écrit :


  • prendre le premier répertoire et décréter que c'est le tronc commun de développement (autrement dit, c'est pas une vraie branche), tu l'importes sous CVS, ça tu sais faire apparemment.



 
Ca, ca va.
 
$ cd projet/version2
$ cvs import -m "Import version 2" projet/site lelfe RELEASE_2
 

z0rglub a écrit :


  • tu fais un checkout de ton module fraîchement ajouté, sans spécifier de branche (puisque tu n'en as pas encore, point de vue CVS) et dans le répertoire de ce checkout géré par CVS, tu tag tous tes fichiers avec le nom de ta release : release2_3 par exemple.



 
$ cd ../bidon
$ cvs checkout projet/site
$ cvs tag RELEASE_2-0
 

z0rglub a écrit :


  • tu sors de ce répertoire et tu fais un checkout en précisant que tu veux la release2_3 : cvs co -r release2_3 mon_module



 
Je sors de ce répertoire ? Jusqu'à quel niveau ?  
J'ai supposé que je sortais de tous les répertoire liés au CVS
$ cd ../bidon2
$ cvs checkout -r RELEASE-2_0 projet/site
 

z0rglub a écrit :


  • là ça devient sioux... ce que tu considère comme étant de la release2_3, tu le mets dans ce répertoire de checkout et remplaçant les fichiers, tu fais un commit du style : cvs ci -m "import des revisions des fichiers avant gestion par CVS"



 
Alors, ca devient moins clair
Alors, là, tu es sur que tu parles bien encore de la version 2_3 ?
Est-ce que tu peux repréciser, sachant que moi, les version sont 2.0 - 2.5 - 3.0
 
$ cp -r ../projet/version2.5 .
(Mais, ca c'est très crade, j'ai des répertoires différents, des fichiers qui ont changer, etc...)
$ cvs commit -m "Ajout de la branche 2.5"
 

z0rglub a écrit :


  • tu fais pareil pour ton autre branche.


C'est compliqué ? oui, je sais.


 
Il manque un taggage quelque part dans l'histoire...
C'est bizarre. Est-ce que tu peux vérifier "tes versions" et détaillé un peu plus la fin.
 
Mais dans cvs, on est pas obligé de rajouter un module à chaque fois qu'on rajoute un répertoire ?
 
Lelfe

n°321719
z0rglub
Posté le 09-09-2003 à 00:31:53  profilanswer
 

je suppose qu'au départ tu as 3 répertoires : ~/work/dragon/release2-0, ~/work/dragon/release2-5 et ~/work/dragon/release3-0. Tu considère que ces 3 répertoires correspondent au même projet (projet "dragon" ), et tu veux que CVS gère le versionning.
 
Seulement voilà, pour CVS, il faut dans un projet (un module si tu veux) avoir un tronc commun de développement et tu peux créer des branches dessus (tu peux aussi créer des branches sur des branches, mais dans l'immédiat, on va pas faire trop compliqué).
 
La première étape, c'est donc la création du tronc commun de developpement. Ici, je te propose de considère de prendre ~/work/dragon/release2-0 qui nous servira de tronc commun de dev. Tu importes donc le contenu de ce répertoire, créant ainsi le module "dragon"
 

Code :
  1. $ cvs import -m "import initial" dragon lelfe initial


 
La seconde étape est de créer les différentes branches, sachant que pour toi, elles existent déjà. Il faut déjà dire que tu considère l'état de ton tronc commun comme celui de ta release 2.0, tu fais donc un checkout tout simple :
 

Code :
  1. $ mkdir -p $HOME/work/cvs-workdir
  2. $ cd $HOME/work/cvs-workdir
  3. $ cvs co dragon
  4. $ cd dragon
  5. $ cvs tag -b release-2_0
  6. $ cvs up -A


(la dernière ligne permet de dire que tu rafraîchis ton répertoire de travail CVS avec les révisions des fichiers du tronc commun et non de la branche release-2_0)
 
Ensuite, il faut créer la seconde branche : la 2.5. Comme tu as dit que des répertoires avaient été ajoutés etc. il va falloir bosser dessus à grand coup de cvs add et autre cvs remove. Commence par copier le contenu de ton ~/work/dragon/release2-5 vers ~/work/cvs-workdir/dragon en écrasant les fichiers qui sont remplacés par leur nouvelle révision (on se souvient que le mot version est décliné en : revision pour les fichiers, release pour les applications). Si tu as des fichiers qui doivent disparaître dans la release 2.5 et qui sont encore présent dans ton ~/work/cvs-workdir/dragon, il faut les virer, si tu as des fichiers ajoutés avec la copie de ~/work/dragon/release2-5, il faut les rajouter à CVS :
 

Code :
  1. $ cd $HOME/work/cvs-workdir/dragon
  2. $ cp -rf ~/work/dragon/release2-5/* .
  3. $ cvs -nq up
  4. // "cvs -nq up" te permet de voir ce qui se passerait si tu faisais un update, mais ne fais rien en réalité
  5. $ cvs add nouveauFichierApparuEn2-5.c
  6. $ cvs rm -f fichierDeLa2-0DisparuEn2-5.h
  7. $ cvs ci -m "passage à la release 2-5"
  8. $ cvs tag -b release-2_5
  9. $ cvs up -A


 
Il te reste à réappliquer le même principe pour la release 3.0.
 
Ensuite, tu te créées 3 répertoires (pour travailler proprement) :
 

Code :
  1. $ cd ~/work/cvs-workdir
  2. $ cvs co -r release-2_0 -d dragon-2_0 dragon
  3. $ cvs co -r release-2_5 -d dragon-2_5 dragon
  4. $ cvs co -r release-3_0 -d dragon-3_0 dragon


 
Si tu fais des modifs dans ~/work/cvs-workdir/dragon-2_0 et que tu commites, ces modifs n'apparaîtront qu'en branche release-2_0. Idem pour ~/work/cvs-workdir/dragon-2_5 et ~/work/cvs-workdir/dragon-3_0
 
Note : à mon boulot je suis co-responsable de la gestion de version avec CVS (notamment les branches) d'une grosse appli, j'ai pas réussi à comprendre tous les trucs de CVS encore et pourtant je passe pas mal de temps dessus. Ne pas s'inquiéter si on comprend pas tout au départ, je conseille vivement la lecture du document écrit pas idealx.org, et qui je viens de le voir est indisponible :-(, heureusement que je l'ai imprimé, c'est un document que j'ai lu et relu au début.


Message édité par z0rglub le 09-09-2003 à 00:33:10

---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com
n°321833
lelfe
Posté le 09-09-2003 à 10:32:19  profilanswer
 


z0rglub a écrit :


à mon boulot je suis co-responsable de la gestion de version avec CVS (notamment les branches) d'une grosse appli, j'ai pas réussi à comprendre tous les trucs de CVS encore et pourtant je passe pas mal de temps dessus. Ne pas s'inquiéter si on comprend pas tout au départ, je conseille vivement la lecture du document écrit pas idealx.org, et qui je viens de le voir est indisponible :-(, heureusement que je l'ai imprimé, c'est un document que j'ai lu et relu au début.


 
J'ai pas eu le temps de tester ce que tu viens d'expliquer.
Mais c'est très bien fait, je sens que ca va me plaire :)
(tu veux pas faire un HOWTO-CVS ? :))
 
Mais y'a un point qu'il faut que j'eclaircisse...
Tu dis que Idealx a sorti un document explicatif très bien sur CVS ?
Il se trouve que je travaille actuellement chez Idealx (stage) ! :ouch:
Alors je vais de ce pas me renseigner... :)
 
(pour info, le serveur qui gère idealx.org a des problème, je pense que le contenu sera revenu d'içi 2 semaines).
 
Lelfe

n°321852
lelfe
Posté le 09-09-2003 à 10:57:10  profilanswer
 

z0rglub a écrit :


je conseille vivement la lecture du document écrit pas idealx.org, et qui je viens de le voir est indisponible :-(


 
Je viens de récupérer le dit document pour ceux que ca interesse, en attendant que cela redeviennent dispo sur le site.
 
Lelfe

n°322084
z0rglub
Posté le 09-09-2003 à 18:50:47  profilanswer
 

Lelfe a écrit :


(tu veux pas faire un HOWTO-CVS ? :))


Je n'ai vraiment pas le temps, désolé :-(
 

Lelfe a écrit :

Il se trouve que je travaille actuellement chez Idealx (stage) ! :ouch:
Alors je vais de ce pas me renseigner... :)


alors, ça te plaît ? (réponds par message privé eventuellement)


---------------
Ma galerie photo créée avec Piwigo et hébergée sur Piwigo.com

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Installation

  [CVS] Créer différentes branches/versions

 

Sujets relatifs
apache : comment creer un virtual host ??bureaux multiples à icones differentes
[OpenLDAP] Créer un carnet d'adresse[User-Guide] Créer un site en local (PHP,mySQL, ...etc)
Est-ce bien d'avoir toujours les dernières versions ?Créer un CD de Linux à partir d'une installation sur un disque dur ?
Comment créer un serveur internet sous linux mandrake 9.1 ?les sources du noyau sont différentes suivant les distributions ?
Un tutorial pour "créer" sa propre knoppix ?Différentes questions sur logrotate.
Plus de sujets relatifs à : [CVS] Créer différentes branches/versions


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR