OVH Cloud OVH Cloud

[HS] CVS, branches et tags

18 réponses
Avatar
fra-duf-no-spam
Salut,

Depuis quelques jours, je suis amené à utiliser la notion de branche
dans CVS. J'avais fait ça il y a quelque temps, mais j'avoue ne plus
me souvenir des détails.

Mon problème est le suivant: je n'arrive pas à mettre un tag sur une
branche existante...

Je détaille avec un schéma:

PROJET ---- rtag1 ---- rtag2 ---- etc.
\
\ branche1 --- b-rtag1 --- etc...

En gros, mon souci majeur est de créer "b-rtag1" en signalant que
c'est un tag en référence au tag "branche1"

Les soucis annexes sont:

- Comprendre ce qu'est un "non-branch tag" au sens de ViewCVS

- Comprendre pourquoi un tag "principal" fait référence aux commits
qui ont eu lieu avant, alors qu'un tag de type branche semble faire
référence aux commits qui le suivent


Tout lien (si possible en français) est le bienvenu, car google est
trop bavard sur ce thème, et les documents que je peux lire sont très
succins et pas assez didactiques pour mon grand âge :)

/F - Qui se dit que quand il aura vraiment compris CVS, il sera
largement temps de passer à SVN :)


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

10 réponses

1 2
Avatar
Jean-Michel OLTRA
bonjour,


Le mercredi 26 janvier 2005, François TOURDE a écrit...


PROJET ---- rtag1 ---- rtag2 ---- etc.

branche1 --- b-rtag1 --- etc...



En gros, mon souci majeur est de créer "b-rtag1" en signalant que
c'est un tag en référence au tag "branche1"



cvs rtag -b -r branche1 b-rtag1 PROJET

ça le fait pas ?

--
jm


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Stephane Bortzmeyer
On Wed, Jan 26, 2005 at 12:00:19AM +0100,
François TOURDE wrote
a message of 43 lines which said:

/F - Qui se dit que quand il aura vraiment compris CVS, il sera
largement temps de passer à SVN :)



Plutôt à darcs, alors :-)


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Yves Rutschle
On Wed, Jan 26, 2005 at 12:00:19AM +0100, François TOURDE wrote:
Je détaille avec un schéma:

PROJET ---- rtag1 ---- rtag2 ---- etc.

branche1 --- b-rtag1 --- etc...

En gros, mon souci majeur est de créer "b-rtag1" en signalant que
c'est un tag en référence au tag "branche1"



De mémoire, la commande de Jean-Michel va créer une branche
(-b). Personellement, je ferais ça en créant un espace de
travail dans la branche, puis en étiquettant dans cet
espace:

cvs co -r branche1 PROJET
cd PROJET
cvs tag b-rtag1

- Comprendre ce qu'est un "non-branch tag" au sens de ViewCVS



Passe, je ne connais pas ViewCVS. Ça serait sans doute un
tag normal? (tel que b-rtag1 dans l'exemple).

- Comprendre pourquoi un tag "principal" fait référence aux commits
qui ont eu lieu avant, alors qu'un tag de type branche semble faire
référence aux commits qui le suivent



Je ne comprend pas non plus ce que tu veux dire.
Qu'entends-tu par "tag principal"?

Tout lien (si possible en français) est le bienvenu, car google est
trop bavard sur ce thème, et les documents que je peux lire sont très
succins et pas assez didactiques pour mon grand âge :)



Le manuel de CVS baptisé "Cederqvist" d'après le nom de son
auteur, est très compréhensible et didactique. Je ne sais
pas s'il existe des traductions par contre...

Y.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jean-Michel OLTRA
bonjour,


Le mercredi 26 janvier 2005, Yves Rutschle a écrit...


De mémoire, la commande de Jean-Michel va créer une branche
(-b). Personellement, je ferais ça en créant un espace de
travail dans la branche, puis en étiquettant dans cet
espace:



cvs co -r branche1 PROJET
cd PROJET
cvs tag b-rtag1



Ah ? J'aurais dit que ça permettait de taguer sans faire un co d'abord
et en faisant référence à une branche dont le petit nom est donné par le
-r nomDeBranche. I'll RTFM...

--
jm


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
fra-duf-no-spam
Le 12809ième jour après Epoch,
Jean-Michel OLTRA écrivait:

bonjour,


