Comment créer un tag SVN de tronc?
Je suis entrain de créer mon premier projet en Subversion. Jusqu'à présent j'ai
branches
tags
trunk
Je pense que j'ai immédiatement besoin pour faire les branches du singulier et de recommencer. Mise à jour de branches est la norme.
J'ai fait un travail dans le coffre et en déplaçant le contenu de 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 que je devrais maintenir un certain lien entre les fichiers à l'aide de svn copy
. Les fichiers que j'ai créer de cette manière, vous n'avez aucune relation les uns avec les autres, et je suis sûr que je vais manquer de Subversion fonctionnalités. Suis-je la corriger?
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 copie sur l'ensemble de l'annuaire?
svn copy cp -rf trunk tags/1.0
svn commit -m " create a first tagged version"
- Malheureusement je n'ai pas tous les choix dans ce cas... git est sacrément magie.
Vous devez vous connecter pour publier un commentaire.
Vous avez raison ce n'est pas "droit" pour ajouter des fichiers à la tags dossier.
Vous avez correctement deviné que
copy
est l'opération à utiliser; il vous permet de Subversion de garder une trace de l'histoire de ces fichiers, et aussi (je suppose) de les stocker de manière beaucoup plus efficace.Dans mon expérience, il est préférable de faire des copies ("snapshots") de l'ensemble des projets, c'est à dire tous les fichiers à partir de la racine de check-out de l'emplacement. De cette façon, l'instantané peut se tenir sur son propre, comme une vraie représentation de l'ensemble du projet à un moment donné dans le temps.
Cette partie de "le livre" montre comment la commande est généralement utilisée.
Utilisation:
Abrégée:
svn cp trunk tags/1.0.0; svn ci tags/1.0.0 -m "Release 1.0.0"
Comme le fait remarquer @victor hugo, la "bonne" façon est d'utiliser svn copy.
Il y a une mise en garde, cependant. Le "tag" créé de cette façon ne sera pas un vrai tag,
il sera une copie exacte de la révision, mais il sera différent
révision elle-même. Donc, si votre système de construction permet l'utilisation de révision svn en quelque sorte
(par exemple, intègre le nombre obtenu avec svn info " dans la version de
le produit que vous avez à construire), alors vous ne serez pas en mesure de construire exactement le même produit
à partir d'une étiquette (le résultat sera la révision de la balise au lieu de celui de la
code d'origine).
Il ressemble par sa conception il n'existe aucun moyen dans le svn pour créer un vraiment bon balise meta.
echo "{ 'svnRev': \"`svn info | awk '/Last Changed Rev:/{print $4}'`\" }" >svnver.txt
`awk
et à obtenir des informations directement à partir de svn à l'aide de la--show-item
option:svn info --show-item last-changed-revision
Utiliser seulement ceci:
(sur une seule ligne, bien sûr.) Vous devriez toujours faire une branche du tronc d'arbre entier dossier et de son contenu. Il est bien sûr possible de la branche des sous-parties du tronc, mais ce ne sera presque jamais une bonne pratique. Vous voulez la direction générale de se comporter exactement comme le tronc est maintenant, et pour cela vous avez à la direction de l'ensemble du tronc.
Voir un meilleur résumé de l'utilisation de SVN sur mon blog: SVN Essentials, et SVN Essentials 2
Pourrait utiliser Tortue:
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-branchtag.html
@victor hugo et @détendez-vous sont corrects, et victor de la solution est de loin la plus simple. Cependant MÉFIEZ-vous des alias dans votre projet SVN. Si vous faites référence à des bibliothèques externes, à l'extérieur de la révision de référence (si une étiquette, ou à la TÊTE, ou le nombre) restera inchangé lorsque vous étiquetez les répertoires qui ont des références externes.
Il est possible de créer un script pour gérer cet aspect de marquage, pour une discussion sur ce sujet, voir cette SORTE d'article: Le marquage d'un SVN checkout avec des externes
Une autre option pour la balise d'un référentiel Subversion consiste à ajouter le tag svn:log de la propriété comme ceci:
Récemment, j'ai commencé à penser que c'est le plus "à droite" chemin de la balise. De cette façon, vous n'avez pas créer d'autres révisions (comme vous le faites avec "svn cp") et ne peut toujours extraire facilement toutes les balises à l'aide de grep sur "svn log" de sortie:
Aussi, de cette façon, vous pouvez parfaitement supprimer balises si vous en avez besoin. Donc les balises devenir un complet de la méta-information, et je l'aime.
Tout ce que vous devez faire modifier l'adresse de l'URL. Cette commande va créer de nouveaux dir "tagDestination". La deuxième ligne sera de faire connaître le détails de l'erreur si elles se produisent.
Créer svn env variable si pas créé.
Peut vérifier (Cmd:- définir, Powershell:- Get-ChildItem Env:)
Chemin d'accès par défaut est "C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe"
De l'essayer. Il fonctionne pour moi: