GitOsX
Mon environnement de travail, ou plutot, de développement est une machine de la pomme, sous OS X. Je n’aborderai pas les raisons de ce choix, qui ne sont que miennes. Ici je voudrais aborder la question des clients Git sous OS X. Mon ami et ex collègue qui anime #gitfr a très récèment publié un tweet disant ceci :
Un nouvel GUI (payant) pour Mac OS X: gitbox - http://gitboxapp.com/ (je suis preneur d'avis sur cette application)
Or, il se trouve que Gitbox j’ai essayé, en fait je pense avoir testé les clients Git OS X les plus connus et utilisés (et les plus sympas visuellement) : GitX, GitY, Gitbox. Il me manquait jusqu’ici Gitnub et … Tower.
J’ai donc rapidement mis à jour ma version de Gitbox pour tester; rien de bien neuf par rapport à la précédente version. Et j’ai donc rédigé un rapide rapport que je lui ai fait parvenir par mail, en me disant que peut être ça serait bien de faire un billet ici. En rentrant de mes errances diurnes je me suis retrouvé avec une réponse “eh tu voudrais pas tester tower aussi ? ça ferait un tour complet.” Hmm ? Tower ?
Le nom ne me disant rien je me suis penché sur la question … Mais pour laisser monter le suspens (et pas la mayo) je vais tout d’abord vous faire part de mes avis sur les quatres premiers larrons.
Gitnub
Tout d’abord Gitnub, le vilain petit canard, enfin le petit vilain petit canard. On ne peut pas faire grand chose avec, et déjà il faut se battre pour le faire marcher. Au final j’en suis venu à essayer de modifier le code pour obtenir ce que j’aime faire : l’ouvrir n’importe où. Oui la version que l’on peut compiler a besoin d’être lancée depuis un répertoire sous git, et … dans lequel il y a un environement ruby qui plait à M. Gitnub. Bref comme j’utilise rvm et des gemset différents … echec : mv gitnub /dev/null
GitX
GitX est le premier client que j’ai utilisé sur OS X (après mes mimines), et j’ai vite aimé. GitX propose une interface sous deux aspects : soit un aspect “arbre”, soit un aspect “en cours”. Le premier permet de voir les commits dans sa branches ou toutes les branches sous forme de liste avec, en couleurs, les interactions et l’état des différentes branches. Il est possible de voir le contenu de chaque commit, une intégration avec gravatar permet de voir le gravatar de l’auteur du commit (s’il en a un), et une intégration avec git permet le post de gists …
La deuxième permet de voir l’état courant de la branche active : fichiers modifiés, ajoutés, supprimés (un git status). Un clic sur les modifiés permet de voir le diff.
Pour rajouter des fichiers à commiter un glissé-déposé suffit, et une zone de texte permet de taper le message du commit. Bref j’aime beaucoup, oui beaucoup beaucoup. Il ne fait pas le café, mais il fait bien ce qu’il est sensé faire.
La visualisation d’un diff est intégrée à l’application, pas besoin de passer par FileMerge. Un gros plus ça.
GitY
GitY est le deuxième client que j’ai essayé. Un peu lassé de devoir jongler entre terminal et GitX je voulais pouvoir faire des checkout de branches, des pushs et des pulls depuis une interface clicaclic. A priori GitY devait coller.
GitY propose une interface sympathique aussi, mais un peu moins évidente, avec 3 boutons pour afficher les fichiers non suivis, modifiés, ou staged (ajoutés au commit en attente). Ces trois boutons me gênent souvent et je me retrouve à perdre du temps avec “ah mince pourquoi le fichier index.erb n’y est pas ? ah oui, le bouton …”. Le commit se fait via un petit popup sympathique.
La partie de gauche de la fenetre permet de voir toutes les branches, les locales et les distantes, les dépots, les stashs … mais l’accès à l’historique d’une branche se fait par un clic droit sur celle ci, chose un peu déroutante selon moi, cela devrait être en accès direct.
Avantage de GitY : il permet de déclencher les git gc et autres repack sans passer au terminal et prévient quand il y a trop d’objets qui se baladent seuls.
Autre problème de GitY : il plante.
Bon point : l’interface de visualisation des diffs est aussi intégrée à GitY.
Gitbox
Gitbox a une interface simple qui se rapproche beaucoup de GitY dans les grandes lignes. On retrouve des cases à cocher ou un clic droit pour sélectionner les fichiers à mettre dans le commit, et un mini popup pour entrer le commit message. Cela est sympa mais reste relativement lourd.
Problème de la version gratuite : un Cmd O pour ouvrir un autre dépôt vous informe qu’il vous faut entrer une numéro de license pour ouvrir un autre dépôt si un dépôt est déjà ouvert … Donc il faut fermer le dépôt ouvert et ouvrir le suivant …
Problème tout court : gitbox fait appel à l’application FileMerge ou Kaleidoscope ou Changes. La première est vraiment basique et j’ai du mal à vraiment apprécier l’interface. Les deux autres sont payantes et couvrent plus que les besoins de diff de texte dont j’ai besoin.
Tower
Bref jusqu’ici j’en reviens toujours à GitX : stable, plus simple à utiliser. Je reste sur ma faim et j’ai souvent recours à la ligne de commande pour certaines tâches courantes (checkout, pull, merge) mais ça me va vu que je tape vite et que j’ai grandi avec la ligne de commande.
Bon, c’est là que Seb (de #gitfr) me balance ce link et là … rien ne va plus. Je télécharge, copie hop hop, lance, ouvre mon dépôt un peu chargé avec 3 branches etc … Et là, après une dizaine de secondes à fouiller, lire les onglets, boutons etc … bref découvrir l’interface, je comprends vite et en fait … et bien l’interface est bien fichue globalement, on y retrouve les branches à gauche, tags, remotes, stash (comme dans GitY), un onglet browser pour voir l’état des fichiers d’un coup d’oeil, un onglet history pour voir les commits avec (comme GitX) un arbre de ceux ci. Enfin une case “commit message draft” (pour rédiger tranquillement le message) et une grosse zone pour afficher les diffs d’une très belle manière (comme GitX et GitY mais en plus joli) viennent compléter la fenêtre.
Le browser peut basculer entre un mode “tous les fichiers” (arborescence), ou “seuls les fichiers modifiés” (une liste, plus classique, comme dans GitX) avec des cases à cocher (pour mettre dans la file de commit / stage) et des flags pour indiquer l’état des fichiers.
Une barre d’icones permet d’accéder aux actions de base : pull, push, commit, save stash, add delete, revert, refresh.
Pour couronner le tout un “dashboard” permet de “ranger” ses dépôts locaux et passer de l’un à l’autre. Chaque dépôt y est même affublé d’un petit astérisque avec le nombre de modifications non commitées (façon Mail.app).
Bref du gros gros matos. Et encore je ne vous ai pas parlé des boutons pour ajouter un remote, un tag local, etc … Et je ne fais là qu’un tour en 15 minutes. Et il y a même un “open in terminal” dans le menu …
Tower est pour le moment en Beta, et gratuit, mais c’est du lourd, beau et pratique. A voir en utilisation réèlle si ça plante. Mais rien que pour l’utiliser ça me chatouille de coder. Je suis curieux de voir le prix de la bête une fois en version finale.
update : je ne peux pas résister à faire une petite mise à jour. Comme je gère ce blog avec git (et Jekyll), j’ai fais mon commit et mon push vers mon dépôt distant et mon hébergeur. Et là, pfiou une bien belle interface, intuitive (en plus) pour choisir la branche à push, le dépot distant etc … On voit le début du SHA du dernier commit de chaque branche et on peut même modifier les paramètres de push (ssh etc). bave
Conclusion
- GitX : c’est le bien, simple et pratique
- GitY : à surveiller
- Gitnub : dommage
- Gitbox : non pas pour moi
- Tower : pourrait bien être THE killer client git pour OS X. Vraiment, chapeau, et merci Seb.


