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.