SVNBOOK Chap2 Basic Work Cycle Make Changes to Your Working Copy

De Framalang Wiki.

Cette page fait partie du projet Version control with subversion.

Pseudo Code Rôle Statut
SVF Traduction Fait
Relecture
Validation


Make Changes to Your Working Copy

Make Changes to Your Working Copy

Apporter des modifications à votre copie de travail

Now you can get to work and make changes in your working copy. It's usually most convenient to decide on a discrete change (or set of changes) to make, such as writing a new feature, fixing a bug, and so on. The Subversion commands that you will use here are svn add, svn delete, svn copy, svn move, and svn mkdir. However, if you are merely editing files that are already in Subversion, you may not need to use any of these commands until you commit.

You can make two kinds of changes to your working copy: file changes and tree changes. You don't need to tell Subversion that you intend to change a file; just make your changes using your text editor, word processor, graphics program, or whatever tool you would normally use. Subversion automatically detects which files have been changed, and in addition, it handles binary files just as easily as it handles text files—and just as efficiently, too. For tree changes, you can ask Subversion to “mark” files and directories for scheduled removal, addition, copying, or moving. These changes may take place immediately in your working copy, but no additions or removals will happen in the repository until you commit them.

Vous pouvez à présent vous mettre au travail et apporter des modifications à votre copie de travail. C'est plus commode, habituellement, de partir sur une modification (ou un ensemble de modifications) précise, comme par exemple écrire une nouvelle fonctionnalité, corriger un bogue, etc... Les commandes Subversion dont vous allez vous servir pour cela sont svn add, svn delete, svn copy et svn mkdir. Cependant, si vous ne faites qu'éditer des fichiers qui sont déjà dans Subversion, vous n'aurez besoin d'aucune de ces commandes jusqu'à ce que vous propagiez vos modifications.

Vous pouvez apporter deux types de modifications à votre copie de travail : des modifications de fichier et des modifications d'arborescence. Vous n'avez pas besoin de signaler à Subversion que vous allez modifier un fichier ; faites vos changements en utilisant votre éditeur de texte, un logiciel de traitement de texte, un logiciel de graphisme, ou n'importe quel autre outil que vous utilisez d'habitude. Subversion détecte automatiquement quels fichiers ont été modifiés, et en plus il traite les fichiers binaires tout aussi facilement et tout aussi efficacement que les fichiers textes. Pour les modifications d'arborescence, vous pouvez demander à Subversion de "marquer" les fichiers et répertoires afin de programmer leur suppression, ajout, copie ou renommage. Bien que ces modifications soient immédiatement répercutées sur votre copie de travail, aucun ajout et aucune suppression ne sera répercuté sur le dépôt avant que vous ne les propagiez.

POINT OF INTEREST: Versioning Symbolic Links

Versioning Symbolic Links
Versionner des liens symboliques
On non-Windows platforms, Subversion is able to version files of the special type symbolic link (or “symlink”). A symlink is a file that acts as a sort of transparent reference to some other object in the filesystem, allowing programs to read and write to those objects indirectly by way of performing operations on the symlink itself.
When a symlink is committed into a Subversion repository, Subversion remembers that the file was in fact a symlink, as well as the object to which the symlink “points.” When that symlink is checked out to another working copy on a non-Windows system, Subversion reconstructs a real filesystem-level symbolic link from the versioned symlink. But that doesn't in any way limit the usability of working copies on systems such as Windows that do not support symlinks. On such systems, Subversion simply creates a regular text file whose contents are the path to which to the original symlink pointed. While that file can't be used as a symlink on a Windows system, it also won't prevent Windows users from performing their other Subversion-related activities.
Dans des environnements non-Windows, Subversion est capable de versionner les fichiers de type lien symbolique (ou "symlink"). Un symlink est un fichier qui agit comme une sorte de référence transparente vers un autre objet du système de fichiers, permettant à des programmes de consulter et de modifier ces objets de façon indirecte en effectuant ces opérations sur le symlink lui-même.
Quand un symlink est propagé vers un dépôt Subversion, Subversion enregistre que ce fichier était en fait un symlink, et note l'objet vers lequel il "pointait". Quand ce symlink est extrait vers une autre copie de travail sur un système non-Windows, Subversion reconstruit un véritable lien symbolique, au niveau du système de fichiers, à partir du symlink versionné. Mais ceci ne limite en aucune façon l'usage des copies de travail sur des systèmes tels que Windows, qui ne possèdent pas d'implémentation des symlinks. Sur de tels systèmes, Subversion se contente de créer un fichier texte ordinaire, qui contient le chemin vers lequel le symlink pointait à l'origine. Bien que ce fichier ne puisse être utilisé comme un symlink sur un système Windows, il n'empêche pas les utilisateurs de Windows d'effectuer leurs autres opérations Subversion.

