Fr/FlightGear et Git

From FlightGear wiki
Revision as of 21:16, 4 June 2012 by Christian (talk | contribs) (Corrected link to English page + removed link to this page itself)
Jump to navigation Jump to search

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:

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

Cloning and manipulating the GIT
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.

https://gitorious.org/users/new
https://gitorious.org/login

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)

  1. Créez un dossier unique sur votre PC, p.ex: "..\GIT"
  2. 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"))
  3. 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

Creating a merge request at Gitorious.

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

Template:Construction