Ceci est une ancienne révision du document !
Ubuntu Dapper
Comment utiliser GIT pour développer le noyau Ubuntu ?
Résumé
GIT est le nouvel outil de gestion de code source (SCM) utilisé par les développeurs du kernel Linux. Ubuntu a adopté cet outil pour le code source de son kernel afin de davantage interagir avec la communauté et les développeurs du kernel.
Arbres GIT actuels
Obtenir GIT
Installez simplement le paquet git-core :
sudo apt-get install git-core
Note : Le paquet git est un outil complètement différent qui ne fera pas ce que vous voulez.
Utiliser le dépôt du noyau Linux Ubuntu
Pour télécharger une copie locale du dépôt git du noyau Linux Ubuntu, utilisez la commande suivante (gutsy est à remplacer par le nom de la version utilisée) :
git-clone git://kernel.ubuntu.com/ubuntu/ubuntu-gutsy.git ubuntu-gutsy
Cela va prendre quelque temps, selon la vitesse de votre connexion internet. Il y a environ 220MO de données à télécharger à l'heure actuelle (et ça augmente continuellement).
Une fois la récupération effectuée, vous pouvez conserver votre arbre à jour en exécutant cette commande (dans le répertoire avec les sources téléchargés précédement) :
git pull
Soumettre des changements au dépôt principal
Sachant que le dépôt principal n'est pas accessible en écriture par le public, le principal moyen pour faire parvenir des patchs à l'équipe du kernel est d'utiliser git-format-patch*. Le résultat de cette commande peut ensuite être envoyé à la liste de diffusion kernel-team.
Néanmoins, si vous possédez un dépôt public git depuis lequel les changements peuvent être ajoutés, vous pouvez utiliser git-request-pull pour générer un mail à envoyer à la liste de diffusion kernel-team.
Modèles de soumission
Dans debian/commit-templates/, vous pouvez trouver plusieurs modèles qui doivent être utilisés lorsque vous proposez des changements à intégrer au dépôt du kernel Ubuntu. Les modèles de soumission contiennent des commentaires expliquant comment renseigner les informations requises. Notez par ailleurs que toutes les soumissions doivent avoir une ligne Signed-off-by (l'option -s de git-commit). Une commande git-commit typique ressemblera à:
git-commit -s -F debian/commit-templates/patch -e
Notez que l'option -e (edit) doit suivre l'option -F, sans quoi git ne vous autorisera à éditer le commit-template avant de soumettre les changements.
Voici à quoi ressemble un exemple de journal des changements:
[UBUNTU:scsi] My cool change to the scsi subsystem UpstreamStatus: Merged with 2.6.15-rc3 My cool change to the scsi subsystem makes scsi transfers increase magically to 124GiB/sec. Signed-off-by: Joe Cool Hacker <jch@reet.com>
Développeurs du kernel Ubuntu (avec un accès à rookery)
Afin d'avoir votre dépôt git chargé automatiquement, suivez ces instructions.
D'abord, identifiez-vous sur rookery, et exécutez ces commandes :
$ mkdir public_html/archives $ cd public_html/archives $ git clone -s -n -l /home/bcollins/public_html/archives/ubuntu-2.6.git ubuntu-2.6 $ mv ubuntu-2.6/.git ubuntu-2.6.git $ rmdir ubuntu-2.6
Cela va créer ~/public_html/archives/ubuntu-2.6.git. Attention, vous ne devez pas l'utiliser pour mettre à jour (il faut toujours mettre à jour à partir de rsync.kernel.org). Cependant, vous pouvez permettre autoriser d'autres à mettre à jour depuis ce dépôt si vous avez des choses que vous voulez qu'ils testent. Le drapeau -s autorise votre dépôt à partager des objets avec les dépôts principaux. Ce la permet de réduire l'espace occupé sur rookery.
Pour charger votre dépôt vers son clone sur rookery, tapez :
git push ssh://rookery.ubuntu.com/home/<yourname>/public_html/archives/ubuntu-2.6.git
Vous devez envoyer un mail à la liste de diffusion kernel-team avec votre nom d'utilisateur, afin d'être ajouté à la liste des dépôts à charger dans le dépôt principal.
Tout travail effectué sur le master (HEAD) sera automatiquement intégré dans le dépôt principal. Tout travail que vous souhaitez garder localement doit être fait dans une branche.
Informations supplémentaires
Lisez la documentation incluse avec les sources git pour plus de détail sur les différentes commandes.
On peut remplacer:
$ git clone -s -n -l /home/bcollins/public_html/archives/ubuntu-2.6.git ubuntu-2.6 $ mv ubuntu-2.6/.git ubuntu-2.6.git $ rmdir ubuntu-2.6
par
$ git clone --bare -s -n -l /home/bcollins/public_html/archives/ubuntu-2.6.git ubuntu-2.6.git