La fonctionnalité Git Version Control sur un hébergement O2Switch
Il y a quelques temps, les clients O2Switch ont pu voir apparaître l'icône Git™ Version Control dans le bloc fichier de leur cPanel.
Git, qu'est ce que c'est ? Un logiciel de gestion de versions créé par Linus Torvalds, auteur de Linux. Comme SVN, il vous permet de garder une trace des différentes versions de vos projets d'applications, revenir à un état antérieur, travailler à plusieurs sur un même projet…
Si vous n'avez pas envie d'héberger les versions de vos projets sur GitHub, voici une occasion en or de créer vos propres dépôts Git !
Le tableau des repositories (dépôts)
Le tableau Repository liste les informations suivantes pour tous vos dépôts Git
cPanel vous informe que sans accès shell, on ne pourrait que créer, cloner, supprimer et visualiser les dépôts (l'accès au terminal se fait via à partir du menu principal, dans le bloc Avancé > Terminal)… Mais je n'en ai pas eu besoin (je suppose parce que j'utilise Git bash)
Voici les infos disponibles dans le tableau Repository :
- Repository : le nom d'affichage du dépôt
- Repository Path : le répertoire de stockage du dépôt
- Les actions suivantes :
- Manage : administrer les paramètres du dépôt, faire un pull et déployer des modifications
- History : accéder à l'interface Gitweb dans un nouvel onglet du navigateur afin de visualiser l'historique et le contenu du dépôt
- Remove : supprimer le dépôt. Un message de confirmation demandera si l'on veut réellement supprimer ce dépôt (il n'apparaîtra plus dans la liste, par contre, les données et fichiers ne seront pas supprimées, il faudra le faire via le gestionnaire de fichiers et le FTP)
Création d'un nouveau dépôt
J'ai pris comme exemple le projet de l'application Android que j'avais développée pour Radio Eurodance Classic.
Cliquer le bouton bleu Créer en haut à droite des boutons de navigation du tableau. Vous arrivez sur l'interface de création d'un nouveau dépôt.
Dans notre cas, on veut créer un nouveau dépôt, pas cloner un dépôt existant (par exemple pour le transférer à partir de GitHub). On clique donc sur le toggle button « Clone a repository » pour le désactiver, ce qui a pour effet de masquer le champ Clone URL
Définir le répertoire dans lequel le dépôt stockera ses fichiers. S'il n'existe pas, il sera créé. Les conventions habituelles de nommages des répertoires s'appliquent (pas de caractères exotiques s'il vous plaît !). Si le répertoire existe et contient déjà un dépôt, le lien sera fait avec la liste des dépôts du cPanel.
Cliquer sur le bouton Créer et hop, en un clin d'œil le dépôt est créé, et le système vous explique de manière très détaillée comment vous en servir.
Du côté du FTP, vous pouvez voir qu'un nouveau répertoire a été créé, à la racine (j'aurais mieux fait de faire un sous-rep mais bon hein…)
Et à l'intérieur…
Ajouter le dépôt distant
Maintenant, comment lier votre dépôt distant tout neuf à votre projet Git local ?
Lancez Git bash
La commande git remote liste les noms des différentes références de dépôts distants. Dans mon cas, il n'y en a pas puisque je n'en ai encore jamais utilisé pour mes projets. La commande ne renvoie donc… rien
La commande « git remote add » est utilisée pour lier un dépôt distant. Elle se présente sous la forme git remote add [nomcourt] [url] : le premier argument est le nom du dépôt distant et le deuxième son URL.
C'est instantané, et pour vérifier que ça a bien fonctionné vous pouvez refaire un git remote : cette fois-ci votre origin est listé.
Remarque : pour modifier l'URL d'un dépôt distant, vous utiliserez la commande « git remote set-url »
Push vers le dépôt distant
Là normalement vous connaissez… C'est git push [nom-distant] [nom-de-branche]
Par exemple si vous voulez push la branche master sur origin
git push -u origin master
Sauf que… cela ne fonctionne pas !
Le message est :
ssh: connect to host **********.****.fr port 22: Connection timed out
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
Par expérience, quand j'ai ce genre de souci, j'utilise l'URL en https. Sauf que, dans notre cas, celle-ci n'est pas disponible… Je tente un truc freestyle à partir de l'URL ssh, mais évidemment cela échoue.
Pas mieux après avoir généré une clé SSH. Je google, certaines réponses disent que ça pourrait être lié au fait que le port 22 est bloqué. Bizarre, je n'ai aucun souci à me connecter via Putty sur ce même port en général. En désespoir de cause, j'écris au support O2Switch qui me répond en moins d'une demi-heure (je n'ose imaginer le délai chez OVH…) et me demande mon adresse IP pour la mettre en liste blanche.
Au début, cela fonctionne, mais cela se gâte quand j'effectue un copier-coller du mot de passe du cPanel.
Nouvel essai en tapant le mot de passe du cPanel au lieu de faire un copier-coller. Message d'erreur encore, mais différent…
fatal: master cannot be resolved to branch
fatal: the remote end hung up unexpectedly
Je google l'erreur, en fait c'est juste parce qu'en local la branche master locale était écrite en majuscules. Voilà , en respectant la casse, cela fonctionne !
Mettre soi-même son IP en liste blanche
Depuis peu, O2Switch met à notre disposition un outil permettant d'ajouter une adresse IP en liste blanche. C'est à partir du menu principal, descendre dans le bloc Outils et aller sur Autorisation SSH. Pratique si on change régulièrement d'IP ou si on travaille à partir de plusieurs endroits…
A noter que l'exception qui avait été créé pour mon IP il y a quelques temps (voir ci-dessus) n'y apparaît pas car, elle est antérieure à l'introduction de cet outil.
Saisir son IP (que vous pouvez récupérer via l'outil situé sur l'accueil de mon annuaire de référencement) dans le champ Adresse IP ou DNS.
Valider en cliquant sur Ajouter l'autorisation.
Patienter…
Retenter le git clone, valider par yes quand on nous demande si on veut continuer à se connecter, puis saisir le mot de passe du compte.
Accéder à l'historique dans Gitweb
Dans le tableau listant vos dépôts, cliquer sur le bouton History. Une nouvelle fenêtre s'ouvre.
Cliquer sur MASTER (à gauche de « 4 months ago » sur ma capture)
En cliquant sur le commentaire, on accède à liste des fichiers modifiés. En cliquant sur l'auteur, on filtre les commits de cet auteur.
Le lien tree permet d'afficher l'arborescence du projet, tandis que commitdiff afficher les modifications apportées
Alors OK c'est un peu moins sexy que Gitblit, mais c'est tout de même bien utile et plus lisible que la ligne de commande…
Un petit souci de droits ?
Tout allait bien, mais la veille de la publication de cet article, alors que je m'apprêtais à créer un nouveau dépôt, j'avise ce warning sur la page d'accueil de Git™ Version Control. Tiens, c'était pas là hier…
Warning: Your system administrator must enable shell access to allow you to view clone URLS.
Je crée mon dépôt, pas de message d'erreur, mais retour au tableau des dépôts au lieu d'avoir la page qui récapitule les différentes commandes Git pour ce dépôt.
Et quand j'ai voulu faire mon premier push, échec avec ce message d'erreur
fatal: protocol error: bad line length character: Shel
Nouveau ticket, réponse toujours super rapide (à 21h30, jamais ils dorment les gars !), problème résolu.
En conclusion, une fonctionnalité intéressante proposée par cet hébergeur atypique. Et encore merci au support O2Switch sans qui je n'y serai jamais arrivée, puisqu'il faut leur demander d'ajouter notre adresse IP en liste blanche et parfois d'aller y jeter à nouveau un petit coup d'Å“il…
Ça vous tente ? Pour souscrire un abonnement chez O2Switch, c'est par ici…