Créer différentes branches/versions [CVS] - Installation - Linux et OS Alternatifs
Marsh Posté le 07-09-2003 à 23:40:58
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 :
|
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 :
|
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
Marsh Posté le 08-09-2003 à 10:00:29
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
Marsh Posté le 08-09-2003 à 14:15:32
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.
Marsh Posté le 08-09-2003 à 19:07:04
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
C'est compliqué ? oui, je sais.
Marsh Posté le 08-09-2003 à 22:49:17
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 :
|
Ca, ca va.
$ cd projet/version2
$ cvs import -m "Import version 2" projet/site lelfe RELEASE_2
z0rglub a écrit :
|
$ cd ../bidon
$ cvs checkout projet/site
$ cvs tag RELEASE_2-0
z0rglub a écrit :
|
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 :
|
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 :
|
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
Marsh Posté le 09-09-2003 à 00:31:53
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 :
|
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 :
|
(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 :
|
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 :
|
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.
Marsh Posté le 09-09-2003 à 10:32:19
z0rglub a écrit : |
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) !
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
Marsh Posté le 09-09-2003 à 10:57:10
z0rglub a écrit : |
Je viens de récupérer le dit document pour ceux que ca interesse, en attendant que cela redeviennent dispo sur le site.
Lelfe
Marsh Posté le 09-09-2003 à 18:50:47
Lelfe a écrit : |
Je n'ai vraiment pas le temps, désolé :-(
Lelfe a écrit : Il se trouve que je travaille actuellement chez Idealx (stage) ! |
alors, ça te plaît ? (réponds par message privé eventuellement)
Marsh Posté le 07-09-2003 à 22:18:51
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