mBerube.net
A journey to .Net

Intégrer Git dans Visual Studio 2010

samedi, 24 juillet 2010 00:13 by mBerube
(Aussi disponible en: English)

Dans le billet précédent, j'ai parlé de Git, un gestionnaire de version distribué. La façon classique d'utiliser Git est via la ligne de commande bash. Mais si vous utilisez Visual Studio, il y des extensions que vous pouvez installer pour intégrer toutes les bonne choses de Git dans votre IDE préféré. Même si je continue à utiliser la ligne de commande pour certaines tâches comme synchroniser avec mon serveur Subversion, la plupart des tâches quotidiennes durant le développement sont disponibles dans l'IDE. 

Git source control provider

Cette extension (downloadable à partir du visual studio extension gallery) configure Git comme votre source control provider. Cet outils est assez limité mais offre 3 fonctionnalités intéressantes :

  • Elle affiche le nom de la branche courante en haut du Solution Explorer
  • Elle montre le statut des fichiers dans le Solution Explorer (ajouté, modifié ou inchangé)
  • Elle donne un raccourcis pour ouvrir une fenêtre Git bash dans un dossier spécifique.

git source control provider

Cette extension par elle-même ne donne que des fonctionnalités de base mais combiné avec Git extensions, ça devient plus intéressant.

Git Extensions

Cette extension peut être téléchargée de Google code et ajouter plusieurs commandes Git commands dans Visual Studio et dans Windows Explorer. Vous pouvez voir dans l'image ci-haut que Git source control provider inclut un raccourci vers Git Extensions mais vous pouvez l'utiliser seul.

