Utiliser Git avec Eclipse

De Wiki Amis SH
Aller à la navigation Aller à la recherche



Le wiki : Accueil - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack


Utiliser Git avec Eclipse

Prérequis

Prendre connaissance de la page suivante : Utiliser Eclipse.
Une fois la dernière version de Eclipse installée, on peut se lancer dans l'utilisation de Git avec Eclipse.

Configurer le profil utilisateur de GIT

Il est nécessaire de renseigner un utilisateur spécifique à Git dans les paramètres de Eclipse pour pouvoir utiliser GIT avec Eclipse.
Aller dans : Fenêtre > Préférences > Équipe > Git > Configuration
Add Entry pour ajouter une identité avec pour valeur la clé et son contenu : user.email & user.name
L'identité de l'utilisateur est représentée par un nom et un mail qui seront utilisés dans l'historique des modifications.
mail@visionduweb.com - Zer00CooL

 
Les paramètres du système ne sont généralement pas utilisés sur les plates-formes GNU/Linux.
Fenêtre > Préférences > Équipe > Git > Configuration > Onglet "System Settings".

Convertir les délimiteurs de fin de ligne pour utiliser Git avec Linux et Windows

Convertir les délimiteurs de fin de ligne pour utiliser Git avec Linux et Windows.

Utiliser MyLyn

La version Eclipse PDT met à disposition MyLyn.

Importer un projet existant pour ne pas avoir besoin de le configurer depuis Eclipse

Importer un projet existant depuis un projet Github distant

Le projet Github distant est hébergé sur Github.
Afficher la perspective GIT pour accéder aux commandes Git de Eclipse.
Fenêtre > Ouvrir la perspective > Autre ... Git
Un onglet Dépôts Git est affiché.
Cliquer sur la ligne du profil GIT.
Utiliser le bouton : Clone a Git Repository and add the clone to this view. Choisir Github. Donner le nom du projet pour le retrouver sur Github.
Exemple : bot-cannabis-educatif
Search
Sélectionner le repo et cliquer sur suivant.
Choisir la branche master et cliquer sur suivant.
Laisser la configuration par défaut et cliquer sur Terminer.
Une nouvelle ligne apparaît dans l'onglet Git Repositories.
Le sous dossier Working Tree contient les fichiers du projet.

Importer un projet existant depuis un projet Github local

Le projet Github local est hébergé localement car il a déjà été récupéré depuis Github.
Si un dépôt local existe, depuis Github par exemple, il suffit d'importer directement le projet Git hébergé localement.
Il est également possible d'importer un projet Git distant depuis Github.
La configuration de Git est importée avec le projet existant.
Cette configuration facilitera la prise en compte des modifications en local (commit) puis de pousser les modifications vers Github (push).
Fichier / Importer / Git / Project from Git / Existing local directory / Ajouter / Localiser le projet sur la machine locale. / Cocher la case pour sélectionner puis cliquer sur Terminer.
On est toujours sur la fenêtre d'import, cliquer sur suivant, sélectionner "Import as general project puis cliquer sur suivant, accepter le nom de projet et le répertoire en cliquant sur Terminer.

Utiliser la vue PHP

Ouvrir et modifier un fichier du projet

Cliquer sur un fichier pour ouvrir le fichier.
Faire des modifications et enregistrer le fichier.

Créer des tâches

Créer des tâches en local

Cliquer sur nouvelle tâche et choisir "Local" pour un dépôt personnel Local.

Créer des tâches partagées vers les issues de Github

