Comment utiliser Git pour développer le noyau Ubuntu ?
Présentation
Git
Git est un outil de gestion de code source (SCM) développé par Linus Torvalds, utilisé par les développeurs du noyau Linux. Ubuntu a adopté cet outil pour le code source de son noyau afin d'interagir davantage avec la communauté et les développeurs.
Arbres Git actuels
Les arbres Git actuels du noyau Ubuntu sont visualisables sur http://kernel.ubuntu.com/git.
Installation
Pour installer Git, il vous suffit d'installer le paquet git-core.
Utilisation du dépôt du noyau
Création d'un dépôt local
Pour télécharger une copie locale du dépôt git du noyau Linux Ubuntu, utilisez la commande suivante :
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-<version>.git ubuntu-<version>
<version>
est le nom de version voulue, à remplacer par gutsy
, karmic
, etc.
Cela peut prendre quelques temps, selon la vitesse de votre connexion internet. Il y a environ 310 Mo de données à télécharger à l'heure actuelle (et ça augmente continuellement).
Mise à jour des sources
Une fois la récupération effectuée, vous pouvez conserver votre arbre à jour en exécutant (dans le répertoire contenant les sources) :
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 de 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
(pour edit) doit suivre l'option -F
, sans quoi Git ne vous autorisera pas à é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 noyau 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 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. Cela permet de réduire l'espace occupé sur rookery.
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
est équivalent à :
git clone --bare -s -n -l /home/bcollins/public_html/archives/ubuntu-2.6.git ubuntu-2.6.git
Pour charger votre dépôt vers son clone sur rookery, tapez :
git push ssh://rookery.ubuntu.com/home/<nom>/public_html/archives/ubuntu-2.6.git
Vous devez envoyer un courriel à 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.
Voir aussi
- (fr) Documentation du wiki de Git pour plus d'informations sur les commandes ;
- (en) Guide original.
Contributeurs : mr_pouit.