Fr/FlightGear et Git
Git est un logiciel de gestion de version utilisé par le projet FlightGear pour stocker tous les fichiers nécessaires à la construction de FlightGear, incluant tous les programmes, les données (p.ex:aircraft), prenant en charge les outils etc. Git piste toutes les mises à jour de tous les fichiers avec lesquels les développeurs travaillant en commun dans le monde entier créent de nouvelles versions
Pendant que les données et les ajouts sont en développement, ils sont disponibles pour Git avant d'être disponibles pour la version standard. Git permet aux usagers de construire la version la plus récente possible à partir des derniers fichiers source , pour expérimenter nouveaux avions ou autres. Cependant, ce n'est pas un outil de débutant. Se servir de Git peut exposer son utilisateur à des fonctions instables, avec messages d'énormes erreurs, ou même endommager l'ordinateur.
En Mai 2010, après une défaillance des serveurs CVS, le projet FlightGear est passé de CVS à Git. Les dépôts Git sont à l'adresse Gitorious et un miroir est hébergé à Mapserver.
Grâce à ce "récent" branchement, nous faisons de notre mieux pour fournir la documentation pour avoir FlightGear sur Git. Les articles suivants sont en cours:
- Mac OS X: FlightGear Git on Mac OS XFlightGear Git on Mac OS X
Windows: FlightGear Git on WindowsFlightGear Git on Windows
Howto:Début avec Git fournit une introduction rapide à l'usage de Git
Motivation
On a beaucoup écrit sur les avantages de Git sur CVS. Pour le projet FlightGear, ils sont les suivants:
- Bien meilleure prise en charge des branches et des branches fusionnantes. Ceci est particulièrement important pour réparer les bug dans les versions majeures, en permettant de continuer à travailler sur la prochaine version majeure. C'est parfait pour le développeur.
- Chemin trés facile pour les contributeurs qui proposent des changements ainsi que pour les développeurs qui les introduisent.
- Bien meilleure prise en charge des tâches quotidiennes, comme chercher l'historique des changements dans le projet, examiner ces changements, disséquer l'historique à la recherche de la cause d'un bug
Donc, comme on l'a dit, les serveurs CVS sont tombés en panne, précipitant FlightGear vers Git
Manipulation de GIT
Vue générale
Pour une description détaillée, voir les 4 dépôts (A,B,C,D) dans les chapitres suivants |
A) Dépots et branches
Pour raison historique, on continue de séparer les dépôts pour SimGear et FlightGear source. Pour la plupart des utilisateurs et développeurs, les plus intéressants sont:
- next C'est la commande habituelle pour les nouveaux développements. Cette branche doit toujours compiler et exécuter, mais plusieurs choses peuvent ne pas marcher.
- release/* C'est la branche sous-directrice, contenant les versions antérieures, ou futures, s'il y en a
Pour les autres branches disponibles, jetez un œil à repository gitorious.org. Les 2 branches suivantes datent de mai 2011 et sont périmées Do not use.
- master C'est la commande des nouvelles versions, éprouvées et stables. Si on voulait une nouvelle version aujourd'hui, c'est de cette commande qu'il faudrait partir. Les nouvelles versions, "cuisinées" depuis quelques jours ou semaines se trouvent là.
maint C'est la correction des bugs pour les versions Fg les plus récentes. Quand une version est faite à partir de master, cette branche lui est associée.
Les branches des data' FlightGear intéressantes sont:
- master C'est celle employée avec la branche de la source next
- release/* C'est la même que pour la source.
Ce procédé suit le schéma des mainteneurs de Git [1]. Cette description est très technique. Vous aurez sûrement terminé git-fu, si vous l'avez entièrement comprise. Cependant, le maintien de plusieurs branches de stabilité différentes est habituel dans les projets de software en collaboration.
B) Créer votre espace de travail sur Gitorious
D'abord, pour pouvoir manipuler les GIT-data, vous devez vous enregistrer.
Ensuite, tapez http://gitorious.org/fg pour enregistrer les projets disponibles. Voir p.ex:
- flightgear
- simgear
- fgdata
- getstart
etc.
Créez votre propre "GIT-Clone" (en tant qu'espace de travail) en activant le bouton "Clone repository" du projet désiré. Par défaut, vous clonerez la branche next de ce projet --> c'est le dépôt actuel, comprenant les tous derniers changements, non encore diffusés. C'est probablement ce dont vous avez besoin, si vous voulez:
- participer en signalant des bugs avant publication de la version définitive
- ou participer au dessin
- ou autre
Si d'autres branches/versions vous intéressent, voir le bouton "Source Tree".
Mais n'oubliez pas: pour réussir à compiler fgfs
, Flight- et l'"arbre de travail" de SimGear doivent être similaires
Le GIT-clone créé sera https://gitorious.org/~YourUID ("YourUID" étant votre ID, vous vous enregistrez avec, et n'oubliez pas le "~" en face!))
C) Créez un "master" sur votre PC local
Tout ce qui suit est réalisé dans un environment de "Terminal" UBUNTU! Veuillez adapter les directory trees à votre système opérationnel (OS)
- Créez un dossier unique sur votre PC, p.ex: "..\GIT"
- allez dans ce dossier et utilisez les commandes "git clone" pour cloner le dépôt désiré
- si vous voulez plus d'informations sur ces commandes, entrez "git help [command]" (p.ex: "git help clone"))
- employez une des commandes suivantes (ou similaires) à l'intérieur de "..\GIT"-folder:
- pour cloner SimGear utilisez:
- git clone git://gitorious.org/fg/simgear.git [target]
- Pour compiler avec succès
fgfs
Flight- and Sim-Gear's working tree doivent tous les 2 être pareils.
- pour cloner fgdata utilisez:
- git clone git://gitorious.org/fg/fgdata.git [target]
En exécutant une des commandes ci-dessus, le dossier target sera créé et un clone y sera stocké. Si target n'apparait pas, le nouveau nom de dossier est le GIT-name (i.e.: "simgear", "flightgear", "fgdata").
cd
dans le nouveau dossier [target]
- Vous êtes maintenant à l'intérieur du working tree de ce dépôt git. Le dépôt lui-même est stocké dans le sous-dossier .git, que nous ne devrons pas éditer manuellement. Git s'en chargera.
git branch
- montrera la branche active branch. p.ex:.
..GIT/fgdata$ git branch * master master.local (<-- ceci ne sera pas là initialement!) ..GIT/fgdata$
- Juste après téléchargement, ceci sera le GIT-repository-branch "next", lequel, sur votre PC est appelé "master". Le "*" en face signifie qu'il est maintenant l'actif! c.a.d: le contenu de "l"arbre de travail" actif est au ras du code source
git branch -a
- listera toutes les branches du depôt git. Une astérisque marque celui qui est actif. p.ex:
..GIT/fgdata$ git branch -a * master master.local (<-- ceci ne sera pas là initialement!) remotes/origin/HEAD -> origin/master remotes/origin/PRE_OSG_PLIB_20061029 remotes/origin/Short_Empire-public remotes/origin/Work remotes/origin/master remotes/origin/version/2.4.0 remotes/origin/version/2.6.0 remotes/origin/version/2.2.0 ..GIT/fgdata$
Vous avez maintenant votre "GIT-master" local. Mais: Pour faire des changements particuliers, comme éditer un fichier joystick, ajouter un avion à fgdata ou un patch au code cource, il est recommandé de créér une branche locale au sein de ce dépôt. Dans le chapitre D) Editing Data nous décrirons un moyen pour atteindre ce but. Mais gardez en tête que c'est très basique, et que cela ne convient qu'a des changements mineurs.
Special pour fgdata:
Aujourd'hui, le dépôt data fait environ 3.4 GB. Le clonage continu et interrompu du dépôt n'est pas pris en charge par Git. Par conséquent, si vous avez une connexion internet lente et instable, il est recommandé de télécharger le paquet fgdata.bundle.
Ayez aussi en tête, que le dépôt plus "l'arbre de travail" auront plus de 2 fois la taille des fichiers de votre système local.
Il n'y a ni branche "next" ni aucun tag dans le dépôt. Si vous voulez p.ex. construire FlightGear 2.0.0 vous devez trouver les données (FlightGear-data-2.0.0.tar.bz2) à l'un de ces miroirs mirrors.
fgdata.bundle (paquets)
Pour les données FlightGear il y a aussi des paquets (captures d'écran) disponibles que vous trouverez avec votre téléchargeur favori. Ainsi, vous pourrez reprendre des téléchargements interrompus. Après dépaquetage, une quantité de données relativement faible doit être transférée du serveur git pour synchroniser votre dépôt..
Télécharger le bundle de
$ wget http://flightgear.mxchange.org/pub/fgfs/fgdata.bundle
Le bundle peut être périodiquement mis à jour et les bundles de sources différentes n'ont pas besoin d'être les mêmes. La taille de fichier pour le bundle ci-dessus daté du 2011-12-13 est presque 4GB :-), pendant que la somme de contrôle md5 est
$ md5sum fgdata.bundle 145f4e190fd1a02fd75c1d508b8c2ec3 fgdata.bundle
Attention: serait celle-ci. Si le bundle est mis à jour,elle ne sera pas la même.
Pour extraire le bundle, et mettre le dépôt à jour, faites les étapes suivantes:
$ git clone fgdata.bundle fgdata $ cd fgdata $ git checkout -b master-tmp Switched to a new branch 'master-tmp' $ git remote rm origin $ git remote add origin git://gitorious.org/fg/fgdata $ git fetch origin $ git branch --track master origin/master $ git checkout master $ git branch -D master-tmp
Si vous avez un erreur à git fetch origin
essayez:
$ git remote rm origin $ git remote add origin git://mapserver.flightgear.org/fgdata/ $ git fetch origin
Soyez méfiant si, en suivant la progression, vous pensez que le téléchargement de datas risque dépasser 1GB (en supposant que le bundle n'est pas trop daté).
D) Éditon des Data
git checkout master
- changera la branche active branch versmaster. cela veut dire que le cntenu de working tree sera changé vers cet état.
git checkout v2.0.0
- activera l'état du code à l'intérieur de la branche master au moment ou FG 2.0.0 était édité.
git tag
- montrera tous les tags de l'histoire de la branche active.
git pull
- mettra à jour le dépôt local a partir de la télécommande.
un. Vous pouvez maintenant appliquer votre propre trame là, et démarrer FlightGear pour vérifier si les modifications sont correctes.
Si vous concluez qu'elles le sont, vous devez informer Git de ces changements:
git status
- vous donnera la liste des fichiers qui ont été modifiés et de ceux qui sont nouveaux..
git add -i
- montrera les fichiers modifiés et vous donnera les options sur que faire ensuite.
git add
n'ajoute pas actuellement les changements au master.local mais les ajoute à l' index. - [a]dd ajoutera de nouveaux fichiers de chemins (nommés untracked dans le status) duworking tree à l' index. Il faut faire cela si vous avez ajouté des fichiers de chemins, comme un avion, à "l'arbre de travail".
- Si Git trouve plus d'un untracked file/path, il vous en fournira une liste numérotée et vous invitera à sélectionner ceux qui doivent être ajoutés. Une entrée vide sortira de ce mode. Voir "Interactive mode" dans man git add pour plus de détails:
- [u]pdate est l'étape future et mettra à jour les fichiers modifiés et tracked à l'index comme expliqué dans add untracked paths ci-dessus.
git commit
- confiera les mises jour "indexées"à la branche master.local. Il ouvrira une liste des mises à jour dans votre éditeur habituel. Vous pouvez ajouter un commentaire à ce fichier donnant les raisons du commit de l'objet. Sauvegarde et quitte l'éditeur. Vous avez maintenant confié vos changements dans le working tree à votre branche personnelle.
Pour mettre à jour cette branche personnelle avec une télécommande, faites les pas suivants:
git fetch # update repo git checkout master # switch to master branch git rebase origin/master # update master branch git checkout master.local # switch back to the individual branch git rebase master # update it
Quelques commandes très utiles
git help
git help [commad]
git apply
- applique un patch aux fichiers et/ou à l'index http://www.kernel.org/pub/software/scm/git/docs/git-apply.html
git checkout -f
- peut être utilisé pour jeter quelques modifications locales au working tree. Utilisez avec précautions, comme toute option dont le nom est -f ou --force, et seulement après avoir lu
git checkout help
!
Suivi d'une release branch
git branch -t -l release/2.6.0 origin/release/2.6.0 git checkout -b release/2.6.0
Pour les futures MàJ faire git pull
.
Fusionnez vos données dns le Git
Éditer et "confier" les modifications
Faire un clone de fgdata, en cliquant clone repository button sur Gitorius. Confier votre trame à votre dépôt local (git commit), puis effectuez les commandes suivantes:
=== Rebase the master
git fetch
pour avoir les derniers commits de fgdata/git rebase origin/master
place votre propre commit en haut des plus anciens/
Retirer vos changements de votre clone sur Gitorious
git push git@gitorious.org:~name/fg/namess-fgdata.git
pousse vos commits vers votre clone fgdata Replace l'url avec l'url SSH de votre clone fgdata!
Allez à votre fgdata-clone sur Gitorious et cliquez le "Request merge" bouton à droite. Écrivez un court commentaire pour expliquer ce que fait votre commit(s). ensuite, choisissez les installations suivantes:
- Target directory: fgdata
- Target branch: master
- Source branch: master
Ensuite, sélectionnez les commits que vous voudriez inclure dans votre demande de fusion et cliquez "Create merge request".
Commit les changements dans le GIT
Cette étape est seulement pour les développeurs avec fgdata commit access !
Pousser la merge request vers fgdataTo push merge request to fgdata,On peut suivre la procédure suivante:
git checkout -b integration # la branche d'integration ne devrait pas encore exister. Vous pouvez utiliser le nom que vous voulez git pull git://gitorious.org/fg/fgdata.git refs/merge-requests/1 # assurez vous que vous changez 1 à l'id de la merge request git rebase master # placez les nouveaux commits au sommet des commits existants ( sans l'affreux "Merge branch into...") git checkout master git cherry-pick b049e1d # repétez ceci pour chaque commit que vous voulez pousser git push
Liens externes
Tutoriels Git et ressources
- Git documentation and tutorials
- Git as a way of life.
- The Git Cheat Sheet and the Git Cheat Sheet Extended Edition
- Egg, a cool Git emacs mode.
- Un guide pour utiliser Git sur Windows using Git on Windows
- Git on Windows Go! (Setting up msysgit on Windows)
- Git on Windows (webcast)
- qgit - interactive git repository viewer and frontend
- Additional Resources WRT running git on Win32