# Sous Eclipse, l'import d'une liste des tâches d'un dépôt de Github est indépendant de l'import d'un dépôt de Github.
# Si un problème de connexion empêche d'ajouter ou d'actualiser un dépôt de tâches, par exemple, suite à un changement de mot de passe ou d'ajout d'une identification à deux facteurs, supprimer le dépôt de tâches depuis Eclipse, en allant dans " Task repositories ". Noter que dans le cas de l'identification à deux facteurs, il m'a fallut créer une clé pour remplacer mon mot de passe et permettre l'utilisation de GIT lors des commit, push, vers le dépôt Github. Il en va de même pour l'utilisation des tâches, la même clé est requise.
# La vue de fenêtre "Généralités / Tâches", affiche vos tâches locales. Elles ne seront pas exportées vers votre serveur Git.
# Depuis la vue  de fenêtre "Généralités / Liste des Tâches", cliquer sur " Nouvelle tâche " et choisir "Ajouter un dépôt de tâche".
# Sélectionner Github distant à l'aide du connecteur Github.
# Avec le connecteur de tâches de Github, les nouvelles tâches ajoutées apparaîtrons sur Eclipse et sur Github.
# Si le connecteur " Github issues " est bien présent, valider ce choix comme type de dépôt de tâches.
# Renseigner alors les informations demandées, par exemple :
http://github.com/ZerooCool/phpsecinfo
ZerooCool/phpsecinfo issues
ZerooCool
Le mot de passe ou la clé permettant l'identification à deux facteurs.
Cliquer deux fois sur le bouton Terminer.
# Pour afficher les tâches déjà existantes de Github, il faut maintenant effectuer une requête sur les issues que l'on souhaite afficher.
# Créer une "Nouvelle requête" à partir de la recherche. (Le plus simple est de cliquer droit sur l'espace libre dans la zone d'affichage pour voir apparaître l'option.)
Clic droit / Nouveau / Query
Pour faire simple, ajouter le nom du projet "PHPSECINFO" en tant que nom de requête et ajouter également la catégorie ou les catégories à considérer "Bogue", ou, "Bogue + Besoin d'aide".
Cocher les cases correspondantes au catégories actuellement configurées depuis Github. Les catégories depuis Eclipse sont les Labels depuis Github.
Cliquer sur le bouton Terminer.
La synchronisation s'effectue.
# On peut également afficher toutes les issues, si on ne mentionne aucune catégorie.
# Il est possible d'effectuer un tri (Trier) par ordre d'id décroissant, pour afficher en premier les nouvelles issues.
# On apprécie la recherche par mot clé, qui permettra d'accéder rapidement aux issues nécessaires pour une problématique donnée.
# Les issues sont récupérées sur Eclipse et la synchronisation des issues permet la mise à jour de Github vers Eclipse et de Eclipse vers Github.
# Les issues sont affichées dans la fenêtre que je retrouve depuis la vue PHP dans "Liste des tâches".
# Noter que j'ai identifié un bogue avec MyLyn, Eclipse IDE for PHP Developers Version: 2019-09 R (4.13.0) et Github.
# Les Labels de Github contenant un accent entraînent une erreur rendant la synchronisation impossible.
# Il faudra éditer les labels sans accent.
# Si besoin, il faudra supprimer le dépôt de tâches, concernant un projet donné, et, le recréer, comme expliquer au début du paragraphe.
# Ce n'est peut être pas indispensable, car, un petit icône permet d'actualiser la liste des catégories, une fois dans " Clic droit / Nouveau / Query".
# Des catégories peuvent également être créées pour classer les issues depuis Eclipse mais elles ne seront pas ajoutées aux Labels de Github.
# Si nécessaire, affiner la recherche par mots clés pour faire apparaître les issues d'un seul collaborateur par exemple.
# Depuis la vue  de fenêtre Généralités / Rechercher, il est également possible d'afficher toutes les issues du projet Github.
# Chaque issue peut alors être ajoutée à une catégorie créée précédemment depuis Eclipse, ce qui permet de retrouver les tâches depuis la "Liste des tâches", dans une catégorie propre à Eclipse.
# Si une issue est ouverte, il est toujours possible de lui assigner une catégorie déjà existante dans les Labels de Github.
# En conclusion, ça fonctionne très bien, une fois que l'on sait ou chercher.
# L'interface graphique pourrait être améliorée, notamment, en ce qui concerne la lisibilité des boutons et du texte.

Utiliser la vue Git

Commit le fichier du projet en local

La fenêtre du bas propose l'onglet Git Staging.
On peut lire Unstaged Changes (1). Cliquer sur le bouton + pour ajouter le fichier à la liste des fichiers qui seront commit.
Renseigner le message pour le commit.
Laisser le nom de l'auteur et du comitter par défaut.
Cliquer sur Commit.

Push to Upstream le fichier du projet vers Github