Dans Visual Studio, Git extensions ajoute une barre d'outils et un nouveau menu dans l'IDE. Par ceux-ci, vous pouvez faire à peu près tout le travail quotidien avec Git (vous pouvez voir la nouvelle barre d'outils encerclé en rouge).

git extensions menus

Pour être honnête, je ne sais pas encore ce que toutes ces options font mais voici un aperçu rapide de quelques-unes :

  • Checkout branch : passe de la branche courante vers une autre branche. Plus de détails sur les branches dans un post futur.
  • Commit : envoie les changements de la branche courante dans le dépôt local. Voir l'image de la fenêtre ci-dessous.
  • Edit .gitignore. Permet de modifier le fichier .gitignore pour le dépôt local. Vous pouvez le faire manuellement mais si vous êtes un développeur .Net, je vous suggère d'utiliser le modèle par défaut fourni qui exclut tous les fichiers temporaires générés par .Net. À date, tous les fichiers requis sont conservés et je n'ai pas de fichiers non voulus.
  • Pour tout le travail sur les dépôts distants (Manage remotes, pull, push, rebase, etc.), je ne les ai pas encore essayé puis que n'ai pas eu à utiliser de dépôts Git distant pour le moment.

Quelques explications sur le processus d'envoie (commit). Quand vous voulez envoyer vous changements, vous ouvrez la fenêtre de commit:

git commit window

Dans la partie en haut à gauche, vous choisissez les fichiers que vous voulez envoyer et cliquez sur "Stage selected file” pour les inclure dans l'envoie. Vous devez entrer un commentaire et cliquer “Commit” pour confirmer. Si le fichier a un statut “Untracked”, ça veut dire que c'est un nouveau fichier et la partie code (en haut à droite) montrera le source. Si le statut est “Modified”, la partie code montre la différence entre les 2 versions. Très pratiqueé Si vous voulez annuler un changement que vous avez fait, choisissez les fichiers à annuler et cliquez “Reset changed”.

Je crois que c'est assez pour l'instant. Prochain post, je parle des branches et fusions avec Git Bash et Git Extension.

Merci et bonne programmation.

Soyez le premier à noter ce billet

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Categories:   Git | Vie de programmeur
Actions:   E-mail | del.icio.us | Permalink | Commentaires (0) | Comment RSSRss comment feed

De SVN à Git

jeudi, 22 juillet 2010 00:01 by mBerube
(Aussi disponible en: English)

Comme vous le savez déjà si vous lisez ce blog religieusement, j'ai maintenant un serveur de développement à la maison pour mes expérimentations. J'utilise Visual SVN Server comme gestionnaire de code source car il est gratuit et simple d'utilisation. Toutefois, je travaille de plus en plus sur mon laptop et dans plusieurs endroits où je n'ai pas nécessairement un accès Wifi. Je peux passer plusieurs heures (ou plusieurs jours) sans pouvoir faire un commit et je n'aime pas vraiment ça car ça complexifie beaucoup le retour en arrière en cas d'erreur. J'avais entendu parlé de Git qui est un gestionnaire de version décentralisé et qui permet d'avoir une copie complète du dépôt (repository) localement sur votre ordinateur. Vous pouvez faire de multiple commits, branches et fusions de branches localement pour ensuite "pousser" vos changements sur le serveur central lorsqu'il est disponible. Vous pouvez également télécharger les changements faits par les autres développeurs dans le dépôt central et les intégrer dans votre version.

Ce qu'il y a d'encore mieux pour un utilisateur de subversion comme moi c'est qu'on peut utiliser Subversion comme dépôt central et Git comme dépôt local. C'est ce que j'ai essayé et voici les différentes étapes pour utiliser Git comme gestionnaire de code source sur ma machine en Windows 7 et l'intégration dans Visual Studio.

Premièrement, vous devez télécharger installer for Git et l'installer. Prenez soin de cliquer sur Git Bash et Git GUI pour l'intégration dans windows explorer, c'est très pratique. Git Bash est très utile pour toutes les tâches administratives et les commandes complexes. Git GUI est supposé aider avec une interface graphique pour les commit et les branches mais je préfère Git extensions pour Visual Studio pour ces tâches. Plus d'information sur cela dans les prochains posts.

Maintenant que vous avez Git, vous pouvez cloner votre dépôt Subversion localement. Utilisez Git Bash, naviguez dans le dossier où vous voulez créer votre dépôt et utiliser la commande suivante : 

git svn clone –s https://mysuberversionserver/svn/myrepository/trunk

Bien sûr, vous remplacez l'URL par celui de votre projet Subversion. À ce stade, it est recommandé de configurer votre fichier .gitignore. Ce fichier contient tous les fichiers ou les dossiers que vous voulez exclure du suivi de version par Git. Il y a plusieurs pages sur le web sur la façon de configurer ce fichier alors je ne m'étendrai pas sur le sujet ici (d'autant plus que les Git extensions pour Visual Studio contiennent un modèle de base pour les développeurs .Net qui exclu déjà tous les fichiers temporaires qui ne devraient pas être dans le gestionnaire de code source).

Vous avez créer votre dépôt local, maintenant, téléchargez le code source :

git svn fetch

Cette commande n'est requise que la première fois. Après cela, vous ne faites que les mises à jour, c'est beaucoup plus rapide. Vous commencez maintenant votre travail, vous faites des changements et git va suivre vos modifications. Quand vous avez terminé, vous pouvez utiliser la commande commit pour enregistrer la version localement : 

git commit

Il y a plusieurs paramètres à la commande commit. Je ne les mentionne pas tous mais en voici 2 pour vérifier le contenu de votre commit sans le faire réellement : 

git commit –v –dry-run

Quand vous êtes prêt à envoyer vos commit sur le dépôt Subversion central, vous faites la commande suivante :

git svn dcommit

Ici encore, il y a une commande pratique pour vérifier les différences entre votre copie locale et votre dernière version du dépôt central. Elle affiche le nom et le status de tous les fichiers différents :

git diff ..remotes/git-svn --name-status

Vous pouvez finalement obtenir les changements des autres contributeurs au dépôt central en utilisant :

git svn rebase

Ok, c'est tout pour ce petit tutorial git svn. Dans les prochains posts, Je vais parler des extensions pour Visual Studio qui simplifient les tâches usuelles avec Git. Je vais également parler des branches et des personnalisations qui peuvent améliorer votre cycle de travail.

Merci, bonne programmation.

Soyez le premier à noter ce billet

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Categories:   Vie de programmeur | Git
Actions:   E-mail | del.icio.us | Permalink | Commentaires (0) | Comment RSSRss comment feed

Accès par nom sans serveur DNS

mercredi, 23 juin 2010 12:59 by mBerube
(Aussi disponible en: English)

Durant la configuration de mon serveur de développement, j'ai réalisé que je pouvais accéder mes machines Linux par IP mais pas par nom. Même chose à partir de Linux vers mes machines Windows. Après quelques recherches, j'ai fini par comprendre que mon réseau n'avait pas de serveur DNS, il fallait donc que la résolution de nom soit faite autrement, c'est à dire par NetBios. Comment faire fonctionner correctement Linux sur NetBios ? Voici la procédure (pour Ubuntu mais c'est très propablement similaire avec les autres distributions) :

  • Installer samba (sudo apt-get install samba)
  • Un fois installé, editez /etc/samba/smb.conf and, dans la section global settings, donner à workgroup et netbios name les bonnes valeurs pour votre machine.

Vous pouvez maintenant accéder votre machine Lunix par son nom à partir de Windows. Maintenant, dans l'autre sens (de Linux à Windows) :

  • editez /etc/nsswitch.conf et changez la ligne hosts: file dns par hosts: file wins dns (l'ordre importe)
  • Finalement, installez winbind (sudo apt-get install winbind)

Après cela, tout fonctionne tel que prévu, de Windows et de Linux. J'espère que ça fonctionne pour vous également.

Soyez le premier à noter ce billet

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Categories:   Vie de programmeur
Actions:   E-mail | del.icio.us | Permalink | Commentaires (0) | Comment RSSRss comment feed

Windows Home Server pour un développeur

jeudi, 22 avril 2010 21:53 by mBerube
(Aussi disponible en: English)

L'an dernier, encouragé par les bons commentaires de Scott Hanselman, j'ai décidé de mettre à l'essai Windows Home Server, une version allégé de Windows Server 2003. C'est un OS très intégré qui permet de facilement centraliser l'information des différents PC de la maison (musiques, photos, vidéos), de prendre des backup complets des différentes machines connectées et d'ensuite prendre tout cela en backup sur un disque externe pour le mettre en lieu sûr en cas de destruction/perte/vol du serveur.

Je l'ai installé sur ma vieille machine (un AMD athlon de presque 10 ans) et ça fonctionnait assez bien, malgré certains problèmes de stabilité principalement causé par l'âge avancé des composantes. De plus, l'espace disque commençant à manquer et les HD IDE devenant de plus en plus rares et coûteux, j'ai décidé de mettre en place une vraie solution de WHS. Le Acer Aspire Easy Store Home Server:

Mis en place depuis 1 semaine, ça fonctionne très bien, le transfert a été très long (400 gb sur un réseau 100mb, ça prend du temps), c'est une machine très silencieuse à cause de son processeur Atom qui consomme peu et chauffe peu.

WHS est livré avec un connecteur qui permet d'administrer la machine. Ceci donne accès aux opérations de base du serveur que tous les utilisateurs domestiques ont besoin. (En passant, MS vend cela comme quelque chose de simple, à la porté de tous. FAUX. Il faut avoir quelques notions de sécurité Windows et de réseautique pour utiliser le produit correctement. Geek requis !).

C'est par contre un produit qui peut aussi être très utile pour une petite équipe de développeurs étant donné la capacité du produit à partager et sauvegarder jusqu'à 10 PC. De plus, en tant que développeur, vous savez très certainement utiliser RDP. Ce faisant, vous êtes connecté directement et pouvez faire à peu près tout ce que vous pouvez faire dans Windows Server 2003. Soyez cependant prudents car WHS utilise une technologie nommé Drive Extender qui permet de créer une sorte de "raid" où tout les disques sont ajoutés et présentés comme un espace de stockage commun:

Évitez donc tous les outils qui gèrent des disques (disk management, RAID controller, defragmenter), laissez plutôt WHS se charger des disques et utilisez les répertoires partagés pour transférer vos fichiers. Par contre, voici 2 choses intéressantes à faire avec votre WHS:

  • WHS permet d'accèder à ses fichiers à distance par une interface web. Vous remarquerez alors que IIS (6.0) est installé et fonctionnel sur la machine, se qui en fait une excellente machine de QA pour vos site web avant de les installer en production. Si vous avez des besoins de base de données, j'ai également installé SQLServer 2008 Express sans problèmes.
  • C'est également un excellent endroit pour installer votre gestionaire de code source. Dans mon cas, j'utilise Visual SVN pour administrer mon gestionnaire et j'ai inclus dans mes répertoires partagés (et sauvegardés), la base de données SVN qui est donc incluse dans mes backups de serveur. Très intéressant !

Il y a finalement beaucoup de Add-ins disponibles, notamment sur We got served pour bonifier les fonctions de votre serveur. C'est un produit très intéressant et son prix relativement bas (moins de 400$, OS inclus), en fait une solution simple et économique pour la maison mais aussi pour le travail.

P.S : je ne reçois aucune gratitude de MS pour vanter ce produit, je ne suis qu'un utilisateur satisfait !

Soyez le premier à noter ce billet

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Categories:   Vie de geek | Vie de programmeur
Actions:   E-mail | del.icio.us | Permalink | Commentaires (0) | Comment RSSRss comment feed

Utiliser le Remote Debugger de Visual Studio sans compte de domaine

samedi, 3 avril 2010 15:47 by mBerube
(Aussi disponible en: English)

En recherchant le bogue dont je parlais la dernière fois, je devais utiliser le Remote Debugger sur mon server de QA. Je fais ça régulièrement au travail (dans un domaine), ça fonctionne facile en autant que le compte que vous utilisez est administrateur sur le serveur. Mais à la maison, je ne suis pas dans un domaine donc c'est un peu plus compliqué. Après avoir ramasser de l'information à différents endroits sur le web, j'ai fini par trouver ma solution que j'ai décidé de rassembler ici. Pour l'exemple, supposons la configuration suivante :

  • Un PC
  • Un serveur sous WS 2003 avec IIS 6.o roulant avec le compte par défaut (Network Service)
  • Un utilisateur sur le PC et le serveur nommé MyLocalUser

Scenario 1 : MyLocalUser est administrateur sur le Server

Dans ce scénario, c'est assez simple. Vérifiez que vous avez remote debugger sur le server (sinon, copiez-le du PC, généralement on le trouve sous C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger\x86) et démarrez msvsmon. Si vous êtes connnecté sur le serveur avec MyLocalUser, c'est fait. Sinon, démarrez msvsmon en cliquant droit et en choisissant Run As.. . Entrez les informations de MyLocalUser.

Le remote debugger est maintenant démarré.

Finalement, dans Visual Studio, choisissez "Tools\Attach to process...", et dans Qualifier, entrez le nom du serveur donné par remote debugger (dans notre cas, MyLocalUser@SERVER) et assurez-vous de cocher "Show Processes for all users" et "Show processes in all sessions". Choisissez le processus w3wp et vous êtes prêt à debugger.

Scenario 2 : MyLocalUser n'est pas administrateur sur le serveur

Si MyLocalUser n'est pas administrateur sur le serveur (mais il existe comme utilisateur régulier) et vous ne voulez pas lui donner,  il y a une autre solution. C'est presque comme le premier scénario 1 mais on va créer un compte sur le PC et le serveur seulement pour le remote debugging:

  1. Créer un compte (par exemple RemoteDbgUser) sur le PC et le serveur avec le même mot de passe. Ce compte doit être administrateur sur le serveur ma ce n'est pas nécessaire sur le PC.
  2. Sur le serveur, démarrer Remote Debugger avec "Run as" et utiliser RemoteDbgUser.
  3. Dans Remote Debugger, sous "Tools\permissions", donner accès à MyLocalUser pour débogger (voir image ci-dessous).
  4. Sur le PC, dans Visual Studio, aller dans "Attach process" et entrez RemoteDbgUser@SERVER comme qualifier

Voilà ! J'espère que ça vous aidera et comme ça, vous pourrez passer plus de temps sur vos projets au lieu de rechercher comme moi la façon de faire pendant une heure.

Merci de me lire.

Soyez le premier à noter ce billet

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Categories:   Vie de programmeur
Actions:   E-mail | del.icio.us | Permalink | Commentaires (0) | Comment RSSRss comment feed