Here is an overview of the five Subversion subcommands that you'll use most often to make tree changes:

svn add foo

Schedule file, directory, or symbolic link foo to be added to the repository. When you next commit, foo will become a child of its parent directory. Note that if foo is a directory, everything underneath foo will be scheduled for addition. If you want only to add foo itself, pass the --depth empty option.

svn delete foo

Schedule file, directory, or symbolic link foo to be deleted from the repository. If foo is a file or link, it is immediately deleted from your working copy. If foo is a directory, it is not deleted, but Subversion schedules it for deletion. When you commit your changes, foo will be entirely removed from your working copy and the repository. [4]

svn copy foo bar

Create a new item bar as a duplicate of foo and automatically schedule bar for addition. When bar is added to the repository on the next commit, its copy history is recorded (as having originally come from foo). svn copy does not create intermediate directories unless you pass the --parents option.

svn move foo bar

This command is exactly the same as running svn copy foo bar; svn delete foo. That is, bar is scheduled for addition as a copy of foo, and foo is scheduled for removal. svn move does not create intermediate directories unless you pass the --parents option.

svn mkdir blort

This command is exactly the same as running mkdir blort; svn add blort. That is, a new directory named blort is created and scheduled for addition.

Voici un aperçu des cinq sous-commandes Subversion que vous utiliserez le plus souvent pour faire des modifications sur l'arborescence :

svn add truc

Marque le fichier, le répertoire ou le lien symbolique pour ajout. Lors de la prochaine propagation, truc deviendra un fils de son répertoire parent. Notez que si truc est un répertoire, tout ce qui se trouve à l'intérieur de truc sera marqué pour ajout. Si vous ne désirez ajouter que truc lui-même, passez l'option --depth empty.

svn delete truc

Marque le fichier, le répertoire ou le lien symbolique pour suppression. Si truc est un fichier ou un lien, il est immédiatement supprimé de votre copie de travail. Si truc est un répertoire, il n'est pas supprimé, mais Subversion le marque pour suppression. Quand vous propagerez vos modifications, truc sera complètement supprimé de votre copie de travail et du dépôt [4].

svn copy truc bidule

Crée un nouvel élement bidule par duplication de truc et marque automatiquement bidule pour ajout. Lorsque bidule sera ajouté au dépôt lors de la prochaine propagation, son historique sera enregistré (comme ayant été créé à partir de truc). svn copy ne crée pas de répertoires intermédiaires, à moins que vous ne lui passiez l'option --parents.

svn move truc bidule

Cette commande équivaut exactement à svn copy truc bidule; svn delete truc. C'est-à-dire que bidule est marqué pour ajout en tant que copie de truc, et truc est marqué pour suppression. svn move ne crée pas de répertoires intermédiaires, à moins que vous ne lui passiez l'option --parents.

svn mkdir blort

Cette commande équivaut exactement à mkdir blort; svn add blort. C'est-à-dire qu'u nouveau répertoire nommé blort est créé et marqué pour ajout.

POINT OF INTEREST: Changing the Repository Without a Working Copy

Changing the Repository Without a Working Copy
Modifier le dépôt sans copie de travail
There are some use cases that immediately commit tree changes to the repository. This happens only when a subcommand is operating directly on a URL, rather than on a working-copy path. In particular, specific uses of svn mkdir, svn copy, svn move, and svn delete can work with URLs (and don't forget that svn import always makes changes to a URL).
URL operations behave in this manner because commands that operate on a working copy can use the working copy as a sort of “staging area” to set up your changes before committing them to the repository. Commands that operate on URLs don't have this luxury, so when you operate directly on a URL, any of the aforementioned actions represents an immediate commit.
Dans certains cas, les modifications d'arborescence sont propagées immédiatement vers le dépôt. Cela n'arrive que quand une sous-commande opère directement sur une URL, et non sur le chemin d'une copie de travail. En particulier, certains usages de svn mkdir, svn copy, svn move et svn delete peuvent fonctionner avec des URLs (et n'oubliez pas que svn import agit toujours sur une URL).
Les opérations sur les URLs se comportent de cette manière parce que les commandes qui opèrent sur une copie de travail peuvent utiliser la copie de travail comme une sorte de "zone de transit" pour y préparer vos modifications avant de les propager vers le dépôt. Les commandes qui opèrent sur des URLs ne disposent pas d'un tel luxe, donc quand vous opérez directement sur une URL, toute action mentionnée ci-dessus est propagée immédiatement.
Outils personnels