Revenir à l'onglet Git Repositories sur la gauche.
La branche master affiche une flèche vers le haut et le chiffre 1 pour indiquer qu'un commit est en attente d’envoi sur le serveur Github.
Clic droit sur la ligne et Push to Upstream.
Renseigner le nom d'utilisateur Github et le mot de passe de Github.
Valider.
(J'ai un message d'erreur si je demande à Eclipse de conserver le mot de passe.)
Rafraîchir la page Github qui contient le code du projet : https://github.com/ZerooCool/bot-cannabis-educatif
Le code a bien été mis à jour.

Attention aux commits trop rapides depuis la perspective Git

Une fois un fichier modifié, on change de perspective pour utiliser la perspective de Git.
Dans l'onglet Git Staging on observe les fichiers ayant été modifiés, qui peuvent être proposé au commit, ainsi que la zone de commentaire.
Je constate ce qui s'apparente à un bogue.
Si je sélectionne les fichiers modifiés pour les ajouter au commit, avec le bouton "+".
Je commence à saisir un texte pour expliquer la raison du commit, et, en cas de touche entrée pour changer de ligne, le commit est envoyé en local, mais, pas sur le dépôt distant.
Je ne trouve pas alors la commande pour pousser le commit en attente.
Pour éviter ce problème, il vaudrait mieux commencer par rédiger la raison du commit, car, la touche entrée refusera d'envoyer le commit puisque aucun fichier n'aura été proposé à l'ajout.
Une fois le message rédigé, ajouter ses fichiers au commit, et, cliquer sur le bouton Commit and Push. Les modifications sont prises en compte localement et sur la branche distante de Github.
Finalement, je comprend qu'on peut Push les commits qui sont en attente depuis l'espace de gauche, en cliquant droit sur la branche principale du projet, Push Branch (Nom de la branche du projet.)
Push to Upstream ... Pousse votre branche comme vous le souhaitiez vers la branche de suivi à distance.
Push ... Ouvre une boîte de dialogue et vous permet de spécifier les refspecs à pousser, y compris les balises, les cas spéciaux tels que HEAD: refs / heads / master, etc.
Source : https://stackoverflow.com/questions/8762007/whats-the-difference-between-push-and-push-to-upstream-in-eclipse

Consulter l'historique de Git

Dans la fenêtre du bas, aller dans l'onglet Git Reflog pour consulter les dernières modifications.
Double cliquer sur une modification pour afficher une nouvelle fenêtre d'informations. En bas à gauche de cette fenêtre, deux onglet sont disponibles : Commit et Diff.
Utiliser l'onglet Diff pour voir les dernières modifications apportées au fichier.

Utiliser la vue Synchronisation de l'équipe

Utiliser cherry-pick pour récupérer un commit et l'appliquer sur une autre branche

La commande git cherry-pick permet de récupérer une modification poussée sur une branche vers une autre branche grâce à l'ID du commit.
Avec Github, on pousse les correctifs comme d'habitude et on obtient un ID servant de référence pour les correctifs effectués, visible depuis l'historique de Github :
https://github.com/ZerooCool/phpsecinfo/commit/ca82f1c0a9825afac5690619775bd2d59e8123fa#diff-04c6e90faac2675aa89e2176d2eec7d8
L'ID pour les modifications apportées est le suivant : ca82f1c0a9825afac5690619775bd2d59e8123fa
Depuis la vue PHP.
Avec Eclipse, cliquer droit sur la branche de développement, et, changer de branche pour aller sur la branche devant recevoir cette même modification.
Si les branches ne sont pas encore affichées localement, on les affiche à l'aide du dépôt distant pour permettre à Eclipse de les identifier localement.
Switch To / Other / Remote Tracking - Choix de la branche - Check Out / Check Out as New Local Branch / Laisser les options par défaut et valider.
On retrouve à ce moment la nos branches disponibles dans Eclipse, dans la vue de gauche, dans Local.
Depuis la vue Synchronisation de l'équipe.
Pour pouvoir appliquer un cherry-pick il va être plus pratique pour différencier cette pratique d'ouvrir une nouvelle vue de Eclipse, la vue Synchronisation de l'équipe.
Je me positionne sur la branche qui va recevoir le fichier modifié en provenance du commit effectué sur la branche de développement.
Deux fenêtre nous intéressent, la fenêtre Synchroniser, et, Commun.
######
# Vérifier cette étape, j'ai du effectuer une action pour arriver à afficher les informations dans les fenêtres !
# Sûrement avec le bouton " Synchroniser Git " et la sélection du dépôt pour accès direct par le dépôt.
######
Depuis la fenêtre Synchroniser, on voit que l'on est bien sur la branche devant recevoir la modification.
Depuis la fenêtre Commun, on peut observer les dernières modifications ayant été appliquées.
C'est depuis la fenêtre Commun que la commande cherry-pick peut être effectuée. On localise le commit a appliquer sur la nouvelle branche, clic droit, Cherry-Pick.
On pousse alors ce commit, depuis la vue Commun, cliquer droit sur le dernier élément en haut de la liste, Push Commit.

