blog.pagesd.info

Aller au contenu | Aller au menu | Aller à la recherche

mardi 6 janvier 2009

Gérer les fichiers d'un dépôt Subversion : supprimer

Ce qui est important pour supprimer un fichier, c'est de ne pas faire ça directement dans Visual Studio mais de passer par TortoiseSVN pour que la suppression du fichier soit correctement prise en compte par Subversion.

1° étape : supprimer le fichier du projet

Dans l'explorateur de solution de Visual Studio, faire un clic-droit sur le fichier Extract.cs puis choisir la commande Exclure du projet (et surtout pas Supprimer).

Suite à cela, recompiler le projet puis le sauvegarder => Visual Studio aura bien compris que le fichier Extract.cs ne fait plus partie du projet, même s'il existe encore physiquement sur le disque dur.

2° étape : supprimer le fichier du répertoire de travail

Il faut maintenant expliquer à TortoiseSVN que le fichier Extract.cs n'a plus de raison d'exister et qu'il doit donc disparaitre des fichiers versionnés.

Pour cela, il faut aller dans l'explorateur de fichiers de Windows, dans le répertoire D:\Portals\Tests pour faire un clic-droit sur le fichier Extract.cs pour choisir la commande TortoiseSVN puis la sous-commande Delete :

01-fichier-supprimer.png

Le fichier Extract.cs est alors immédiatement supprimé du répertoire de travail D:\Portals\Tests et il n'est plus géré par TortoiseSVN côté client. Par contre il existe toujours dans le dépôt Subversion côté serveur.

3° étape : supprimer le fichier du dépôt Subversion

