Je travaille avec les branches SVN et TRUNK depuis des années, mais jamais avec les TAGs.
Quelqu'un peut-il me dire quelle est la principale différence entre les deux ? Quel est le principal objectif du balisage ?
Je travaille avec les branches SVN et TRUNK depuis des années, mais jamais avec les TAGs.
Quelqu'un peut-il me dire quelle est la principale différence entre les deux ? Quel est le principal objectif du balisage ?
Cela vient de http://svnbook.red-bean.com/en/1.5/svn.branchmerge.tags.html
Mais attendez un instant : cette procédure de création de balise n'est-elle pas la même procédure que nous avons utilisée pour créer une branche ? Oui, en fait, c'est bien cela. Dans Subversion, il n'y a pas de différence entre une étiquette et une branche. Les deux sont sont juste des répertoires ordinaires qui sont créés par copie. Tout comme avec les branches, la seule raison pour laquelle un répertoire copié est une "balise" est parce que les humains ont décidé de le traiter de cette façon tant que personne ne commet jamais ne commet dans le répertoire, il reste à jamais un instantané. Si des personnes commencent à y commiter, il devient une branche.
Techniquement, c'est la même chose qu'une branche mais conceptuellement, nous la prenons comme un instantané. Dans mes dépôts svn, je sais que les branches incluront des fonctionnalités importantes qui peuvent ou non avoir été fusionnées dans le tronc, mais j'utilise des balises pour marquer uniquement les versions release.
La seule différence est l'usage que vous en faites, ils sont identiques.
Une branche est l'endroit où vous pouvez développer des travaux sur une version du code différente de celle du tronc principal.
Une balise est utilisée pour "étiqueter" un communiqué. Disons que je travaille uniquement sur le tronc. Lorsque j'envoie la V1 à un client, je crée une "étiquette V1" pour celle-ci. Ensuite, je travaille sur V2. Lorsque le client rencontre un problème avec la V1, je peux simplement extraire le tag et commencer à déboguer le problème sur la même version que le client. Vous pouvez vous enregistrer dans une balise, mais vous n'êtes pas obligé de le faire. pas censé . Si vous avez besoin de faire une version V1.1, vous créez une branche à partir de la même version que la balise V1, vous y ajoutez les corrections et vous la balisez lorsqu'elle est publiée en tant que V1.1.
"Trunk" et "Branches" sont généralement utilisés pour le développement actif et actuel. C'est là que les utilisateurs commettent et vérifient les fichiers. C'est généralement là que beaucoup d'activités se produisent.
D'autre part, les "balises" sont généralement utilisées pour créer un instantané et un jalon de votre développement. Il n'est pas vraiment idéal pour votre équipe d'effectuer un quelconque commit/checkout sur les dossiers Tag.
Voici deux exemples de l'applicabilité des étiquettes :
Archivage de branche - Lorsqu'une branche de version ou de fonctionnalité est terminée ou complètement mise au rebut, vous supprimez généralement la branche, ce qui la cache effectivement de la révision HEAD. Certaines personnes ne suppriment généralement pas ces dossiers pour l'archivage car elles préfèrent voir toutes leurs versions/projets. Cependant, cela peut rendre l'arbre des branches difficile à naviguer. C'est pourquoi il est préférable de ne conserver que les versions et fonctionnalités actives et en cours d'exécution du projet dans la révision HEAD du dossier branches. Vous pouvez créer une copie Tag de la dernière révision de ces branches archivées afin de pouvoir les voir dans la révision HEAD. De cette façon, vous pouvez avoir un aperçu rapide de la dernière révision de la branche avant qu'elle ne soit archivée et aussi garder les choses en ordre dans l'arbre des branches.
Respecter les jalons - Les projets comportent généralement de nombreuses phases de développement. Dev, UT, QA, pré-QA, post-QA, BAT, post-BAT, PROD, pré-PROD, post-PROD. Vous pouvez utiliser des balises pour prendre un instantané de votre développement à chaque étape importante au lieu de vous fier aux numéros de révision, aux dates ou aux commentaires.
Les étiquettes peuvent être d'une grande aide pour organiser les choses, mais elles peuvent aussi parfois être chaotiques. Il est important d'avoir une convention de dénomination standard pour nommer les dossiers d'étiquettes.
Les étiquettes et les branches sont techniquement équivalentes. La différence réside dans la manière dont elles sont généralement utilisées.
Vous utilisez les branches pour faire une copie modifiable du code afin de pouvoir développer une copie stable et une copie de travail en même temps.
Vous utilisez les balises pour faire une copie en lecture seule du code afin de pouvoir l'obtenir plus tard. Voici comment cela est utilisé avec les constructions quotidiennes. Chaque build quotidien crée simplement une balise avec un nom contenant le numéro du build. Si vous avez besoin d'obtenir les sources de cette ancienne version plus tard (par exemple, pour reproduire un bogue), il vous suffit de les exporter à partir de cette étiquette.
Sont en lecture seule, donc que se passe-t-il si, après avoir reproduit ce bogue, vous voulez le corriger, mais que la fonctionnalité qui contient le bogue a été supprimée du tronc actuel ?
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
Comme le disent les réponses : ils sont les mêmes. D'autres VCS (comme par exemple Git) ont une séparation stricte des branches et des balises.
0 votes
Ça ressemble à ça. Donc, dans un scénario simple, lorsque vous avez 1 ligne : PROD et 2 UAT - comment l'utilisez-vous ? Tranche pour PROD, branches pour l'UAT en cours de développement mais TAGs pour la capture instantanée de chaque version utilisateur final ?
1 votes
nvie.com/posts/a-successful-git-branching-model explique ce sujet de manière assez exhaustive.