On peut revenir à la vue précédente avant de pousser le commit, sur la vue de Git, pour observer visuellement les modifications sur le fichier. Les modifications sont bien appliquées sur le dépôt local.
On ne voit aucun fichier dans la fenêtre Git Staging, il a déjà été commit localement. Au niveau du nom de dépôt on observe une flèche vers le haut qui indique un commit à pousser.
Il ne reste plus qu'à envoyer le fichier vers le dépôt distant de Github, ce qui aurait pu être fait depuis la vue précédente, depuis la fenêtre Commun, avec Push Commit.
On peut toujours pousser les fichiers en attente depuis la vue Git en cliquant droit sur le nom de la branche en haut à gauche de l'écran, puis, Push to Upstream.

Vérifier si des fichiers du dépôt distant sont à récupérer

Un chiffre discret est affiché dans le projet affiché à gauche, dans le lien racine du projet.
Depuis la fenêtre synchroniser, cliquer sur le bouton Pull.

Créer un dépôt local avec deux branches

Créer un projet PHP.
Donner un nom : HelloWorld.
Terminer.
La perspective PHP est proposé. Accepter.
Créer un nouveau fichier PHP dans le projet HelloWorld.
Donner un nom au fichier : HelloWorld.php
Ajouter une ligne de code : echo "Hello World";
Enregistrer le fichier.
Cliquer droit sur le projet PHP.
Team > Partager le projet.
Cliquer la case, utiliser ou créer le repository dans le dossier parent du projet.
Sélectionner le projet.
Cliquer sur le bouton : Create Repository. L'adresse sera par exemple de la forme /opt/lampp/htdocs/Eclipse-Workspace/HelloWorld (/.git)
Terminer. Un dossier de Repository est maintenant disponible.
La première ligne du projet dans la vue de l'Explorateur de Projet à gauche affiche : HelloWorld [HelloWorld NO-HEAD]
Cliquer droit sur le projet PHP.
Team > Commit > Ajouter les fichier avec le bouton ++ ainsi qu'un commentaire. Valider le commit.
La première ligne du projet dans la vue de l'Explorateur de Projet à gauche affiche : HelloWorld [HelloWorld master]
La branche principale est créée.
Cliquer droit sur le projet PHP.
Team > Switch To > New Branch
Nommer la nouvelle branche HelloWorld_2 et laisser les options par défaut. Valider.
La première ligne du projet dans la vue de l'Explorateur de Projet à gauche affiche : HelloWorld [HelloWorld HelloWorld_2]
La branche secondaire est créée.

Commit des changements sur une branche

Cliquer droit sur le projet PHP.
Team > Switch To > master pour revenir sur la branche principale master.
Changer le code du fichier HelloWorld.php pour echo "Hello World Master";
Enregistrer le fichier modifié.
Team > Commit > Ajouter le fichier modifié avec le bouton ++ ainsi qu'un commentaire. Valider le commit.
Cliquer droit sur le projet PHP.
Team > Switch To > HelloWorld_2 pour revenir sur la branche secondaire HelloWorld_2.
On constate que HelloWorld_2 affiche le code echo "Hello World"; alors que la branche master qui a été modifiée affiche echo "Hello World Master";
Le contenu des deux branches est donc bien différent.
Modifier le code de la seconde branche pour echo "Hello World Secondaire";
Team > Commit > Ajouter le fichier modifié avec le bouton ++ ainsi qu'un commentaire. Valider le commit.
Cliquer droit sur le projet PHP.
Team > Switch To > master pour revenir sur la branche principale master.

Merge une branche vers une autre branche