Le mercredi 26 janvier 2005, François TOURDE a écrit...


PROJET ---- rtag1 ---- rtag2 ---- etc.

branche1 --- b-rtag1 --- etc...



En gros, mon souci majeur est de créer "b-rtag1" en signalant que
c'est un tag en référence au tag "branche1"



cvs rtag -b -r branche1 b-rtag1 PROJET



Ben non. Ça, ça crée une branche sur la branche. Moi je veux juste
tagguer la branche avec un numéro de version symbolique.

/F - Apprenti élagueur


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Yves Rutschle
On Wed, Jan 26, 2005 at 12:25:56PM +0100, Jean-Michel OLTRA wrote:
Ah ? J'aurais dit que ça permettait de taguer sans faire un co d'abord
et en faisant référence à une branche dont le petit nom est donné par le
-r nomDeBranche. I'll RTFM...



En fait, je pense que ta commande était presque bonne:

cvs rtag -r branche-1 b-tag1 PROJET

devrait faire ce qu'on veut, sans avoir à faire le checkout.

Y.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
fra-duf-no-spam
Le 12809ième jour après Epoch,
Yves Rutschle écrivait:

On Wed, Jan 26, 2005 at 12:00:19AM +0100, François TOURDE wrote:
Je détaille avec un schéma:

PROJET ---- rtag1 ---- rtag2 ---- etc.

branche1 --- b-rtag1 --- etc...

En gros, mon souci majeur est de créer "b-rtag1" en signalant que
c'est un tag en référence au tag "branche1"



De mémoire, la commande de Jean-Michel va créer une branche
(-b). Personellement, je ferais ça en créant un espace de
travail dans la branche, puis en étiquettant dans cet
espace:

cvs co -r branche1 PROJET
cd PROJET
cvs tag b-rtag1



Déjà essayé, mais ça me crée un "non-branch tag", et j'ai l'impression
que ça ne fait pas tout à fait ce que je veux. J'ai notament eu une
erreur lors de la création du second tag dans la branche, b-rtag2.

$ cvs rtag -r btag-1-1 btag-1-2 tc
$ cvs commit -m "normalement lie au tag 2"
...
cvs commit: sticky tag `btag-1-1' for file `php/.htaccess' is not a branch
...

