Utiliser Subversion en local

2008-11-06 #svn

Pour compléter ma catégorie Subversion, je vais décrire ce que je fais habituellement quand je veux passer un de mes projets personnel en "local" sous Subversion (au moins la prochaine fois je n'aurai pas à réfléchir pour savoir comment faire). Dans ce cas, j'utilise uniquement TortoiseSVN, sans avoir besoin d'installer autre chose sur le poste de travail.

Si on s'en tient à la documentation, c'est quelque chose de très simple : il suffit de créer un dépôt Subversion, d'y importer notre projet, de supprimer le projet d'origine puis de le ré-extraire à partir du dépôt pour disposer d'une copie de travail versionnée.

Mais généralement, je ne vais pas forcément versionner tous les fichiers présents dans les répertoires de mon projet et par conséquent le fait d'enchainer une suppression et une extraction me fera perdre des fichiers :

  • Ceux qui seront re-créés par compilation : pas de problème
  • Les autres : le web.config, quelques fichiers de paramètres, éventuellement la base de données Access…

Sans compter que dans le cas d'un projet web, la suppression du répertoire projet n'est pas toujours possible puisqu'il correspond à un répertoire virtuel pour IIS et que même quand on y arrive, cela oblige à redonner les droits qui vont bien sur chaque répertoire.

Par conséquent, la "bonne" solution, c'est de ne pas importer le dépôt mais de l'extraire immédiatement après sa création sur le répertoire du projet d'origine puis d'ajouter les fichiers du projet au dépôt.

Etape 1 : Créer un dépôt Subversion

Pour passer un projet sous Subversion, il faut commencer par créer un "repository" (un dépôt ou référentiel en bon français) pour y enregistrer les données nécessaires au contrôle de version.

Pour cela, il faut créer un dossier sur le disque dur et d'un coup de baguette magique transformer ce bête répertoire en "repository" Subversion.

On commence par se placer dans le répertoire où on souhaite enregistrer le dépôt Subversion : pour mes projets en local, c'est toujours D:\SVN

Il faut y créer un nouveau sous-répertoire : "Tests" par exemple

Puis faire clic-droit sur le dossier nouvellement créé puis choisir "TortoiseSVN" puis "Create repository here..."

Choisir le type "Native filesystems (FSFS)" et cliquer sur OK

On obtient alors le message "The repository was successfully created".

Si on ouvre le dossier "Tests", on constate qu'il contient maintenant un certain nombre de fichiers et de dossiers.

Le dépôt Subversion que je viens de créer est encore totalement vide. Il est stocké dans le répertoire D:\SVN\Tests et son url est file:///D:/SVN/Tests.

Etape 2 : Organiser le dépôt Subversion

Avant de remplir mon dépôt Subversion, il faut d'abord organiser la façon dont seront enregistrées les données dans le dépôt. Comme je ne cherche pas midi à quatorze heure, je vais simplement suivre la structure la plus standard pour un dépôt, à savoir trunk, branches et tags.

Pour cela, je fais à nouveau clic-droit sur le dossier correspondant au dépôt que je viens de créer (D:\SVN\Tests dans mon cas) pour choisir "TortoiseSVN" puis "Repo-browser".

Cela ouvre directement une fenêtre pour naviguer dans le dépôt, mais celui-ci ne contient encore rien d'autre qu'un dossier D:/SVN/Tests. Faire clic-droit sur ce dossier et choisir la commande "Create folder…"

Puis indiquer "branches" comme nouveau nom de dossier

Et accepter "Create folder remotely" comme message de log

Répéter l'opération en créant les dossiers tags et trunk.

Mon dépôt Subversion est toujours quasiment vide, mais il est désormais prêt à l'emploi.

Etape 3 : Obtenir une copie de travail du dépôt Subversion

Dans cette étape, je vais faire en sorte de "relier" le répertoire de mon projet au dépôt Subversion, de façon à ce que Subversion le considère comme un répertoire de travail de mon dépôt.

Pour cela, je quitte le répertoire D:\SVN où est stocké le dépôt pour aller dans le répertoire où est enregistrée la solution que je veux passer sous Subversion. En fait, je vais plutôt dans le répertoire contenant le répertoire où est placé le projet.

Faire clic-droit sur le répertoire de la solution, D:\Portals\Tests dans le cas présent et choisir la commande "SVN Checkout...".

Il apparaît alors la boite de dialogue suivante :

Bien vérifier que l'url du dépôt (URL of repository) et le répertoire de travail (Checkout directory) sont corrects puis valider. Étant donné que le répertoire choisi contient déjà les sources de mon projet, cela provoque l'apparition du message d'erreur suivant :

Croiser les doigts Confirmer en cliquant sur le bouton "Yes". Et là on obtient un message indiquant que l'extraction est terminée.

Le répertoire D:\Portals\Tests est désormais considéré par Subversion comme étant le répertoire de travail lié au dépôt Subversion. Par contre, les fichiers sources qui y sont enregistrés ne sont toujours pas intégrés au dépôt et par conséquent, le dépôt Subversion est toujours aussi vide qu'à la fin de l'étape précédente.

Etape 4 : Ajouter mes fichiers sources au dépôt Subversion

Cette dernière étape va consister à ajouter les fichiers de mon projet dans le dépôt Subversion.

Pour cela, il faut revenir dans le répertoire D:\Portals et faire un clic droit sur le sous-répertoire Tests et choisir "SVN Check for modification"

Il apparait un écran listant tous les fichiers enregistrés dans le répertoire D:\Portals\Tests (à l'exception de ceux ignorés par TortoiseSVN).

Sélectionner tous ces fichiers en faisant Ctrl+A puis clic-droit et choisir la commande "Add".

Après quelques secondes, la liste des fichiers est mise à jour et le contenu de la colonne "Text status" est passé de "non-versionned" à "added". Cela signifie que les fichiers sources de la solution ont bien été ajoutés au répertoire de travail.

Cependant, si je consulte le contenu de mon dépôt, il est toujours vide. Mais c'est normal. En effet, le répertoire D:\Portals\Tests n'est qu'une copie de travail du dépôt Subversion. Tout ce qui est fait dans ce répertoire n'est pas automatiquement "répercuté" dans le dépôt, mais seulement lorsque je le demanderai.

Il me reste donc à mettre à jour le dépôt à partir du répertoire de travail. Si besoin, refaire clic-droit, "SVN Check for modification", re-sélectionner tous les fichiers puis clic-droit "Commit".

Après encore quelques secondes, il apparaît un nouvel écran pour saisir un message et au-dessous la liste de tous les fichiers cochés

Taper "Importation du projet d'origine" puis valider.

Quelques dernières secondes d'attentes agrémentées par un défilement où l'on a le temps de reconnaître les différents fichiers de la solution

À ce point, j'ai créé un dépôt Subversion stocké dans D:\SVN\Tests et celui-ci contient les fichiers sources versionnés de mon projet. Par ailleurs, le répertoire D:\Portals\Tests n'est plus un simple répertoire de mon disque dur, mais il est devenu une copie de travail de mon dépôt Subversion :

  • de cette façon il y a de jolies icones qui indiquent l'état de chaque fichier source,
  • je peux valider mes modifications (SVN Commit…) ou annuler mes bêtises (TortoiseSVN puis Revert…).

En gros, je fais enfin du contrôle des sources pour mon projet Tests.

Donc, pour résumer :

  • Créer un répertoire et le transformer en dépôt Subversion
  • Organiser le contenu du dépôt Subversion
  • Extraire une copie de travail dans le répertoire du projet
  • Y ajouter les sources du projet et commiter