SVNBOOK Chap4 Branching and Merging Tags Creating a Complex Tag
De Framalang Wiki.
Cette page fait partie du projet Version control with subversion.
| Pseudo | Code | Rôle | Statut |
|---|---|---|---|
| Sub Versif | SVF | Traduction | Fait |
| Hotshot92 | 1ere Relecture | Fait | |
| Validation |
Sommaire |
Titre
Creating a Complex Tag
Créer une étiquette complexe
Paragraphe 1
Sometimes you may want your “snapshot” to be more complicated than a single directory at a single revision.
Parfois vous voudrez peut-être que votre "instantané" soit plus compliqué qu'un simple répertoire à une unique révision donnée.
Paragraphe 2
For example, pretend your project is much larger than our calc example: suppose it contains a number of subdirectories and many more files. In the course of your work, you may decide that you need to create a working copy that is designed to have specific features and bug fixes. You can accomplish this by selectively backdating files or directories to particular revisions (using svn update with the -r option liberally), by switching files and directories to particular branches (making use of svn switch), or even just by making a bunch of local changes. When you're done, your working copy is a hodgepodge of repository locations from different revisions. But after testing, you know it's the precise combination of data you need to tag.
Par exemple, imaginons que votre projet est bien plus vaste que notre exemple calc : supposons qu'il contient un bon nombre de sous-répertoires et bien plus de fichiers encore. Au cours de votre travail, vous pouvez très bien décider que vous aurez besoin de créer une copie de travail destinée à des fonctionnalités particulières et à des corrections de bogues. Vous pouvez accomplir ceci en antidatant de manière sélective des fichiers ou dossiers à des révisions données (en utilisant généreusement svn update avec le paramètre -r), en déportant des fichiers et des dossiers vers des branches particulières (en vous servant de svn switch), ou même en effectuant manuellement un tas de modifications locales. Quand vous aurez terminé, votre copie de travail sera un vrai bazar, fait d'emplacements du dépôt à des révisions différentes. Mais après l'avoir testée, vous saurez que c'est précisément la combinaison de données que vous vouliez étiqueter.
Paragraphe 3
Time to make a snapshot. Copying one URL to another won't work here. In this case, you want to make a snapshot of your exact working copy arrangement and store it in the repository. Luckily, svn copy actually has four different uses (which you can read about in Chapter 9, Subversion Complete Reference), including the ability to copy a working copy tree to the repository:
C'est alors le moment de prendre un cliché. Copier une URL vers une autre ne fonctionnera pas cette fois. Dans le cas présent, vous voulez prendre un cliché de l'arrangement exact de votre copie de travail et le placer dans le dépôt. Par chance, svn copy possède en fait quatre usages différents (au sujet desquels vous pouvez obtenir des informations dans le Chapitre 9, Guide complet des commandes Subversion), dont la possibilité de copier une arborescence de travail vers le dépôt :
Paragraphe 4
$ ls
my-working-copy/
$ svn copy my-working-copy \
http://svn.example.com/repos/calc/tags/mytag \
-m "Tag my existing working copy state."
Committed revision 940.
$ ls
ma-copie-de-travail/
$ svn copy ma-copie-de-travail \
http://svn.exemple.com/depot/calc/tags/mon-etiquette \
-m "Étiquette l'état de ma copie de travail existante."
Révision 940 propagée.
Paragraphe 5
Now there is a new directory in the repository, /calc/tags/mytag, which is an exact snapshot of your working copy—mixed revisions, URLs, local changes, and all.
Désormais il y a un nouveau répertoire dans le dépôt, /calc/tags/mon-etiquette, qui est un instantané exact de votre copie de travail — révisions mixtes, URL, modifications locales, et tout et tout.
Paragraphe 6
Other users have found interesting uses for this feature. Sometimes there are situations where you have a bunch of local changes made to your working copy, and you'd like a collaborator to see them. Instead of running svn diff and sending a patch file (which won't capture directory, symlink, or property changes), you can use svn copy to “upload” your working copy to a private area of the repository. Your collaborator can then either check out a verbatim copy of your working copy or use svn merge to receive your exact changes.
D'autres utilisateurs ont trouvé des usages intéressants pour cette fonctionnalité. Parfois il y a des situations où votre copie de travail contient un paquet de modifications locales, et vous aimeriez les montrer à un collaborateur. Au lieu de lancer svn diff et d'envoyer un fichier patch (qui ne listera pas les modifications de répertoires, de liens symboliques ou de propriétés), vous pouvez utiliser svn copy pour "envoyer" votre copie de travail vers une zone privée du dépôt. Votre collaborateur peut ensuite soit extraire une copie carbone de votre copie de travail, soit utiliser svn merge pour recevoir exactement vos modifications.
Paragraphe 7
While this is a nice method for uploading a quick snapshot of your working copy, note that this is not a good way to initially create a branch. Branch creation should be an event unto itself, and this method conflates the creation of a branch with extra changes to files, all within a single revision. This makes it very difficult (later on) to identify a single revision number as a branch point.
Bien que ce soit une jolie méthode pour mettre à disposition un instantané rapide de votre copie de travail, remarquez que ce n'est pas une bonne manière de créer une branche initialement. La création de branche devrait être un évènement en soi, et cette méthode combine la création d'une branche avec des modifications supplémentaires apportées aux fichiers, le tout au sein d'une seule révision. Ceci rend très difficile (à terme) d'identifier un unique numéro de révision en tant que point de création de la branche.

