une - tortoisesvn tutorial pdf




Comment créer correctement une balise SVN à partir du tronc? (6)

@victor hugo et @unwind sont corrects, et la solution de victor est de loin la plus simple. Attention toutefois aux externalités dans votre projet SVN. Si vous référencez des bibliothèques externes, la référence de révision de l'externe (qu'il s'agisse d'une balise, d'HEAD ou d'un numéro) restera inchangée lorsque vous marquerez des répertoires contenant des références externes.

Il est possible de créer un script pour gérer cet aspect du balisage, pour une discussion sur ce sujet, voir cet article SO: Tagging une caisse SVN avec des externals

Je crée mon premier projet dans Subversion . Jusqu'à présent j'ai

 branches
 tags
 trunk

Je pense que je dois immédiatement faire des branches singulières et recommencer. Mettre à jour les branches est la norme.

J'ai travaillé dans le coffre et j'ai déplacé le contenu vers les balises comme suit.

mkdir tags/1.0
cp -rf trunk/* tags/1.0
svn add tags/1.0
svn commit -m " create a first tagged version"

Mon instinct me dit que c'est totalement faux, et je devrais maintenir une certaine relation entre les fichiers en utilisant svn copy . Les fichiers que je crée de cette manière n'auront aucune relation les uns avec les autres, et je suis sûr que je vais manquer les fonctionnalités de Subversion. Ai-je raison?

Dois-je utiliser svn copy pour les fichiers individuels?

mkdir tags/1.0
svn add tags/1.0
svn copy trunk/file1 tags/1.0
svn copy trunk/file2 tags/1.0
svn copy trunk/file3 tags/1.0
svn commit -m " create a first tagged version"

Dois-je utiliser svn copy sur l'ensemble du répertoire?

svn copy cp -rf trunk tags/1.0
svn commit -m " create a first tagged version"

Comme l'a noté @victor hugo, le "bon" moyen est d'utiliser svn copy. Il y a une mise en garde cependant. La "balise" créée de cette façon ne sera pas une vraie balise, ce sera une copie exacte de la révision spécifiée, mais ce sera une révision différente. Donc, si votre système de construction fait en quelque sorte usage de svn revision (par exemple, incorpore le nombre obtenu avec 'svn info' dans la version du produit que vous construisez), vous ne pourrez pas construire exactement le même produit à partir d'une étiquette. résultat aura la révision de l'étiquette au lieu de celle du code original).

Il semble que, par conception, svn n'ait aucun moyen de créer une balise méta vraiment correcte.


Juste faire

svn copy http://svn.example.com/project/trunk \
      http://svn.example.com/project/tags/1.0 -m "Release 1.0"


Utilisez simplement ceci:

svn  copy  http://svn.example.com/project/trunk  
           http://svn.example.com/project/branches/release-1
           -m  "branch for release 1.0"

(Tout sur une ligne, bien sûr.) Vous devriez toujours faire une branche de l'ensemble du dossier et du contenu du tronc. Il est bien sûr possible de brancher des sous-parties du tronc, mais ce ne sera presque jamais une bonne pratique. Vous voulez que la branche se comporte exactement comme le tronc fait maintenant, et pour que cela se produise, vous devez brancher le tronc entier.

Voir un meilleur résumé de l'utilisation SVN sur mon blog: SVN Essentials , et SVN Essentials 2


Vous avez raison en ce que ce n'est pas "correct" d'ajouter des fichiers dans le dossier des balises.

Vous avez correctement deviné que la copy est l'opération à utiliser; il permet à Subversion de garder une trace de l'historique de ces fichiers, et aussi (je suppose) de les stocker beaucoup plus efficacement.

Dans mon expérience, il est préférable de faire des copies («snapshots») de projets entiers, c'est-à-dire tous les fichiers à partir de l'emplacement racine de la sortie. De cette façon, l'instantané peut être autonome, en tant que représentation fidèle de l'état du projet dans son ensemble à un moment donné.

Cette partie du "livre" montre comment la commande est généralement utilisée.







tags