Affichage des articles dont le libellé est egit. Afficher tous les articles
Affichage des articles dont le libellé est egit. Afficher tous les articles

mercredi 28 mai 2014

Initialiser un projet dans Eclipse à partir de GitHub


Environnement utilisé : GitHub, Eclipse Kepler (4.3) avec eGit

1) Sur GitHub

Sélectionner le repository à cloner et copier son URL dans le presse papier
2) Dans Eclipse

Dans le workspace : Import  /  Git  /  Projects from Git


Clone URI


L'URI du repository s'affiche (URI copiée dans le presse papier), sinon Ctrl-V


Sélection de la branche à cloner ( en général c'est la branche "master" que l'on souhaite récupérer )


Définition de la destination locale :

Le plugin eGit va créer un repository Git local qui sera le "clone" de celui de GitHub et il va en extraire les sources dans un répertoire situé au même niveau.
Par défaut il propose de tout localiser dans le répertoire Git qui a été défini pour le poste, les fichiers du projet seront donc situés hors du workspace (ce qui ne pose pas de problème mais ça peut vite devenir compliqué à gérer)


Si on souhaite localiser le tout dans le répertoire du workspace courant il est possible de changer la destination en utilisant "Browse".
Exemple après avoir sélectionner l'emplacement du workspace "myworkspace"


Mais c'est là qu'il y a une subtilité :

Dans un premier temps eGit va cloner le projet dans le répertoire de destination.
Ensuite le wizard d'import tente d'importer le projet dans le workspace, mais
si le projet est situé à la racine du workspace on obtient un erreur du type
"D:\myworkspace\myproject overlaps the location of another project: 'myproject'"

