Utiliser Git avec Visual Studio

En tant qu'utilisateur (et détesteur) de longue date de [Visual SourceSafe][1], je discutais avec un collègue du passage à [SVN][2] ; il a suggéré d'utiliser [Git][3] à la place. Puisque, apparemment, il peut être utilisé en peer-to-peer sans serveur central (nous sommes une équipe de 3 développeurs).

Je n'ai cependant pas trouvé d'outils permettant d'intégrer Git à Visual Studio - existe-t-il un tel outil ?

Quelles sont les technologies disponibles pour utiliser Git avec Visual Studio ? Et que dois-je savoir sur leurs différences avant de commencer ?

[1] : http://en.wikipedia.org/wiki/Microsoft_Visual_SourceSafe [2] : http://en.wikipedia.org/wiki/Apache_Subversion [3] : http://en.wikipedia.org/wiki/Git_%28software%29

Solution

En janvier 2013, Microsoft a [annoncé][3] qu'elle ajoutait un support complet de Git à tous ses produits ALM. Ils ont [publié un plugin][4] pour Visual Studio 2012 qui ajoute l'intégration du contrôle de source Git.

Il existe également un projet appelé [Git Extensions][1] qui comprend des modules complémentaires pour Visual Studio 2005, 2008, 2010 et 2012, ainsi que l'intégration de l'Explorateur Windows. Il est régulièrement mis à jour et, après l'avoir utilisé sur quelques projets, je l'ai trouvé très utile.

Une autre option est [Git Source Control Provider][2].

[1] : http://gitextensions.github.io/ [2] : http://gitscc.codeplex.com/ [3] : http://blogs.msdn.com/b/bharry/archive/2013/01/30/git-init-vs.aspx [4] : http://visualstudiogallery.msdn.microsoft.com/abafc7d6-dcaa-40f4-8a5e-d6724bdb980c

Commentaires (21)

J'utilise Git avec Visual Studio pour mon portage de Protocol Buffers en C#. Je n&#8217utilise pas l&#8217interface graphique - je garde simplement une ligne de commande ouverte ainsi que Visual Studio.

La plupart du temps, tout se passe bien - le seul problème est lorsque vous voulez renommer un fichier. Git et Visual Studio préféreraient tous deux que ce soit eux qui le renomment. Je pense que renommer un fichier dans Visual Studio est la meilleure solution, mais il faut faire attention à ce que l'on fait ensuite du côté de Git. Bien que cela ait été un peu pénible dans le passé, j'ai entendu dire que cela devrait être assez transparent du côté de Git, parce qu'il peut remarquer que le contenu sera essentiellement le même. (Pas entièrement le même, en général - on a tendance à renommer un fichier quand on renomme la classe, IME).

Mais en gros - oui, cela fonctionne bien. Je suis un novice de Git, mais j'arrive à lui faire faire tout ce dont j'ai besoin. Assurez-vous que vous avez un fichier git ignore pour bin et obj, et *.user.

Commentaires (13)

Je trouve que Git, en travaillant sur des arbres entiers comme il le fait, bénéficie moins de l'intégration de l'IDE que les outils de contrôle de source qui sont basés sur des fichiers ou qui suivent un modèle de checkout-edit-commit. Bien sûr, il y a des cas où il peut être agréable de cliquer sur un bouton pour faire un examen de l'historique, mais cela ne me manque pas beaucoup.

Ce qu'il faut absolument faire, c'est remplir votre fichier .gitignore des choses qui ne devraient pas se trouver dans un dépôt partagé. Le mien contient généralement (parmi d'autres choses) les éléments suivants :

*.vcproj.*.user
*.ncb
*.aps
*.suo

mais il est fortement orienté C++ avec peu ou pas d'utilisation de la fonctionnalité de style assistant de classe.

Mon modèle d'utilisation ressemble à ce qui suit.

  1. Code, code, code dans Visual Studio.

  2. Lorsqu'il est heureux (point intermédiaire raisonnable pour commettre le code, passer à Git, mettre en scène les changements et examiner les différences. Si quelque chose ne va manifestement pas, retournez dans Visual Studio et corrigez, sinon livrez.

Toute fusion, branche, rebasement ou autre truc SCM fantaisiste est facile à faire dans Git à partir de l'invite de commande. Visual Studio est normalement assez heureux de voir les choses changer sous lui, bien qu'il puisse parfois avoir besoin de recharger certains projets si vous avez modifié les fichiers du projet de manière significative.

Je trouve que l'utilité de Git l'emporte sur les inconvénients mineurs liés à l'absence d'intégration complète de l'IDE, mais c'est, dans une certaine mesure, une question de goût.

Commentaires (10)