Si on veut que le fichier Extract.cs disparaisse du dépôt Subversion (notamment pour que les autres utilisateurs du dépôt sachent qu'il a été supprimé), il reste à effectuer un commit.

Faire un clic-droit sur le répertoire D:\Portals\Tests et choisir l'option "SVN Commit..."

02-fichier-supprimer.png

Comme dans le cas de l'ajout d'un fichier dans le dépôt Subversion, il est important de bien vérifier que le fichier supprimé est mentionné mais aussi que le fichier projet apparait dans la liste puisqu'il a été modifié suite à l'exclusion du fichier Extract.cs.

Saisir un message expliquant la modification apportée au projet et valider :

03-fichier-supprimer.png

Ca y est, le fichier Extract.cs a été définitivement supprimé du dépôt Subversion commen en témoigne l'action "Deleting D:\Portals\Tests\Extracts.cs".

mercredi 24 décembre 2008

Gérer les fichiers d'un dépôt Subversion : renommer

Pour ajouter un fichier ou le modifier, ce n'est pas si compliqué que ça : on fait comme d'habitude, puis on en rajoute un peu pour que ça soit pris en compte par Subversion.

Par contre, quand on a besoin de renommer un fichier, il ne faut surtout pas faire comme d'habitude, mais perdre ses automatismes et faire différemment.

1° méthode : la mauvaise

Dans l'explorateur de solution de Visual Studio, faire clic-droit sur NouvelleClasse.cs pour le renommer en Extract.cs. On recompile la solution puis on la sauvegarde. Si on va dans l'explorateur de fichiers Windows, on a maintenant :

01-fichier-ko-renommer.png

  • le fichier CheckUrls.csproj est marqué d'un point d'exclamation rouge puisque son contenu a changé (il contenait auparavant un fichier NouvelleClasse.cs et maintenant un fichier Extract.cs)
  • le fichier Extract.cs n'a pas de marque car il n'a pas été intégré au répertoire de travail

Il faut donc :

  • ajouter le fichier Extract.cs au répertoire de travail (clic-droit, TortoiseSVN, Add..., OK, OK)
  • mais aussi supprimer le fichier NouvelleClasse.cs du répertoire de travail (clic-droit, "SVN Check for modification", clic-droit sur NouvelleClasse.cs, Delete)

02-fichier-ko-renommer.png

  • commiter les modifications apportées au projet D:\Portals\Tests (clic-droit, SVN Commit...)

03-fichier-ko-renommer.png 04-fichier-ko-renommer.png

Le souci avec cette méthode, c'est que en ce qui concerne Subversion, la vie du fichier Extract.cs vient juste de commencer et qu'il ne fait absolument pas le lien avec fichier NouvelleClasse.cs qui vient d'être supprimé. Par conséquent, il sera incapable de me donner l'historique des modifications apportés depuis la création du fichier NouvelleClasse.cs

2° méthode : la bonne

C'est pourquoi il existe une autre méthode, un peu moins naturelle, mais beaucoup plus avantageuse.

  • Dans l'explorateur de solution de Visual Studio, faire un clic-droit sur le fichier NouvelleClasse.cs et choisir de l'exclure du projet (le plus dur c'est de perdre l'habitude de choisir Renommer)
  • Dans l'explorateur de fichiers Windows, faire un clic-droit sur le fichier NouvelleClasse.cs, choisir TortoiseSVN puis l'option Rename...

05-fichier-ok-renommer.png

  • Et indiquer Extract.cs comme nouveau nom de fichier puis valider

06-fichier-ok-renommer.png

  • Repasser dans l'explorateur de solution de Visual Studio, faire un clic-droit sur le projet et ajouter un élément existant, en l'occurrence le fichier Extract.cs

Une fois cela terminé sans se planter, on peut souffler un peu avant de recompiler le projet et sauver le tout. Si on revient dans l'explorateur de fichiers de Windows, on peut constater que les 2 fichiers CheckUrls.csproj et Extract.cs sont repérés.

07-fichier-ok-renommer.png

C'est mieux qu'avec la mauvaise méthode : on n'a même pas à ajouter Extract.cs et à supprimer NouvelleClasse.cs du répertoire de travail. Comme quoi, quand on fait les choses bien, on est toujours gagnant.

Et pour finir, il ne reste plus qu'à commiter les modifications d'un clic-droit sur le répertoire D:\Portals\Tests suivi de "SVN Commit..." :

08-fichier-ok-renommer.png

Par rapport à la mauvaise méthode, on peut constater que le statut du fichier est "added (+)" au lieu d'un simple "added".

09-fichier-ok-renommer.png

Et ce coup-ci, si on consulte l'historique du fichier Extract.cs (clic-droit sur le fichier puis TortoiseSVN et "Show Log", on peut vérifier que du point de vue de Subversion, il n'y a pas eu disparition d'un fichier et apparition d'un nouveau fichier mais que c'est toujours le même fichier NouvelleClasse.cs qui a juste subi un changement de nom.

10-fichier-ok-renommer.png

Note : bien entendu, vous ne devez pas essayer de faire la mauvaise méthode chez vous.

mardi 23 décembre 2008

Gérer les fichiers d'un dépôt Subversion : modifier

Juste pour être exhaustif dans ma série concernant la gestion des fichiers dans Subversion, voici comment procéder quand on modifie le code d'un des fichiers sources du projet. Par rapport à l'ajout de fichiers, il n'y a que 2 étapes.

1° étape : modifier le fichier localement

Supposons qu'il y ait un bug dans la classe NouvelleClasse.cs. Après en être venu à bout dans Visual Studio et avoir vérifié que le problème est bien résolu et que cela ne provoque pas d'autre erreur, je sauvegarde ma solution.

  • les sources du projet sont à jour
  • le répertoire de travail est à jour : le fichier NouvelleClasse.cs est marqué de rouge pour indiquer que son contenu a été modifié

01-fichier-modifier.png

2° étape : envoyer le fichier modifié dans le dépôt Subversion

Faire un clic-droit sur le répertoire D:\Portals\Tests et choisir l'option "SVN Commit..."

02-fichier-modifier.png

Puis valider pour que le fichier soit mis à jour dans le dépôt Subversion et que les autres développeurs puissent profiter de la correction apportée.

Gérer les fichiers d'un dépôt Subversion : ajouter

Dans ce billet, je reviens sur l'ajout d'un fichier dans un dépôt Subversion pour bien mettre en évidence les 3 étapes qui sont nécessaires pour y parvenir.

1° étape : ajouter le fichier dans le projet

Dans l'explorateur de solution de Visual Studio, faire un clic-droit sur le projet puis Ajouter / Ajouter une classe et créer la classe NouvelleClasse.cs puis sauvegarder la solution.

Pour l'instant, seul Visual Studio est "au courant" de l'ajout de ce fichier.

2° étape : ajouter le fichier dans le répertoire de travail

Il faut donc ajouter spécifiquement le nouveau fichier sous TortoiseSVN pour qu'il fasse partie des fichiers versionnés.

Comme cela a déjà été vu, cet ajout peut se faire en faisant :

  • clic-droit sur le répertoire D:\Portals\Tests et choisir l'option "SVN Check for modification"
  • clic-droit sur le fichier NouvelleClasse.cs et sélectionner "Add" pour faire passer son statut de "non-versioned" à "added"

Ou alors, on peut faire directement ça depuis l'explorateur de fichiers de Windows avec un clic-droit sur le nouveau fichier NouvelleClasse.cs et choisir la commande "Add..."

01-fichier-ajouter.png

Puis sélectionner le ou les fichiers à ajouter :

02-fichier-ajouter.png

Et valider en cliquant sur le bouton [OK] :

03-fichier-ajouter.png

Désormais, le fichier NouvelleClasse.cs a été ajouté au répertoire de travail et il est donc pris en compte par TortoiseSVN côté client, mais pas encore intégré au dépôt Subversion côté serveur.

3° étape : ajouter le fichier au dépôt Subversion

Si on veut que le fichier NouvelleClasse.cs apparaisse dans le dépôt Subversion et que les autres utilisateurs du dépôt puisse enfin voir ce nouveau fichier, il reste à réaliser un commit.

Faire un clic-droit sur le répertoire D:\Portals\Tests et choisir l'option "SVN Commit..."

04-fichier-ajouter.png

Là, il faut bien faire attention et vérifier que notre nouveau fichier apparait (encore heureux), mais aussi que le fichier projet est présent dans la liste puisqu'il a été modifié pour intégrer un nouveau fichier. Quand ce n'est pas le cas, c'est généralement parce qu'on a oublié de sauvegarder la solution !

Saisir un message descriptif de la modification apportée et valider :

05-fichier-ajouter.png

Ca y est, le dépôt Subversion contient un fichier de plus.

Note : dans la vrai vie, il aurait fallu recompiler le projet et vérifier que tout fonctionnait avant de faire le commit !

vendredi 19 décembre 2008

Créer un tag dans Subversion

Pour archiver et graver dans le marbre une version sous Subversion, on doit créer un nouveau tag qui permettra plus tard de retrouver les sources du projet dans l'état où ils étaient lorsqu'on a créé le tag.

Pour cela, on va créer une nouvelle étiquette dans la partie "tags" de notre dépôt et lui donner le nom de notre version :

  • faire un clic-droit sur le répertoire de travail D:\Portals\Tests
  • choisir le menu TortoiseSVN puis le sous-menu Branch/tag...

01-tag.png

Il apparait alors la boite de dialogue permettant de créer une branche (branch) ou une étiquette (tag). Dans le champ "To URL :", remplacer le chemin "file:///D:/SVN/Tests/trunk" de la façon suivante :

  • supprimer "trunk"
  • saisir "tags"
  • puis "/version 1.0.1"

Ce qui donne : "file:///D:/SVN/Tests/tags/version 1.0.1"

02-tag.png

Dans la zone "Log Message", saisir le message "Création d'un tag pour la version 1.0.1 de Tests du 19 décembre 2008".

Pour finir, cliquer sur le bouton [OK] pour valider le nouveau tag :

03-tag.png

C'était vraiment pas compliqué.

jeudi 18 décembre 2008

Sauvegarder un dépôt Subversion

SvnAdmin dump

Jusqu'à présent, je sauvegarde mon dépôt Subversion en faisant un dump de celui-ci, à l'aide de la commande :

SvnAdmin dump D:\SVN\PI -q > PI_svn.dump

Puis je le compacte à l'aide de WinRAR :

"C:\Program Files\WinRAR\Rar" a -idq -m5 -s -t -ep1 PI_svn.rar PI_svn.dump D:\SVN\PI\conf\*.* D:\SVN\PI\hooks\*.bat

Et pour finir, je copie le fichier PI_svn.rar sur un disque externe.

Je ne sais si c'est la "meilleure" ni même la "bonne" façon de faire, mais étant donné que je connaissais la commande "SvnAdmin dump", je n'avais pas trop cherché à savoir ce qui se faisait d'autre.

Mais ce matin, j'ai voulu faire ça sur un vrai dépôt Subversion distant et ça n'a pas marché.

SvnAdmin dump svn://srv02-svn/replu/ -q > replu.dump

A quoi on m'a répondu :

svnadmin: 'svn://srv02-svn/replu/' is an URL when it should be a path

Ca a été l'occasion de faire un petit tour des différentes méthodes possibles pour sauvegarder un dépôt.

SvnAdmin hotcopy

Par rapport à un dump, cette commande est censée être beaucoup plus rapide et surtout, elle intègre tout le dépôt (y compris la configuration du serveur et les scripts de hook) et pas seulement les commits effectués comme c'est le cas avec la commande "SvnAdmin dump".

Je commence par faire une "copie à chaud" du dépôt distant sur mon poste :

SvnAdmin hotcopy \\srv02-svn\d$\repositories\replu D:\SVN\replucopy

C'est effectivement très rapide (mais ça ne marche que parce que j'ai les droits d'accès au serveur qui stocke les dépôts Subversion).

Puis je le compacte à l'aide de WinRAR :

"C:\Program Files\WinRAR\Rar" a -idq -m5 -s -t -ep1 replucopy_svn.rar D:\SVN\replucopy

Dans ce cas, je peux compacter le contenu du répertoire D:\SVN\replucopy puisqu'il s'agit d'une copie du dépôt d'origine et que personne n'accède à cette copie. Je n'aurais pas pu compacter directement le contenu de \\srv02-svn\d$\repositories\replu parce qu'il y avait un risque que quelqu'un mettre à jour le dépôt "replu" pendant ce temps.

Par ailleurs, le fichier replucopy_svn.rar obtenu est beaucoup plus volumineux que si j'avais fait un dump, mais c'est normal puisqu'il contient plus de choses qu'un simple dump.

Le problème avec cette méthode, c'est qu'il faut avoir un accès "fichier" au dépôt (comme c'est le cas pour toutes les commandes de SvnAdmin apparament).

SvnSync

Depuis Subversion 1.4, il existe un nouvel utilitaire SvnSync destiné à faire des réplications d'un dépôt vers un autre. Un de ses avantages est de pouvoir accéder aux dépôts en mode "direct" (fichiers) ou distant (via une url).

Un de ses défauts, c'est que ce n'est pas très évident de trouver de la documentation dessus, et encore moins quand on veut faire ça sous Windows. Mais j'ai quand même réussi à trouver le billet svnsync: mirror your svn repository sur le blog de Thomas Guest.

Pour commencer, il faut créer un dépôt local pour y synchroniser le contenu du dépôt distant :

SvnAdmin create D:\SVN\replusync

Puis il faut créer un script pre-revprop-change.bat vide :

ECHO REM > D:\SVN\replusync\hooks\pre-revprop-change.bat

Ce script ne fait absolument rien, mais il semble être attendu par SvnSync (todo : tester voir ce qui se passe sans ce script)

type D:\SVN\replusync\hooks\pre-revprop-change.bat
REM

Ensuite, on initialise le dépôt local (D:\SVN\replusync) pour qu'il devienne un "miroir" du dépôt distant (svn://srv02-svn/replu/) :

SvnSync init file:///D:/SVN/replusync svn://srv02-svn/replu/
Copied properties for revision 0.

Et pour finir, on synchronise le dépôt local pour que son contenu corresponde à celui du dépôt distant :

SvnSync sync file:///D:/SVN/replusync 
Committed revision 1.
Copied properties for revision 1.
Committed revision 2.
Copied properties for revision 2.
 ...
Committed revision 1234.
Copied properties for revision 1234.

C'est beaucoup plus long qu'une commande "SvnAdmin hotcopy", mais ça marche. Et ça y est, mon dépôt local D:/SVN/replusync est une copie presque parfaite du "vrai" dépôt Subversion (il n'y a pas la configuration et les hooks) que je n'ai plus qu'à zipper :

"C:\Program Files\WinRAR\Rar" a -idq -m5 -s -t -ep1 replusync_svn.rar D:\SVN\replusync

L'autre avantage de l'utilitaire SvnSync, c'est que pour la prochaine sauvegarde, je n'aurai qu'à lancer une ligne de commande pour re-synchroniser mon dépôt local :

SvnSync sync file:///D:/SVN/replusync 

Et si j'y tenais vraiment, je n'aurais qu'à automatiser cette commande dans une tâche planifiée pour que mon dépôt local soit régulièrement synchronisé avec le dépôt distant.

Mais dans mon cas, l'objectif était simplement de faire une sauvegarde personnelle avant de partir en vacances, parce que certains vont profiter de la fin d'année pour migrer le serveur Subversion de la version 1.4.7 à la version 1.5.4.

mercredi 12 novembre 2008

Ajout de fichiers au dépôt Subversion

Je continue ma série "je débute petit pas par petit pas avec Subversion" (destiné principalement à Gérald qui connait déjà SourceSafe et qui doit impérativement mettre en place Subversion sur son site internet d'échange d'appartement à la montagne).

Sur le projet Tests, si je décide par exemple de sortir la fonction de récupération des pages html du fichier source principal, je vais sous Visual Studio :

  • ajouter une classe Utils.cs
  • copier quelques lignesde code de Start.cs dans Utils.cs
  • compiler et vérifier que tout marche

Puis ensuite, je vais mettre à jour le dépôt Subversion à l'aide de TortoiseSVN :

  • clic-droit sur le répertoire D:\Portals\Tests
  • option "SVN Check for modification"

01-check.png

Le fichier CheckUrls.csproj a été modifié. Normal : le fichier source Utils.cs a été ajouté au projet

Le fichier Start.cs a été modifié. Normal : une partie du code de la procédure GetUrl() a été déplacée dans Utils.cs

Le fichier Utils.cs est marqué comme "non-versionné". Normal : celui-ci a bien été ajouté au projet par Visual Studio, mais TortoiseSVN ne le sait pas.

Il faut donc commencer par ajouter "manuellement" ce fichier au contrôle de source :

  • clic-droit sur le fichier Utils.cs depuis TortoiseSVN
  • option "Add"

02-add.png

Le fichier Utils.cs est désormais marqué comme "added".

03-added.png

Maintenant, il ne reste plus qu'à valider les modifications effectuées pour mettre à jour le dépôt Subversion. En effet, pour l'instant ces différentes modifications n'existent qu'au niveau du répertoire de travail. Donc, toujours sous TortoiseSVN, il faut :

  • sélectionner les 3 fichiers CheckUrls.csproj, Start.cs et Utils.cs
  • clic-droit puis choisir l'option "Commit"

04-commit.png

Puis saisir un message décrivant les modifications apportées :

05-message.png

Et enfin valider => on obtient le récapitulatif des opérations commitées :

06-finished.png

Ce qui signifie :

  • j'ai modifié 2 fichiers (CheckUrls.csproj et Start.cs)
  • j'ai ajouté 1 fichier (Utils.cs)
  • 3 fichiers ont été envoyés du répertoire de travail vers le dépôt Subversion (CheckUrls.csproj, Start.cs et Utils.cs)
  • le tout constituant la révision n° 5 du dépôt file:///D:/SVN/Tests

jeudi 6 novembre 2008

Utiliser Subversion en local

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..."

01-create.png

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

02-filesystem.png

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

03-created.png

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

04-inside.png

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".

05-browse.png

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…"

06-folder.png

Puis indiquer "branches" comme nouveau nom de dossier

07-branches.png

Et accepter "Create folder remotely" comme message de log

08-remotely.png

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

09-org.png

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...".

10-co-menu.png

Il apparaît alors la boite de dialogue suivante :

11-co-dlg.png

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. Etant donné que le répertoire choisi contient déjà les sources de mon projet, cela provoque l'apparition du message d'erreur suivant :

12-co-alert.png

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

13-co-end.png

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"

14-check.png

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".

15-working.png

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.

16-added.png

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".

17-commit.png

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.

18-message.png

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

19-commited.png

A 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 :

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

lundi 20 octobre 2008

Ceci n'est pas du Subversion

Petite frayeur après l'apparition des icônes recouvrées de Subversion dans des répertoires qui ne sont normalement pas sous contrôle de source. Sans compter que les répertoires cachés "_svn" étaient introuvables et qu'avec un clic-droit je n'avais pas non plus les options attendues pour Subversion.

Quoi ? Y'a mon Tortoise SVN qui est tout foutu ! Ou pire c'est le disque dur qui rend l'âme...

Une journée de repos plus tard et j'ai tout compris ! Il ne faut pas confondre :

un fichier coché de vert

et ça :

un autre fichier coché de vert

Le premier recouvrement d'icônes c'est la façon habituelle de TortoiseSVN pour me dire que tout va bien. Le second recouvrement d'icônes, j'y ai droit depuis que j'ai installé la mise à jour de MozyHome Backup. Et en écarquillant bien les yeux, on peut remarquer qu'avec Tortoise la marque est à gauche alors que la marque de MozyHome est à droite (et qu'en plus elle est pas tout à fait pareille).

Ouf ! Y'a rien de cassé :)

Mise à jour : en configuration du client MozyHome, dans l'onglet "Options", il est possible de cocher "Disable icon overlays in Windows Explorer".

mardi 7 octobre 2008

Configuration de TortoiseSVN

Après avoir installé TortoiseSVN (pour l'instant une version 1.4.6, 1.4.7 ou 1.4.8) sur le poste de travail, il reste à le configurer pour qu'il fonctionne de manière optimale avec les sources de Altrr-Press.

Faire clic-droit dans l'explorateur de fichiers puis choisir les menus "TortoiseSVN" et "Settings" :

On obtient alors le premier écran de configuration suivant :

Les paramètres à y définir :

  • conserver "English" comme langue (c'est plus facile pour trouver de la documentation quand on connait le terme anglais exact)
  • pour la liste des fichiers à ignorer, définir : Web.config *.suo *.webinfo *.user *\bin *\obj *\data *.mdb *.bak *.zip *.rar
  • bien penser à utiliser "_svn" plutôt que ".svn" pour que tout fonctionne correctement avec ASP.NET

Cliquer sur le bouton [Appliquer] puis sur "Look and Feel" pour poursuivre le paramétrage :

Là, il faut normalement juste décocher "Check for modifications" pour que cette commande apparaisse dès le clic-droit dans le répertoire de travail (et pas comme un sous-menu de "TortoiseSVN").

Après validation avec le bouton [Appliquer], passer à l'écran "Icon Overlays" :

Dans cet écran, choisir d'appliquer le recouvrement d'icônes uniquement sur les disques fixes, pour éviter de perdre du temps quand on est sur des lecteurs réseaux.

Pour être encore plus efficace, on peut aussi :

  • exclure tout le disque C:
  • ne gérer que le répertoire D:\Portals et ses sous-répertoires (puisque c'est là que sont "théoriquement" tous les sources importants)

(d'après le billet Optimize Tortoise SVN Cache (TSVNCache.exe) Disk I/O)