FAQ Récupérer, mettre à jour les sources GIT du projet
Voici les informations sur comment récuperer et travailler avec les sources du projet Dolibarr en utilisant GIT.
Recevoir la dernière version des sources par téléchargement
Cette méthode vous permet de recevoir les sources de la branche de développement principale (Appelée HEAD). Cette opération consiste à récupérer la dernière version des fichiers de l'application Dolibarr qui sont compilées chaque nuit dans un fichier tgz. Ce fichier est disponible par le lien suivant:
Last GitHub snapshot of Dolibarr source files.
Les nouveaux fichiers écrasent les anciens. Le problème de cette méthode est qu'il faut télécharger et décompresser chaque fois le paquet dès que l'on souhaite recevoir des mises à jour.
Recevoir la dernière version des sources en utilisant un accès anonyme GIT.
Prérequis
- Avec l'IDE Eclipse
Premièrement, vous devez avoir une installation fonctionnelle de Eclipse. Le plugin EGit doit aussi être installé. Pour l'installer, utilisez Help depuis le menu Eclipse puis cliquez sur Install new softwareet cliquez sur Available software site. Dans la liste des adresses qui apparait, recherchez le lien :
http://download.eclipse.org/egit/updates
Puis, choisissez d'installer EGit.
- Avec le client GIT en ligne de commande
Pour récuperer les sources dans l'intention de les modifier, vous avez besoin d'un compte GitHub, et un client GIT (Les outils GIT en ligne de commande Linux, ou le client GIT d'Eclipse).
Processus de Clone
Tout d'abord, saisissez la valeur du dépôt avec les sources de référence dans votre client GIT.
- Avec l'IDE Eclipse, choisissez « Cloner le dépôt GIT ». Saisissez l'URL GIT du projet à récupérer.
L'URL GIT de la source officielle de Dolibarr est :
git@github.com:Dolibarr/dolibarr.git
ou
git://github.com/Dolibarr/dolibarr.git (lecture seule)
Votre client GIT Eclipse vous demandera de sélectionner les branches qui vous intéressent. Les branches non sélectionnées actuellement peuvent être sélectionnées ultérieurement en effectuant une récupération depuis la vue « Remotes », mais essayez de ne sélectionner que la branche dont vous avez besoin. Cela vous fera gagner du temps et vous évitera des problèmes par la suite.
- Avec le client GIT en ligne de commande :
Configurez d'abord votre client GIT :
git config --global user.name "Votre nom"
git config --global user.email "utilisateur@domaine.com"
git config --list
Clonez ensuite le dépôt localement :
git clone git://github.com/Dolibarr/dolibarr.git dolibarr
Si vous êtes derrière un pare-feu, vous pouvez utiliser l'URL alternative :
git config --global http.proxy http://proxyuser:proxypass@proxyserver:proxyport
git clone https://gitlogin:gitpassword@github.com/Dolibarr/dolibarr.git dolibarr
Une fois cette étape validée, votre client GIT téléchargera tous les fichiers depuis le serveur GIT distant. Cette opération peut prendre quelques secondes, voire quelques minutes.
Une fois le téléchargement terminé, accédez à la vue GIT - Branches - Local. Dans la plupart des cas, la branche choisie devrait déjà être disponible.
Si ce n'est pas le cas :
- Avec Eclipse, faites un clic droit sur « Branches - Remotes - La branche à dupliquer localement ».
Si vous choisissez « Créer une branche », le contenu de la branche sera dupliqué pour pouvoir être utilisé localement. Si vous choisissez « Extraire », la vue « Répertoire de travail » sera mise à jour.
- Avec GIT en ligne de commande
git checkout develop
git checkout x.y
Cela créera une branche locale et effectuera l'extraction automatiquement.
Si vous utilisez Eclipse, une fois votre branche créée localement, créez un projet PHP depuis l'assistant en choisissant « Créer à partir d'un projet existant » et sélectionnez le répertoire correspondant à votre dépôt GIT local (ne créez pas de projet PHP de toutes pièces). Faites ensuite un clic droit sur le projet dans votre espace de travail Eclipse et choisissez « Équipe - Partager ». Sélectionnez GIT et cliquez sur l'option « Utiliser ou créer un dépôt dans le dossier parent du projet ». Une autre méthode consiste à utiliser Fichier > Importer, Git > Projet depuis Git. Sélectionnez le dépôt Git, puis utilisez l'assistant Nouveau projet > Projet PHP. Saisissez le dossier de votre dépôt GIT local.
Vous pouvez ensuite configurer Eclipse pour qu'il n'analyse pas tous les fichiers du projet à la recherche de ses outils de compilation (analyseur de contours, analyseur de tâches, analyseur de syntaxe, etc.). Cela évitera des ralentissements. Pour cela, faites un clic droit sur le projet, choisissez « Chemin de compilation » et configurez-le comme illustré ci-dessous.
Récupérer la dernière version des sources avec un accès GIT complet
Prérequis
First you must have a working install of Eclipse. EGit plugin must also have been installed. For this, use the Find And Install process into Eclipse menu, add the GIT update URL:
http://download.eclipse.org/egit/updates
Then choose to install EGit.
You must before create an account on GitHub (https://github.com/) and upload a public RSA or DSA certificate into your account profile.
Processus de clone
Le processus est le même que pour récupérer les sources de manière anonyme (voir ci-dessus), seule l'URL d'accès change.
URL à utiliser pour le clonage GIT:
git@github.com:Dolibarr/dolibarr.git
Noter que une URL HTTP est aussi disponible mais est parfois hors service (aussi prenez de préférence la méthode précédente):
https://yourgitlogin@github.com/Dolibarr/dolibarr.git
Mettre à jour votre repository
Pour mettre à jour votre espace de travail local, faites un clic droit sur le projet Eclipse et sélectionnez "Pull".
Si vous avez apporté des modifications à votre espace de travail Eclipse sur des fichiers qui ont été modifiés dans la référence distante GIT, votre client GIT effectuera un merge automatiquement.
- S'il y a des conflits, le merge marquera tous les fichiers en conflit comme "conflit" (Voir plus loin pour résoudre cet état).
- Sinon, vous obtiendrez tous les nouveaux fichiers de version, y compris toutes vos modifications.
If you already have commited some files into your local repository, your workspace will be marked as "Merged". All you have to do is make a commit to validate your local repository as including your changes and changes made by others.
Validez et publiez vos modifications
Pour voir toutes les modifications que vous avez apportées à votre répertoire de travail et en attente d'être ajoutées à Git:
- Avec l'interface >GIT en ligne de commande:
git status
git diff subdir/filename
Pour ajouter les modifications apportées à votre dépôt local dans l'index GIT, validez cet index :
- Avec Eclipse : Faites un clic droit sur le fichier ou le répertoire à valider. Sélectionnez le fichier à ajouter, supprimer ou mettre à jour.
- Avec l'interface de ligne de commande GIT :
git commit -a -m "Texte du commit"
Cela enregistrera les ajouts et les modifications dans votre branche locale.
Pour les pousser sur le serveur du dépôt GIT :
- Avec Eclipse : Faites un clic droit sur le projet et choisissez « Équipe - Transférer vers l'amont ».
- Avec l'interface de ligne de commande GIT :
git push
Pour annuler un commit :
- Avec l'interface de ligne de commande GIT :
git revert IdCommit ou git revert HEAD (pour le dernier commit)
Ajouter un commit extérieur dans votre repository courant
Certains développeurs peuvent travailler et effectuer des commits dans leur propre dépôt Git après avoir dupliqué le projet. Si vous souhaitez obtenir ces modifications, vous pouvez les importer avec Eclipse en suivant les étapes suivantes :
- Tout d'abord, accédez à la configuration GIT, faites un clic droit sur « Remotes » dans votre espace de travail Git Eclipse et choisissez « Créer un dépôt distant… ».
- Saisissez le nom ou le fork distant créé par le développeur (généralement, le login Git du développeur). Par exemple : « thedevlogin ». Choisissez également « Configurer la récupération ».
- Saisissez l'URI du dépôt Git du développeur. Par exemple : « git://github.com/thedevlogin/dolibarr.git ». Ajoutez également une valeur refspec pour déclarer la branche à récupérer. Par exemple : « refs/heads/master:refs/remotes/thedevlogin/master ». Cliquez sur « Enregistrer et récupérer ». Une nouvelle entrée sera ajoutée à la section « Suivi à distance », permettant de lire et d'obtenir les commits effectués dans cette branche.
Maintenant, accédez à la ligne de commande de votre dépôt Git (généralement sous Linux, il s'agit de « /home/yourlogin/git/yourdolibarr ») et saisissez la commande git cherry-pick :
git cherry-pick -x commitid
où commitid correspond à l'identifiant de commit souhaité.
Une fois cette opération effectuée, retournez dans Eclipse et actualisez le projet. Vous verrez les fichiers modifiés apparaître avec les décorateurs (et les conflits éventuels).
Si la tentative de cherry-pick échoue à cause de conflits, vous pouvez l'annuler avec
git cherry-pick --abort
Résoudre un conflit
Si un fichier est marqué en "Conflit" après un "Pull", ouvrez le fichier et éditez le. Rechercher la chaine "<<<<<<<<<<", vous verrez la partie de code en conflit entre "<<<<<<<<<" et ">>>>>>>>". Editer manuellement les lignes de codes pour avoir le résultat finale en supprimant également les "<<<<<<<<" et ">>>>>>>".
Ensuite, faire un click droit sur le fichier puis choisir "Add".
Si vous préférez annuler complètement toutes les modifications que vous avez apportées à tous les fichiers (afin de restaurer votre espace de travail avec le contenu du repository distant), vous pouvez effectuer une réinitialisation:
- Avec Eclipse, faites un clic droit sur la ligne supérieure du projet et sélectionnez "Réinitialiser" puis "Hard" then "Reference - HEAD".
- En utilisant l'outil de ligne de commande GIT, vous pouvez y parvenir avec la commande
git reset --hard HEAD
Tagguer les sources
Avec les outils en Ligne de Commande GIT:
Pour créer un tag sur une version:
git tag -a -m "Release|Maintenance release x.y.z" "x.y.z"
or
git tag -a -f -m "Beta x.y.betai" "x.y.betai_YYYYMMDD" idcommit # -f force si un tag existe déjà, idcommit permet de choisir le commit à tagguer
git push --tags # Pour pousser le tags sur le serveur distant
Pour supprimer un tag:
git tag -d "x.y.z_YYYYMMDD"
git push origin :x.y.z_YYYYMMDD # Pour valider la suppression sur le serveur distant
Créer une nouvelle branche
Voici la commande à utiliser pour créer une nouvelle branche depuis un repository propre develop:
git branch x.y
git push origin x.y
Statistiques
Avec les outils en Ligne de Commande GIT:
Pour compter le nombre de changerment qu'un développeur a fait entre une version x et y:
- Tout d'abord, exécutez git merge-base pour connaître l'identifiant du dernier commit commun entre x et y.
git merge-base origin/3.1 origin/develop
- Exécutez ensuite git log pour obtenir la liste de toutes les modifications depuis le dernier commit commun jusqu'au dernier commit.
git log id_found_at_previous_step..HEAD
- Pour obtenir le nombre total de lignes ajoutées/supprimées :
git log --ancestry-path --numstat --pretty="%H" id_found_at_previous_step..HEAD | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}'
Pour compter le nombre de modifications finales entre une version x et une version y (ce comptage diffère du comptage précédent, car une modification peut être effectuée deux fois à deux moments différents pour obtenir une modification différente. Avec la deuxième méthode, vous comptez les modifications finales trouvées si les modifications étaient correctes au premier essai) :
- Utilisez la même méthode que précédemment, mais au lieu d'exécuter git log, exécutez git diff.
git diff -b -M --numstat --pretty="%H" id_found_at_previous_step..HEAD | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}'
Plus d'information sur l'utilisation de GIT disponible ici.