Nous sommes sur la première branche master qui pourrait contenir un code peu avancé prêt à être remplacé par la branche secondaire HelloWorld_2.
Cliquer droit sur le projet PHP.
Team > Merge > Select a branch or tag to merge into the 'master' branch
On choisi la branche HelloWorld_2 qui va être merge dans la branche master.
Merge options : Commit (Commit the result). Fast forward options : If a fast-forward, only update the branch point.
Valider le bouton Merge.
La branche master affiche maintenant echo "Hello World Secondaire";
Le code en développement de la branche secondaire a bien été merge vers la branche principale.
En cas de conflit, il est possible de sélectionner l'information à conserver, un code délimitera les zones de conflits pour une correction manuelle.
Le merge n'est pas automatique à ce moment la et le code nécessite une relecture.

Notes

Le commit est prioritaire pour enregistrer les modifications apportées sur une branche. Bien penser à commit son code avant de merge.
Changer de perspective pour changer de branche plus facilement : Fenêtre > Perspective > Ouvrir la perspective > Autre > Git

Créer un patch

Créer un patch est également une option intéressante de Eclipse.
Le patch permet d'appliquer des changements sur un fichier initial.
Lors de l'utilisation du patch, un dossier "a" est créé.
Placer dans ce dossier le fichier initial.
Appliquer le patch, ou, le patch inverse.
Le fichier initial qui a été copié dans le dossier "a" se voit modifié par le patch.
Compléter par la suite pour créer et utiliser un patch.

Configurer EGit

Dans Eclipse PDT, MyLyn est proposé par défaut, je n'ai donc pas eu besoin de tester EGit.
Il n'est pas nécessaire d'installer MyLyn dans le cas d'une utilisation basique de EGit.
Installer EGit en utilisant le lien : http://download.eclipse.org/egit/updates
Installer uniquement Eclipse EGit.

Installer le connecteur Github

L'adresse de dépôt Egit suivante permet d'installer le connecteur Github si celui ci n'est pas présent sur votre version de Eclipse, comme dans mon cas avec le dernière version de Eclipse PHP 2019.
Ce connecteur fonctionne également avec Mylyn. Il ne nécessite pas l'usage exclusif de Egit.
http://download.eclipse.org/egit/github/updates

Bibliographie

 Tips and Tricks: Using Eclipse with GitHub : https://eclipsesource.com/blogs/2012/08/28/tips-and-tricks-using-eclipse-with-github/
Utiliser Git avec Eclipse : https://www.supinfo.com/articles/single/5342-utilisation-git-avec-eclipse
Source : http://tutoriels.meddeb.net/tag/git-eclipse/
Source : http://tutoriels.meddeb.net/tuto-git-utiliser-git-avec-eclipse/
Source : http://tutoriels.meddeb.net/tuto-git-utiliser-git-avec-eclipse-publier-tagger-visualiser/
Source : https://eclipsesource.com/blogs/tutorials/egit-tutorial/
Source : https://www.php-geek.fr/configurer-et-utiliser-egit-eclipse.html
Source : https://www.supinfo.com/articles/single/5342-utilisation-git-avec-eclipse
Source : https://help.eclipse.org/photon/topic/org.eclipse.egit.doc/help/EGit/User_Guide/User-Guide.html?cp=31

NAVIGATION

PARTICIPER ET PARTAGER

Bienvenue sur le wiki de Amis SH.
De nombreuses pages sont partagées sur ce wiki.
Créer un compte utilisateur pour participer sur le wiki.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Utiliser la recherche interne du wiki pour trouver votre contenu.
La page de discussion de Amis SH vous permet de poser vos questions.
Consulter le site amis-sh.fr pour installer votre propre serveur web.
Améliorer le contenu des pages avec vos retours depuis l'onglet discussion.
Ce contenu ne doit pas servir à nuire à autrui ou à un système informatique.
Protéger votre système Linux ou Windows avec cette page dédiée à la sécurité.

SOUTENIR CE WIKI

Soutenir le wiki avec un don en monnaie numérique :
AEON - Bitcoins - Bitcoins Cash - Bitcoins Gold - Bitcore - Blackcoins - Basic Attention Token - Bytecoins - Clams - Dash - Monero - Dogecoins - Ğ1 - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash

OBTENIR DE LA MONNAIE NUMERIQUE

Obtenir gratuitement de la monnaie numérique :
Miner de la cryptomonnaie.