voilà :(

- Comprendre pourquoi un tag "principal" fait référence aux commits
qui ont eu lieu avant, alors qu'un tag de type branche semble faire
référence aux commits qui le suivent



Je ne comprend pas non plus ce que tu veux dire.
Qu'entends-tu par "tag principal"?



Pardon, le tag principal est pour moi un tag portant sur le MAIN trunk
au sens de CVS, c'est à dire un tag sur la version courante, sans
notion de branche.

Le manuel de CVS baptisé "Cederqvist" d'après le nom de son
auteur, est très compréhensible et didactique. Je ne sais
pas s'il existe des traductions par contre...



Je l'avais lu à l'époque, mais j'avoue qu'il n'était pas très clair
sur ce point.

Je pense toutefois que mon erreur porte sur l'utilisation systématique
de rtag, alors que lorsqu'on travaille sur une branche il faut plutôt
faire des tag.

/F - taggueur... yo man...


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Yves Rutschle
On Wed, Jan 26, 2005 at 02:09:05PM +0100, François TOURDE wrote:
> On Wed, Jan 26, 2005 at 12:00:19AM +0100, François TOURDE wrote:
>> Je détaille avec un schéma:
>>
>> PROJET ---- rtag1 ---- rtag2 ---- etc.
>>
>> branche1 --- b-rtag1 --- etc...
>>
>> En gros, mon souci majeur est de créer "b-rtag1" en signalant que
>> c'est un tag en référence au tag "branche1"
>
> cvs co -r branche1 PROJET
> cd PROJET
> cvs tag b-rtag1

Déjà essayé, mais ça me crée un "non-branch tag"



Ben oui, c'est un tag normal, pas une nouvelle branche.

$ cvs rtag -r btag-1-1 btag-1-2 tc



Ça voudrait dire "là où il y a un tag btag-1-1, met un tag
btag-1-2". À moins que btag-1-1 ne soit une branche, ça ne
sert pas à grand chose (à part à renommer le tag,
possiblement).

cvs rtag -r branche1 btag-1-2 tc
fera peut-être ce que tu veux.

Pardon, le tag principal est pour moi un tag portant sur le MAIN trunk
au sens de CVS, c'est à dire un tag sur la version courante, sans
notion de branche.



Il n'y a aucune différence entre le tronc principal et les
branches, et en particulier les tags ont la même valeur
partout (par là je veux dire qu'un tag sur le tronc
principal n'est pas "spécial"). La seule particuliarité du
tronc principal est que c'est ce qu'on récupère par defaut
si on fait un "cvs co" sans -r. Nos projets ici n'utilisent
pas du tout le tronc principal.

Je pense toutefois que mon erreur porte sur l'utilisation systématique
de rtag, alors que lorsqu'on travaille sur une branche il faut plutôt
faire des tag.



Il n'y a pas de différence entre les tags crées par la
commande 'tag' et les tags créés par le commande 'rtag'. Il
n'existe que 2 sortes de tags: les branches, et les tags
normaux. L'avantage d'utiliser la commande 'tag' sur un
espace de travail, est que tu sais dans quelle branche tu
taggue (celle de l'espace de travail).

D'ailleurs, il est dangereux d'utiliser rtag comme tu le
fais: ça met un tag directement à la tête de la branche
spécifiée, directement dans le dépot CVS. Quelqu'un pourrait
avoir commité qqch juste avant que tu ne fasses ton 'rtag',
auquel cas tu ne sais en fait pas ce que tu taggues. Il est
nettement meilleur de tagguer sur une version que tu
contrôles. AMHA, rtag n'est utile que pour renommer ou
déplacer des tags.

Y.


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
fra-duf-no-spam
Le 12809ième jour après Epoch,
Yves Rutschle écrivait:

On Wed, Jan 26, 2005 at 02:09:05PM +0100, François TOURDE wrote:
> On Wed, Jan 26, 2005 at 12:00:19AM +0100, François TOURDE wrote:
>> Je détaille avec un schéma:
>>
>> PROJET ---- rtag1 ---- rtag2 ---- etc.
>>
>> branche1 --- b-rtag1 --- etc...
>>
>> En gros, mon souci majeur est de créer "b-rtag1" en signalant que
>> c'est un tag en référence au tag "branche1"
>
> cvs co -r branche1 PROJET
> cd PROJET
> cvs tag b-rtag1

Déjà essayé, mais ça me crée un "non-branch tag"



Ben oui, c'est un tag normal, pas une nouvelle branche.



Ben ouais, mais il y a confusion (dans ma tête peut-être) à ce
niveau. C'est un tag normal, mais qui porte sur une branche.

$ cvs rtag -r btag-1-1 btag-1-2 tc



Ça voudrait dire "là où il y a un tag btag-1-1, met un tag
btag-1-2". À moins que btag-1-1 ne soit une branche, ça ne
sert pas à grand chose (à part à renommer le tag,
possiblement).



Ben en fait, l'autre problème, c'est le sens du tag. Dans le tronc
principal, un tag fait référence à toutes les modifs faires jusqu'à la
date du tag.

Dans une branche, il semble qu'un tag fasse référence à toutes les
modifs faites à partir de la date du tag.

Pardon, le tag principal est pour moi un tag portant sur le MAIN trunk
au sens de CVS, c'est à dire un tag sur la version courante, sans
notion de branche.



Il n'y a aucune différence entre le tronc principal et les
branches, et en particulier les tags ont la même valeur
partout (par là je veux dire qu'un tag sur le tronc
principal n'est pas "spécial"). La seule particuliarité du
tronc principal est que c'est ce qu'on récupère par defaut
si on fait un "cvs co" sans -r. Nos projets ici n'utilisent
pas du tout le tronc principal.



Ah? Même pour des fusion de modifications? Si tu as une doc de type
"guideline" sur la façon dont vous bossez, ça m'intéresse fortement ;)

Je pense toutefois que mon erreur porte sur l'utilisation systématique
de rtag, alors que lorsqu'on travaille sur une branche il faut plutôt
faire des tag.



Il n'y a pas de différence entre les tags crées par la
commande 'tag' et les tags créés par le commande 'rtag'. Il
n'existe que 2 sortes de tags: les branches, et les tags
normaux. L'avantage d'utiliser la commande 'tag' sur un
espace de travail, est que tu sais dans quelle branche tu
taggue (celle de l'espace de travail).

D'ailleurs, il est dangereux d'utiliser rtag comme tu le
fais: ça met un tag directement à la tête de la branche
spécifiée, directement dans le dépot CVS. Quelqu'un pourrait
avoir commité qqch juste avant que tu ne fasses ton 'rtag',
auquel cas tu ne sais en fait pas ce que tu taggues. Il est
nettement meilleur de tagguer sur une version que tu
contrôles. AMHA, rtag n'est utile que pour renommer ou
déplacer des tags.



En fait, c'est un peu ce que je pensais. Je vais plutôt jouer avec les
tags maintenant. Le rtag ne me servira que pour créer des branches en
référant d'autres tags déjà posés.

Merci en tout cas à toi et aux autres de ce fil pour ces réponses sur
ce grave HS ;)


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Yves Rutschle
On Wed, Jan 26, 2005 at 03:36:33PM +0100, François TOURDE wrote:
mais il y a confusion (dans ma tête peut-être)



Oui :-)

C'est un tag normal, mais qui porte sur une branche.



C'est pareil.

Ben en fait, l'autre problème, c'est le sens du tag. Dans le tronc
principal, un tag fait référence à toutes les modifs faires jusqu'à la
date du tag.

Dans une branche, il semble qu'un tag fasse référence à toutes les
modifs faites à partir de la date du tag.



À moins que tu ne sois allé voir les fichiers d'historique
(et il ne faut pas), il n'y a pas de différence
fonctionnelle entre les deux. Le tag n'est vraiment qu'une
façon de donner un nom symbolique à une révision d'un
fichier.

En fait, ta description d'un 'tag dans une branche' me
semble correspondre à la définition d'une branche. Si j'ai:

file.c:1.1 --- file.c:1.2 ---- file.c:1.3
[tag t1] [tag t2]
|
|
---[branche b1] --- file.c:1.1.2.1 --- file.c:1.1.2.2 --- file.c 1.1.2.3
[tag t3]


J'ai obtenu la branche en faisant:
cvs co -r t1 projet
cd projet
cvs tag -b b1

Ensuite j'ai travaillé sur cette branche:
cvs co -r b1 projet
[edit file.c]
cvs ci
[on crée file.c:1.1.2.1]
[edit file.c]
cvs ci
[on crée file.c:1.1.2.2]

je fais un tag "normal" dans cette branche:
cvs tag t3

(puis je continue à travailler et je fais 1.1.2.3)


Pendant ce temps, mes collègues travaillent dans la branche
"principale"; ils ont crée file.c:1.2, puis file.c:1.3. L'un
d'entre eux taggue aussi:
cvs tag t2

À ce stage, si un nouveau venu fait:

cvs co -r t2
il récurpère file.c:1.3

cvs co -r t1
il récupère file.c:1.1

cvs co -r t3
il récupère file.c:1.1.2.2

cvs co -r b1
il demande la tête de la branche b1, il récupère 1.1.2.3

C'est peut-être là où tu t'emmèle: Il faut considérer qu'un
tag de branche est un nom de branche, et le comportement
devient alors évident (AMA): quand on parle de la branche,
on parle de sa tête, et l'endroit où l'on a commencé la
branche n'est plus tellement important.


> Il n'y a aucune différence entre le tronc principal et les
> branches
Ah? Même pour des fusion de modifications?



Même, dans la mesure où tu fais les fusions dans un espace
de travail (d'ailleur, je ne crois pas qu'il y ai le choix).
Dans mon exemple, je travaille toujours sur ma branche b1,
mais je veux récupérer les changements de mes collègues:

cvs update -j t2

Si tu as une doc de type "guideline" sur la façon dont
vous bossez, ça m'intéresse fortement ;)



Nous sommes des sauvages qui ne documentent rien (sans
blague).

En fait, c'est un peu ce que je pensais. Je vais plutôt jouer avec les
tags maintenant. Le rtag ne me servira que pour créer des branches en
référant d'autres tags déjà posés.



tag et rtag sont deux commandes qui font la même chose de
façon différente (tag se base sur les révisions qui sont
dans ton espace de travail, alors que rtag se base sur ce
qui dans le dépot CVS).

Personellement je n'utilise pas rtag pour faire de branche
non plus, je fais:

cvs co -r vieuxtag projet
cd projet
cvs tag -b nouvellebranche


Y. - débranché


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
1 2