Aller au menu - Aller au contenu

Icône Gérer son arborescence

L'auteur de ce cours cherche un repreneur pour continuer son travail
Parfois, certains auteurs de cours n'ont plus le temps de rédiger et de mettre à jour leur travail. Ils recherchent alors un nouvel auteur pour "reprendre" leur tutoriel (voir la liste des tutoriels en attente de repreneur).
Contactez l'auteur si vous aimeriez continuer la rédaction !

Avatar
Mise à jour : 02/05/2009
1 845 visites depuis 7 jours, dont 153 sur ce chapitre classé 74/786
Nous allons, dans ce chapitre, apprendre à gérer l'arborescence de fichiers. Nous allons donc voir :
  • comment ajouter un fichier ;
  • comment supprimer un fichier (si, si, vous ne rêvez pas) ;
  • l'ajout / suppression de dossiers ;
  • la copie et le déplacement de fichiers et de dossiers ;
  • comment renommer des fichiers et dossiers ;
  • euh... c'est tout ! :D


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

Je change ici 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. Ensuite, 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 - ce qui suit.
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. C'est-à-dire avec F2 ou un clic droit et 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 des actions qu'on ne voudra pas commiter. 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, on n'en aura 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 la trouver, il suffit de faire un drag & drop avec le clic droit d'un fichier versionné.
On obtient le choix dans la liste d'actions suivantes :

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 chapitre 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 !


Voilà, 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 : Console
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 : Console
svn mkdir Nom_du_dossier [nom_autre_dossier] [...]


Supprimer un fichier ou dossier



Code : Console
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 un dossier) et que vous avez fait add, si vous essayez de faire un delete dessus avant de commiter, il va afficher un message d'erreur stipulant qu'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 ce qui suit.

Pour la copie



Code : Console
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 : Console
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 : Console
svn export Dossier_versionne_local Dossier_destination

Et voilà, rien de plus simple.
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

Partager

2 commentaires pour "Gérer son arborescence"
Note moyenne : 3.46 / 4 (26 votes)
Pseudo Commentaire
Hors ligne Savageman # Posté le 23/06/2008 à 13:41:44
Avatar
Flux RSS

Études : INSA Lyon

Pas forcément simple de se faire la main avec ces outils, mais ça en vaut la peine !
Merci pour le tuto. :)
 
Hors ligne Hassinus # Posté le 26/08/2008 à 19:42:53
Avatar

Salut,

Bravo pour ton tuto, j'ai vraiment pris plaisir à le lire (et à pratiquer). Vivement la suite ;)

Juste une petite faute de frappe. Pour rajouter un dossier sous Linux, tu as écrit "fichier" au lieu de "repértoire" :

<citation nom="">Il est également possible de rajouter un fichier à l'aide de la commande mkdir (comme en shell). Ce qui nous donne donc :</citation>

Voilà. Je n'ai plus qu'à te souhaiter bonne chance et à bientôt.

Partagez vos expériences sur bluward.com
bluward.com
 

Voir tous les commentaires
Ce tutoriel a été corrigé par les zCorrecteurs.