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 > Premier pas ! > Lecture du tutoriel

Premier pas !

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 : 4 361
Licence : Creative Commons BY-SA


Plus d'informations Plus d'informations
Voilà, plutôt que de faire une introduction longue et chi..., passons tout de suite à la pratique.
Dans cette partie nous allons voir comment récupérer les fichiers du serveur, avec et sans contrôle de version, ainsi que mettre à jour ces fichiers et envoyer les modifications au serveur.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Récupération des données

Avant de pouvoir récupérer des données, encore faut-il avoir un serveur avec des données. C'est pour cela que, rassurez-vous, j'ai préparé un petit serveur rien que pour les Zéros avec des fichiers dedans.
J'y ai mis quelques données pour le principe (qui ne servent à rien, vous allez le voir).
Et est-ce que l'on peut faire des trucs sur l'espace ?

Il n'y a pas de problème, vous pouvez tout chambouler, vous verrez qu'il n'y a rien d'important dedans. Sinon je vous aurais laissé en lecture seule.

Voilà, donc on a notre espace de données.
Je tiens à vous rassurer tout de suite, un mini-tuto viendra en annexe pour apprendre à créer son propre espace sur le web. Certains sites offrent ça gratuitement. Personnellement, j'ai créé l'espace pour le SdZ avec www.assembla.com !


Maintenant, allons-y pas à pas.

Vous pouvez, dès à présent, créer un dossier sur votre ordinateur, où seront stockés les répertoires (repository) SVN. Pour Windows ce n'est pas pareil que pour UNIX.

Sous Windows



Créez un dossier dans lequel vous allez recevoir toutes les données du repository (répertoire SVN sur le serveur).
Pour UNIX, le dossier sera créé automatiquement !

Pour Windows, une fois que vous avez créé votre dossier, il vous suffit de faire un clic-droit dessus et de cliquer sur Checkout dans le menu.
Une fois sur la fenêtre de Checkout, entrez l'URL suivante à l'endroit indiqué : http://svn.assembla.com/svn/Tuto-SdZ
Et là, quand vous validez, il va vous demander un login et un mot de passe :
login = SdZ-Guest
mdp = MySdZsvn

Image utilisateur Image utilisateur


Avant de commencer à faire des bêtises sur le SVN, sachez que l'espace est limité à 500 Mo, et que toutes les versions sont sauvegardées. Certes, elles sont compressées sur le serveur, mais ça ne fait pas beaucoup quand même. Donc je vous fais confiance pour ne pas faire transiter des énormes fichiers (programmes, images, vidéos ou autre) via le SVN. S'il y en a trop, je le fermerai, mais je ne vois pas pourquoi ça arriverait.


Une fois le login et le mot de passe renseignés, vous verrez la fenêtre de téléchargement vous mettre tous les fichiers dans votre répertoire local. Ensuite, vous pourrez aller voir les fichiers que vous venez de récupérer (on verra après comment faire pour les modifications).

Sous UNIX maintenant



Placez-vous dans le répertoire où vous voulez ajouter le repository à l'aide du terminal.
Rappel pour utiliser le terminal : "cd" permet de changer de dossier et "ls" de consulter les fichiers et dossiers présents dans le dossier courant.

Une fois dans le bon répertoire, vous lancez la commande suivante :
Code : Bash
1
svn checkout --username "SdZ-Guest" --password "MySdZsvn" "http://svn.assembla.com/svn/Tuto-SdZ"

sachant que l'on peut remplacer "checkout" par le raccourci "co" (c'est plus rapide). Ce qui donne :
Code : Bash
1
svn co --username "SdZ-Guest" --password "MySdZsvn" "http://svn.assembla.com/svn/Tuto-SdZ"


Comprenons ce qui se passe



Lors d'un checkout, que l'on peut assimiler au terme "to check it out" (vérifier), on récupère les données pour les vérifier. Il signifie également "passer à la caisse", en gros, il représente la récupération/extraction des données.
Dans le langage informatique et celui du contrôle de version, on obtient les définitions suivantes :
repository :
Dépôt de logiciels : un répertoire dans lequel Subversion stocke les informations nécessaires au contrôle des versions d'une série de projets.
Checkout :
Opération d'extraction d'une version d'un projet du repository vers un répertoire de travail local.

