Je crée mon premier projet dans Subversion . Jusqu'à présent, j'ai
branches
tags
trunk
Je pense que je dois immédiatement rendre les branches singulières et recommencer. La mise à jour des branches est la norme.
J'ai fait du travail dans le coffre et 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 dois maintenir une certaine relation entre les fichiers à l'aide 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 la copie svn 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 la copie svn sur l'ensemble du répertoire?
svn copy cp -rf trunk tags/1.0
svn commit -m " create a first tagged version"
Réponses:
Vous avez raison en ce qu'il n'est pas "correct" d'ajouter des fichiers au dossier des balises.
Vous avez correctement deviné que
copy
c'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.D'après mon expérience, il est préférable de faire des copies («instantanés») de projets entiers, c'est-à-dire tous les fichiers à partir de l'emplacement d'extraction racine. De cette façon, l'instantané peut se suffire à lui-même, comme une véritable représentation de l'état du projet entier à un moment donné.
Cette partie du "livre" montre comment la commande est généralement utilisée.
la source
Utilisation:
Sténographie:
la source
Comme l'a noté @victor hugo, la méthode "appropriée" consiste à utiliser la copie svn. Il y a cependant une mise en garde. La "balise" ainsi créée 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 elle-même. Donc, si votre système de construction utilise la révision svn d'une manière ou d'une autre (par exemple, incorpore le nombre obtenu avec 'svn info' dans la version du produit que vous construisez), alors vous ne pourrez pas construire exactement le même produit à partir d'une balise (la Le résultat aura la révision de la balise au lieu de celle du code d'origine).
Il semble que par conception, il n'existe aucun moyen dans svn de créer une balise META vraiment appropriée.
la source
echo "{ 'svnRev': \"`svn info | awk '/Last Changed Rev:/{print $4}'`\" }" >svnver.txt
`awk
et obtenir ces informations directement de svn en utilisant l'--show-item
option:svn info --show-item last-changed-revision
Utilisez simplement ceci:
(le tout sur une seule ligne, bien sûr.) Vous devez toujours créer une branche de l'ensemble du dossier de tronc et de son contenu. Il est bien sûr possible de dériver 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 le fait maintenant, et pour que cela se produise, vous devez dériver la totalité du tronc.
Voir un meilleur résumé de l'utilisation de SVN sur mon blog: SVN Essentials et SVN Essentials 2
la source
Pourrait utiliser Tortoise:
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-branchtag.html
la source
@victor hugo et @unwind sont corrects, et la solution de Victor est de loin la plus simple. Méfiez-vous toutefois des éléments externes dans votre projet SVN. Si vous référencez des bibliothèques externes, la référence de révision externe (qu'il s'agisse d'une balise, ou HEAD, ou d'un numéro) restera inchangée lorsque vous balisez des répertoires qui ont 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: Baliser un checkout SVN avec des externes
la source
Une autre option pour baliser un référentiel Subversion consiste à ajouter la balise à la propriété svn: log comme ceci:
J'ai récemment commencé à penser que c'était la façon la plus "correcte" de marquer. De cette façon, vous ne créez pas de révisions supplémentaires (comme vous le faites avec "svn cp") et vous pouvez toujours extraire facilement toutes les balises en utilisant grep sur la sortie "svn log":
De cette façon, vous pouvez également supprimer les balises de manière transparente si vous en avez besoin. Les balises deviennent donc une méta-information complète, et j'aime ça.
la source
Tout ce que vous avez à faire est de changer le chemin de l'URL. Cette commande va créer un nouveau répertoire "tagDestination". La deuxième ligne vous fera connaître les détails complets de l'erreur, le cas échéant. Créez la variable svn env si elle n'est pas créée. Peut vérifier (Cmd: - set, Powershell: - Get-ChildItem Env :) Le chemin par défaut est "C: \ Program Files \ TortoiseSVN \ bin \ TortoiseProc.exe"
la source
Essaye ça. Ça marche pour moi:
la source