Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Programmation > Environnements de développement > Gérez vos projets à l'aide du gestionnaire de versions Subversion > Les bases - Utilisations des clients > Gérer son arborescence > Lecture du tutoriel

Gérer son arborescence

Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Avatar
Auteur : Dalshim
Note : 19 / 20 (2 votes)
Visualisations : 2 727

Plus d'informations Plus d'informations
Nous allons, dans ce mini-tuto, apprendre à gérer l'arborescence de fichiers. Nous allons donc voir :


Parce que c'est vrai que mettre à jour des données c'est bien mignon, mais s'il n'y a personne pour ajouter des fichiers au début ... On n'ira pas très loin... :lol:

Commençons !
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

La gestion avec Windows

Alors, je change un peu de méthode parce que cette fois-ci, contrairement aux autres commandes, c'est très différent entre TortoiseSVN et le terminal. Bref, petit changement de façon de faire, mais sans grande incidence.

Création de fichiers et de dossiers



Vous allez voir que c'est difficile de faire plus simple que cela.

Vous créez vos fichiers / dossiers comme vous l'avez toujours fait dans l'exploreur. Une fois faits, vous sélectionnez les fichiers / dossiers que vous voulez rajouter, et il suffit de faire un clic-droit >> TortoiseSVN >> "Add". Et voilà, compliqué n'est-ce pas !
Attention, une fois que vous avez fait le Add, les fichiers ne sont pas encore envoyés au serveur, ils sont seulement indiqués comme des fichiers qu'il va falloir rajouter sur le serveur. Pour les envoyer définitivement, il faut faire un commit.


Ce qui nous donne d'un point de vue icône :
Fichier créé : Image utilisateur
Fichier ajouté : Image utilisateur
Fichier commité : Image utilisateur

Suppression de fichier / dossier (et renommage aussi ? )



On va supprimer le fichier que l'on vient de créer, mais on va le renommer avant !

Renommage : clic-droit, TortoiseSVN, Rename ...

Encore une fois la difficulté est au rendez-vous !
Une ÉNORME erreur consiste à renommer de la manière habituelle. Avec F2 ou clic-droit renommer. Parce que SVN va interpréter ça comme, il me manque un fichier et j'en ai un en plus. Donc au commit, il va dire qu'il manque un fichier et ne va pas rajouter l'autre parce que vous ne l'aurez pas ajouté.


Maintenant qu'on a vu comment renommer, il ne reste plus qu'à savoir supprimer !
Attention grosse difficulté en perspective (encore une fois) : clic droit >> TortoiseSVN >> Delete.
On voit à nouveau que le fichier n'est pas supprimé mais qu'une croix rouge apparaît comme ici : Image utilisateur
Cette croix rouge signifie qu'au prochain commit, de même que le ?+? bleu va rajouter le fichier sur le serveur, le fichier ne va plus faire partie des versions suivantes sur le serveur.

Certains auront remarqué qu'il y a une autre méthode (peut être même plus rapide) offerte par l'interface de TortoiseSVN. Même si elle est plus rapide, je la déconseille parce qu'elle ne reflète pas ce qui se passe vraiment. Mais bon je vais quand même la présenter.
Si vous ajoutez ou supprimez normalement un fichier, au moment du commit, TortoiseSVN va vous lister toutes les actions qu'il va commiter, il est possible de décocher les cases pour ne pas commiter certaines actions. En revanche, TortoiseSVN présente aussi toutes les actions qu'il ne va pas commiter (comme les fichiers non versionnés ou les fichiers supprimés). Il suffit de cocher la case à côté pour qu'il les prenne en compte !


Image utilisateur


Copie, déplacement, export



Encore une fois, faire un copier-coller de fichier versionné n'est pas très efficace puisque ces fichiers correspondront toujours à la même URL sur le SVN et donc les deux copies feront des commit au même endroit sur le serveur. Implication directe, même si l'on a deux copies sur le client, pas sur le serveur donc ça ne sert à rien.
Comment faire pour déplacer et copier subtilement des fichiers alors ?

En utilisant la fonction de copie du SVN. Pour le trouver, il suffit de faire un drag & drop avec le clic-droit d'un fichier versionné.
On obtient le choix dans la liste d'action suivante :

Image utilisateur


Move permet de déplacer le fichier, on peut aussi le renommer au passage.
Copy permet de créer une copie du fichier (le fichier sera aussi copié sur le serveur), à nouveau on peut renommer au passage.
Export permet d'exporter les fichiers (comme vu dans le mini-tuto précédent).
Je n'ai pas très bien compris la différence entre export et export all ! Dans le doute moi j'utilise export, si quelqu'un trouve la différence, je suis intéressé

TortoiseSVN est bien fait, il ne vous propose les options que quand c'est possible, si vous essayez de faire une copie ou un déplacement du fichier en dehors du répertoire de travail, il ne va pas vous proposer la commande !