On demande donc ici au serveur de nous envoyer tous les documents sous contrôle de version, dans la dernière version qu'il possède (serveur et repository sont renseignés dans l'URL). Comme l'accès est restreint, on précise le login et le mot de passe d'un compte ayant les droits.
Il est possible de renseigner d'autres options comme on peut le voir sur l'IHM de TortoiseSVN. Nous verrons ces options plus tard. De même il est possible de ne pas renseigner les identifiants de connexion directement dans la ligne de commande. S'ils ne sont pas renseignés, ils seront demandés par la suite avant de télécharger les fichiers.

Pour ceux qui aiment comprendre comment fonctionne un outil !
Maintenant que nous avons téléchargé ce qui se trouve dans le repository, regardons ce que l'on peut trouver dans ces dossiers.
Bien sûr, on va trouver les données que l'on voulait télécharger. Mais si on regarde un peu plus loin (en activant l'affichage des fichiers et dossiers cachés pour Windows, ou que l'on fait des ls -a, a pour all, sous le terminal avec UNIX), on constate qu'en plus de tous les fichiers standards, on peut trouver dans chaque dossier du repository un autre dossier caché ".svn". Ce dossier sert à Subversion pour justement effectuer le contrôle de version sur les fichiers et dossiers. Il y aura sûrement une annexe sur le fonctionnement de SVN. Mais pour l'instant (et même après), on ne touche pas à ce dossier.


Maintenant, pour les utilisateurs de Windows (parfois aussi pour Mac et Linux, si vous avez certains clients installés), si vous regardez vos dossiers et fichiers en mode graphique (pas via le terminal), vous constatez OH MIRACLE, que de superbes symboles (icônes superposées) se sont rajoutés sur tous vos fichiers et dossiers sous contrôle de version.

L'icône superposée verte signifie que vous n'avez pas modifié le fichier depuis que vous l'avez récupéré sur le serveur (ce qui ne veut pas dire qu'il n'y a pas une version plus à jour sur le serveur). Sur un dossier, elle veut dire qu'aucun fichier dans le dossier n'a été modifié depuis la récupération sur le serveur.

Image utilisateur
(J'ai mis un screenshot des icônes sur mon Mac pour montrer qu'elles existent aussi.)


Si l'on regarde les screenshots que j'ai faits, on voit qu'il y a d'autres icônes. Si l'on va sur le site de TortoiseSVN, on trouve la signification de toutes ces icônes.