Alors il va falloir laisser le projet hors du workspace ?  :-( 
Non, il suffit de créer un répertoire intermédiaire, par exemple "gitprojects"
et de demander à eGit de localiser la destination dans ce répertoire.


Et ainsi tout se passe bien, le projet est cloné par eGit et correctement importé dans le workspace d'Eclipse. Le répertoire intermédiaire n'étant pas visible dans l'environnement Eclipse il ne gêne en rien
et tous les projets du workspace sont bien regroupés dans le même répertoire.

Pour l'import, le plus simple est de prendre systématiquement l'option "Import as general project" et de convertir ensuite le projet dans le type approprié (Java, Maven, etc)


NB: si un fichier ".project" est présent parmi les fichiers provenant de GitHub l'import va lever une erreur du type "A .project file already exists in directory D:\myworkspace\git-projects\xxxx"
Dans ce cas supprimer le fichier ".project" du répertoire (hors d'Eclipse avec l'explorateur du système d'exploitation) faire "Back" et relancer l'import (c'est le .project de GitHub qui sera donc importé)


mardi 5 mars 2013

GitHub avec Eclipse et "eGit" en 15 minutes

On ne présente plus GIT et GitHub. En y ajoutant Eclipse et le plugin "eGit" on disposera d'un environnement simple et efficace pour gérer des projets open source facilement partageables.

Rappel de l'architecture :



Pour la mise en place de l'ensemble, voici la marche à suivre...

1) Créer un "remote repository" sur GitHub


Première étape (si ce n'est déjà fait) se créer un compte sur GitHub :
un nom, une adresse mail, un mot de passe ... et hop c'est fait.

Une fois identifié, chaque utilisateur GitHub peut créer plusieurs "repositories".
Pour créer un repository : utiliser l'icône "Create a new repo" :


Il n'y a plus qu'à indiquer le nom du nouveau repository, sa description et à cliquer sur "Create repository" :

NB : Ne pas sélectionner "Initialize this repository with a README"
de façon à avoir un repository totalement vide, ce qui permet de suivre les étapes décrites ci-dessous.
( si le "repository" n'est pas vide, il faut passer par un import ).

Le "remote repository" est prêt à recevoir du contenu

2) Installer et configurer le plugin Eclipse pour GIT  ( "eGit" )


* Installation 
Comme pour tout plugin Eclipse, le plus simple est de passer par « Eclipse Marketplace »
( Menu : « Help » / « Eclipse Marketplace » ), de rechercher  « egit » et de l’installer :


* Configuration
Après installation du plugin, la configuration de GIT est accessible via "Window" / "Preferences" / "Team" / "GIT


C'est ici que l'on peut définir le répertoire qui contiendra les "repositories" locaux, ainsi que la configuration globale de GIT ( user, proxy http, etc )

NB : sous Windows l'emplacement des répertoires et des fichiers GIT est déterminé par la variable d'environnement "HOME".  Si cette variable n'est pas définie, ce sont les variables "HOMEDRIVE" + "HOMEPATH" qui sont utilisées.  Si "HOMEDRIVE" n'est pas définie, c'est "HOMESHARE" qui sera utilisée.



Configuration du répertoire des "local repositories"

Par défaut le répertoire des "local repositories" est "%HOME%/git".  Il peut être modifié avec "Browse"


Configuration utilisateur

Dans "Configuration" / "User settings
NB : la configuration globale de GIT pour l'utilisateur est stockée dans le fichier caché ".gitconfig" situé dans le répertoire défini par la variable d'environnement "HOME" ( ou HOMEDRIVE+HOMEPATH, ou HOMESHARE). L'emplacement de ce fichier ne peut pas être modifié par Eclipse.

C'est ici que sont définies (entre autres) les propriétés "user.name" et "user.email", définissant le nom d'utilisateur et son adresse email qui sont utilisés lors de chaque commit (ce qui permet d'avoir l'historique des commit).


La configuration de chaque repository ( "Repository Settings") sera accessible ultérieurement, quand les repositories auront été créés.


Eclipse est maintenant en capacité de gérer le contenu d'un projet avec un repository GIT

3) Associer un projet existant à un repository GIT


Si nécessaire créer un nouveau projet dans le workspace.

Comme pour Subversion, c’est tout le projet qui doit être associé à un gestionnaire de sources.
C’est donc au niveau du projet que va se faire l’association avec le repository.
Il suffit de faire un "click droit" sur le projet, puis "Team" / "Share Project"


Choisir "Git" + "Next"


A ce stade le "local repository" n'existe pas encore, il va donc falloir le créer :
  • cliquer sur "Create"
  • choisir le répertoire du "repository"
    l'emplacement proposé par défaut est celui qui a été défini dans la configuration
    il est possible de le changer avec "Browse" : pour cela, sélectionner le répertoire qui va contenir le "local repository" ( ex : D:\GIT-TESTS ) 
  • indiquer le nom du "repository"


Puis "Finish"


Cette fois le champ "Target Location" est renseigné et contient le chemin d'accès au "local repository"

Cliquer sur "Finish"

EGit va créer le "local repository" et déplacer le projet du workspace vers le repository.
( NB : le projet n'est plus physiquement dans le répertoire du workspace )

Des icônes spécifiques au gestionnaire de source apparaissent pour tous les fichiers du projet
Le point d'interrogation signifie que l'on n'a pas encore indiqué si le fichier devait être géré par GIT.

Nous pouvons maintenant gérer les différentes versions des fichiers sources dans le "local repository".

Les commandes GIT ( commit, etc ) sont accessibles par un click-droit + "Team"

Certains fichiers propres à chaque développeur n'ont rien à faire dans le repository des sources.
Pour les exclure il suffit d'afficher la vue "Navigator" ( "Window" - "Show View" - "Navigator" ) qui permet de voir tous les fichiers du projet et pour chaque fichier à exclure "Team" - "Ignore"  ( le point d'interrogation disparaît, GIT sait qu'il doit les ignorer).

Il ne reste plus qu'à faire un premier "commit" pour tous les fichiers du projet...

"Commit" sur le "local repository"

A la racine du projet : "Click-droit" - "Team" - "Commit" :
  • Indiquer le message du commit 
  • Sélectionner les fichiers concernés ( une sélection globale est possible avec "Select all" )


Et choisir "Commit" c'est à dire un commit sur le "local repository".

Cette opération peut être répétée aussi souvent que nécessaire, les différentes versions des fichiers du projet sont conservées par le "local repositoty" sans aucun impact sur le "remote repository".

Les fichiers modifiés depuis le dernier commit sont marqués avec ">"


"Push" sur le "remote repository"

Une fois que le projet a atteint une certaine maturité, il est nécessaire de faire un "Push" sur le "remote repository".

Pour ce faire :  "Click-droit" - "Team" - "Remote" - "Push" :


( autre possibilité : passer par "Team" - "Commit" et utiliser le bouton "Commit and Push"  )

A ce stade GIT ne connait pas le "remote repository" (celui de GitHub), il va donc falloir lui indiquer :

  • Sur GitHub, aller dans la liste des repositories, sélectionner le repository voulu et copier son URL ( le bouton "Copy to clipboard" est fait pour ça )
  • Copier cette URL dans la fenêtre d'Eclipse

  • pour le premier "Push" il faut indiquer le "User" et le "Password" de GitHub
  • bouton "Next >"
  • Sélectionner la branche ( "Source ref" et "Destination ref" )  puis  "Add Spec"
  • La "spécification" est ajoutée à la liste des "Specifications for push"


  • bouton "Next >"
  • la fenêtre de confirmation du "push" permet de vérifier les opérations qui seront réalisées
  • bouton "Finish >"
  • le résultat du "push" est affiché 
  • bouton "OK"
Et voila,  les fichiers sont maintenant à jour dans le "remote repository" sur GitHub.





4) Dissocier un projet existant de son repository GIT



Sur le projet : "click-droit" - "Team" - "Disconnect"
Le repository GIT existe toujours mais il n'est plus attaché au projet Eclipse



Quelques liens sur "GIT" et "eGit"