Voila, c'est tout pour TortoiseSVN, je vous conseille quand même de lire la partie pour UNIX pour comprendre comment ça se passe.

et sous UNIX

Commençons maintenant avec la ligne de commande. Désolé mais ce ne sera pas aussi simple (encore que ce ne sera pas compliqué non plus :p ).

Ajout et suppression



Prenez l'habitude de penser que pour toutes les commandes SVN agissant sur un dossier, elle agissent par défaut sur le dossier courant sauf si l'on rentre le chemin vers un autre dossier / fichier dans la commande.


Ajouter un fichier ou un dossier :



Code : Bash
1
svn add [fichiers_ou_dossiers_a_ajouter]

Si l'on ajoute un dossier, il va agir récursivement et ajouter toute l'arborescence à partir du dossier. Si l'on ne veut pas utiliser le fait qu'il ajoute l'arborescence, il faut rajouter l'option -N pour "Non récursif".

Il est également possible de rajouter un fichier à l'aide de la commande mkdir (comme en shell). Ce qui nous donne donc :
Code : Bash
1
svn mkdir Nom_du_dossier [nom_autre_dossier] [...]


Supprimer un fichier ou dossier :



Code : Bash
1
svn delete [fichier_ou_dossier_a_supprimer] [--force]

Cette commande a plusieurs noms, on peut mettre delete, remove, del ou rm.

Si vous venez de créer un fichier (ou dossier) et que vous avez fait add, si vous essayez de faire un delete dessus avant de commiter, il va vous mettre un message d'erreur comme quoi il faut utiliser --force dans les options. Cette option --force sert comme son nom l'indique à forcer la commande, même si le SVN râle !

Ces deux commandes n'agissent que sur le répertoire local (la working copy). Il faut ensuite faire un commit pour valider les changements sur le serveur.

Si l'on regarde l'aide SVN (--help), on constate que pour le delete, il est également possible de renseigner une URL !

Code : Bash
1
svn rm URL [--username] [--password]

Cette commande agit directement sur le serveur SVN et donc effectue un commit immédiat. Bien sûr, du fait que l'on agit sur le serveur, tous les arguments d'authentification sont disponibles.

Copie, déplacement, renommage, export



Cette partie va également être très simple étant donné que les commandes sont les mêmes qu'en shell (mais avec un SVN devant). Nous obtenons donc,

Pour la copie



Code : Bash
1
svn copy (ou cp) Dossier_a_copier Emplacement_ou_copier

Si vous regardez dans le manuel de copy, il est possible de faire différentes sortes de copy avec des PATH ou des URL. L'utilisation de l'URL est là pour agir directement sur le serveur (donc de faire un commit immédiat) On voit aussi qu'il parle de branche avec une copy d'URL à URL, nous verrons l'utilisation des branches dans une autre partie (utilisation avancé du SVN). Pour l'instant je vous conseille de n'utiliser que la version locale (faire une copy sur votre répertoire de travail local et le commiter après) pour être sûr de ne pas faire de bêtise avant de commiter.

Et pour le déplacement



Code : Bash
1
svn mv (ou move, ren et rename) Dossier_ou_fichier_source Dossier_ou_fichier_destination

Il n'y a pas grand chose à dire sur les options spéciales de cette commande. Faire un move revient au même que de faire une copie suivie d'un delete. En revanche, il est vrai que cette commande sert également à renommer. Pour renommer, il suffit de mettre le nom complet de la cible à la place du dossier dans lequel le déplacer. Exemple :
Code : Bash
1
svn mv Dossier\ 1/fichier1.txt Dossier\ 1/fichier2.txt

Cette commande renomme le "fichier1.txt" présent dans le "Dossier 1" en "fichier2.txt" (pas de déplacement, il reste dans le "Dossier 1")

Enfin pour l'export



Eh bien oui, on revient à la commande export pour vous montrer qu'il n'est pas nécessaire d'exporter depuis le repository mais que l'on peut également exporter depuis ses répertoires locaux.
Code : Bash
1
svn export Dossier_versionne_local Dossier_destination

Et voila, rien de plus simple.

Et voilà, vous avez maintenant presque toutes les clefs en main. Prochain chapitre, on apprend à résoudre les conflits et vous pourrez vous servir du SVN sans aucun souci (ou presque :lol: ).
Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 13/05/2008 à 14:06:06
Modifié : le 11/11/2008 à 13:04:19
Avancement : 100%
Licence : Creative Commons BY-SA

L'orthographe, la grammaire et la présentation de ce tutoriel ont été vérifiées par les zCorrecteurs.

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 171 Zéros connectés | Requêtes SQL 9 requêtes | Temps de génération de la page : Total (SQL) 0.0219s (0.0107s)