Image utilisateur
(Cette fois-ci c'est la version TortoiseSVN pour Windows.)


Je préciserai la signification de chaque icône au moment voulu dans la suite du tuto.

Exporter les données

Comme on vient de le voir, le contrôle de version ajoute des dossiers/données dans le répertoire local. Seulement, quand on a fini un projet, on ne veut pas forcément que ces petites icônes superposées restent sur les dossiers, ni que les dossiers cachés restent. Pour cela, il existe la fonction d'export, qui, contrairement au checkout, ne va faire que récupérer les données sans appliquer le contrôle de version.

Comme je disais, une fonction d'export, qui s'appelle brillamment... export. :waw:
Eh oui c'est sacrément compliqué SVN, pas vrai ? :D

Puisque je parle du nom de la commande, montrons tout de suite comment la lancer sous UNIX :
Code : Bash
1
svn export --username "SdZ-Guest" --password "MySdZsvn" "http://svn.assembla.com/svn/Tuto-SdZ"

Bien sûr, je montre l'exemple précis pour l'espace SdZ que j'ai créé, à partir de maintenant, je montrerai les commandes de manière générique :
Code : Bash
1
svn export --username "login" --password "mot_de_passe" "URL_du_Repository"


On retrouve les mêmes options que pour le checkout, ce n'est pas étonnant étant donné que l'on demande la même chose (enfin presque) au serveur.

C'est pareil pour Windows, en dehors du fait que l'on doit cliquer sur export et non checkout, la fenêtre de dialogue reste la même que celle du checkout.

Image utilisateurImage utilisateur


Vous pouvez maintenant vérifier dans les dossiers exportés, vous ne trouverez pas de dossiers ni de fichiers en plus des fichiers de données.

Des Updates ...

Bien sûr, s'il y a plusieurs personnes à utiliser le même serveur (travailler sur le même projet), il semble évident qu'il faut un moyen pour récupérer les données qui auraient été modifiées par certaines personnes. Avant de commencer à travailler sur un fichier, il faut systématiquement mettre à jour le fichier sur lequel on veut travailler, juste avant de travailler dessus (pour être sûr de ne pas commencer sur une version obsolète). Or une mise à jour, en anglais, on appelle ça un update. Nous avons donc notre nouvelle commande : UPDATE.

Ce n'est pas parce que l'on a une très belle icône superposée verte qui indique que les fichiers sont "normaux" que les fichiers sont à jour. Ça veut seulement dire que vous ne les avez pas modifiés depuis que vous les avez récupérés sur le serveur !


Pour UNIX



Il faut se placer dans le dossier que l'on veut updater (mettre à jour), pour updater tout le projet se mettre sur le dossier racine, et on lance la commande suivante :
Code : Bash
1
svn update [dossier_à_updater]

HOULA c'est compliqué !
Ceci dit, il se peut que vous rencontriez certains problèmes. S'il n'est pas nécessaire de renseigner le login/mdp, contrairement au checkout, c'est tout simplement que le login/mot de passe est retenu lors du checkout. Il est possible de ne pas le faire mémoriser à l'aide d'une option, mais on verra toutes les options des différentes commandes plus tard (déjà apprendre la base). Bref, si jamais vous avez besoin de renseigner votre login/mdp, il vous le fera savoir et vous demandera de les écrire avant de télécharger les fichiers à jour. Sinon vous pouvez utiliser les mêmes options que pour le checkout (--username et --password).
Si vous ne renseignez pas le dossier_à_updater, il prendra par défaut le dossier courant (comme pour chaque commande agissant sur un dossier).

Voilà, il n'y a pas besoin d'en savoir plus pour l'instant.

Pour Windows



Là non plus, ça ne va pas être compliqué. Il suffit de faire un clic-droit sur le dossier que l'on veut updater et de cliquer sur SVN update. Ni plus ni moins.
Je ne vous fais pas un screenshot, c'est vraiment trop facile. :p

... et des commits

Une fois que l'on a récupéré les données avec le contrôle de version (à l'aide d'un checkout), on veut pouvoir les modifier et renvoyer les fichiers au serveur. Pour cette action, on parle de commit (vous me verrez ensuite souvent parler de commiter pour dire que je vais faire un commit).
Si l'on va chercher la définition de commit, on obtient (entre autres) : "To put into a place to be kept safe or to be disposed of" et "To consign for future use or reference or for preservation"
En gros, mettre dans un espace pour le garder en sécurité et le mettre à disposition pour une utilisation future.

Donc, pour nous, ça va vouloir dire :
commit permet d'envoyer au serveur la nouvelle version des fichiers que l'on a modifiés depuis leur dernière récupération sur le serveur.

Pour tester, rien de plus simple.
Vous venez de récupérer les fichiers à l'aide d'un checkout, a priori vous avez donc la dernière version (si vous avez fait le checkout il y a longtemps, utilisez la commande update pour mettre vos fichiers à jour).

Vous prenez un fichier au hasard (enfin qui fasse quand même partie des fichiers sous contrôle de version :D ) et vous le modifiez (ajoutez une phrase au début, comme ça vous vous repèrerez facilement). Ensuite, vous sauvegardez et revenez sur l'explorateur de documents.

On constate que l'icône superposée est maintenant un "!" rouge :
Image utilisateur

Cette icône veut dire que le fichier a été modifié et que vous possédez une version du fichier que le serveur n'a pas. Mais si l'on revient au dossier parent (contenant le fichier modifié), on constate qu'il possède cette icône rouge aussi, ça veut dire que le contenu du dossier (au moins un fichier), n'est pas le même que celui sur le serveur.
Il faut donc lui envoyer les modifications que l'on a apportées.

Pour Windows



Clic-droit sur le fichier ou n'importe quel dossier parent (faisant partie des dossiers sous contrôle de version) du fichier.

Image utilisateur Image utilisateur


Dans mon cas, j'ai cliqué sur le dossier racine. On voit dans la fenêtre que je peux laisser un message, et que le fichier modifié apparaît dans une liste où l'on peut le décocher.
Les commentaires pourront ensuite être lus par les autres membres du groupe de travail lorsqu'ils récupèreront les fichiers du serveur.

Les commentaires



Ces commentaires sont très utiles, et je vous encourage très vivement à en laisser un pour que le suivant qui récupère les données, d'un simple coup d'oeil sur les commentaires laissés, puisse savoir ce qui a été fait sur les fichiers.

Exemple de commentaire utile :
Correction orthographique du compte rendu final.

Exemple de commentaire débile :
J'ai modifié le compte rendu final.

Pourquoi dire quels fichiers ont été modifiés n'est pas utile ?

Tout simplement parce que lors du téléchargement des fichiers sur le serveur, on sait quels fichiers ont été modifiés/créés/supprimés. Lorsque l'on va sur la fenêtre des logs, le nom de la personne, le numéro de version lors de son commit ainsi que les fichiers qu'il a créés/modifiés/supprimés sont affichés automatiquement, le commentaire est là pour ajouter une information en plus sur ce que l'on a fait à ces fichiers.
Il est donc de l'inutile le plus complet d'ajouter dans son commentaire ce que la personne peut lire plus clairement et plus rapidement sur la fenêtre.

La liste des fichiers modifiés



Lorsque l'on clique sur un dossier pour faire un commit, la fenêtre propose de commiter tous les fichiers contenus dans ce dossier et qui ont été modifiés. Si l'on ne veut pas envoyer un de ces fichiers au serveur, il suffit de le décocher.
Si vous avez ajouté manuellement des fichiers (non versionnés) dans le dossier (versionné) la fenêtre affichera ces fichiers non versionnés, mais décochés par défaut pour ne pas les envoyer au serveur. Si vous les cochez, il les enverra au serveur comme nouveau fichier à prendre en compte dans le contrôle de version. Le prochain chapitre expliquera les différentes façons d'ajouter un fichier.

Si l'on clique sur un fichier, la fenêtre ne proposera que d'envoyer le fichier en question (s'il a été modifié). Pour être sûr d'envoyer toutes les modifications d'un seul coup, il suffit de faire un commit sur le dossier racine, au moins il prendra toutes les modifications en compte.

Pour UNIX



Eh bien pour vous c'est pareil. Il faut se mettre dans le dossier voulu (celui où il y a quelque chose à commiter ou un parent). Idéalement le dossier racine, et ensuite on lance la commande suivante :
Code : Bash
1
svn commit fichier_ou_dossier_à_commiter -m "mon_commentaire"

On peut remplacer commit par "ci", ce qui nous donne :
Code : Bash
1
svn ci fichier_ou_dossier_à_commiter -m "mon commentaire"

-m indique que l'argument suivant est le Message à mettre dans le log (journal).

Le -m "mon_commentaire" n'est, normalement, pas obligatoire. Il arrive parfois que le commit échoue parce que vous n'avez pas mis de commentaire. Vous obtiendrez un message d'erreur comme quoi SVN ne trouve pas d'éditeur externe pour obtenir le message de log. Si c'est le cas, pour passer à travers cette erreure, même si vous ne mettez pas de commentaire, mettez -m "".

On retrouve les mêmes options que pour Windows à quelques petits détails près. Les fichiers ajoutés manuellement dans le dossier à commiter et qui ne sont pas sous contrôle de version NE seront PAS envoyés au serveur.
L'argument fichier_ou_dossier_à_commiter n'est pas obligatoire. Si l'on ne met rien, il prendra par défaut le dossier courant. En revanche on peut aussi donner un nom de fichier pour ne commiter que le fichier.

Voilà, maintenant vous avez encore un peu mieux compris comment ça marche. Au prochain chapitre, on accélère le mouvement.
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%

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

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 162 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0721s (0.0613s)