Visual Studio 11: du nouveau pour les Workspace–Partie 2

Ce billet fait suite à la première partie.

Workspace Local

Je ne le répèterais jamais assez, le Workspace Local est le nouveau mode par défaut de Visual Studio 11, c’est à dire que celui créé par défaut lorsque l’on se connecte pour la première fois à un serveur TFS sera en mode Local. Donc si vous ne touchez à rien concernant les Workspace, vous serez en mode Local, mieux vaut donc savoir comment ce mode fonctionne!

Que nous apporte ce nouveau type? On peut dire qu’il est l’opposé du workspace de type serveur.

Dans ce mode le Workspace est géré indépendamment du serveur TFS, le premier avantage évident est qu’il n’est donc plus nécessaire d’être connecté au serveur TFS pour effectuer la plupart des opérations liées à la gestion de configuration. Le deuxième avantage est que vos actions n’ont pas à être initiées dans Visual Studio pour que celui-ci détecte les changements apportés aux répertoires sous gestion de configuration.

Pour être plus clair, Visual Studio surveille en permanence les changements effectués dans les répertoires et leur fichiers. Les fichiers ne sont plus en read-only (lecture seule) lorsque qu’ils ne sont pas en check-out (cela fait du bien!) et vous avez la possibilité de les modifier en dehors de Visual Studio de manière totalement naturelle. Ce dernier vous détectera immédiatement tous fichiers édités, rajoutés, supprimés, idem pour les dossiers. Vous aurez alors la possibilité d’indiquer à Visual Studio les fichiers à mettre en gestion de configuration, ceux qu’il faut ignorer, ou le guider pour certaines opérations particulières comme le déplacement ou renommage de fichier.

Rassurez-vous, Visual Studio est assez intelligent pour ignorer automatiquement les fichiers intermédiaires et générés à l’issue d’une compilation: les répertoires “Debug”, “Release” et autres “bin” ou “obj” ne viendront jamais vous perturber.

Le cas de Resharper

Un bon exemple d’une petite nuisance que peut apporter ce mode. Lorsque vous avez l’excellent Resharper d’installé sur votre Visual Studio et que vous ouvrez pour la première fois une solution, celui va automatiquement créer un sous-répertoire “_Resharper.xxxx” dans celle-ci qui contiendra bon nombres de fichiers nécessaire à l’add-on.

Du coup Visual Studio vous détecte bon nombre de changements:

image

Un clique sur “Detected changes” vous listera tous les fichiers détectés:

image

Pas de panique, un clique droit sur le premier fichier puis “ignore by folder” vous ajoutera une règle d’exception (dans le nouveau fichier “.tfignore”) qui indiquera à VS11 d’ignorer tous les changements dans ce répertoire propre à Resharper.

image

Le fichier .tfignore

Les adeptes de SVN ne vont pas être dépaysé, chaque exclusion sera matérialisée dans le fichier .tfignore qui sera mis à jour par le bisais de Visual Studio (comme on l’a vu pour le cas de Resharper) ou en l’éditant directement.

A noter que le fichier “.tfignore” sera directement dans les “pending changes” pour être rajouté dans votre Source Control afin que les autres utilisateurs en profite.

image

La syntaxe employée par ce fichier est relativement générique et sera détaillée dans l’entête de celui-ci.

Recommandations

S’il n’y a pas de limite “physique” pour les Workspace Locaux, on imaginera vite qu’une Solution énorme avec 50 projets et des dizaines de milliers de fichiers ne sera pas forcément adapté. Microsoft n’avance pas de chiffre, mais clairement pour les gros projets il faudra peser le pour et le contre et peu être passer sur un Workspace en mode serveur.

Il y a deux raisons:

  1. Le système de surveillance des fichiers sera mis à rude épreuve sur les répertoires contenant beaucoup de fichiers et l’expérience dans Visual Studio en serait dégradé. Cela dit cela dépend grandement du disque hébergeant les fichiers, la limite sera bien plus haute si vous êtes équipé d’un SSD de dernière génération!
  2. Afin de pouvoir fonctionner sans connexion active au serveur TFS, VS11 met en cache tous les fichiers issues du serveur. Mêmes si ceux-ci sont compressés (unitairement) tout est doublé! Pour les grosse solutions, il faudra faire attention que l’utilisateur peut se le permettre.

Le cache du Workspace Local

Détaillons un peu ce point qui le mérite! Travailler en mode local nous apporte l’avantage de ne plus être dépendant du serveur pour la plupart des opérations, mais demande en contrepartie un  peu plus de place sur votre disque dur!

Dans la racine de votre Workspace en local, un dossier caché “$tf” est créé, il n’est pas important de connaitre sa structure interne, mais il est intéressant de savoir à quoi il sert.

image

A chaque fois que l’utilisateur va faire un Get Latest d’un fichier, en plus d’être téléchargé en local, celui-ci sera compressé puis stocké dans le répertoire $tf. La version “serveur” du fichier sera alors toujours disponible, même quand le serveur ne sera pas accessible. Ainsi on pourra librement modifier le fichier dans le Workspace (en passant ou non par VS) tout en ayant la possibilité de le comparer avec la version du serveur. En fonction de si le serveur TFS est accessible ou non VS utilisera la version en cache où ira prendre celle du serveur (si un version plus récente s’y trouve par exemple).