Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:mentors:git-buildpackage [01/03/2014 00:08] captnfab créée |
doc:mentors:git-buildpackage [01/03/2014 15:37] captnfab [Maintenir son paquet avec git-buildpackage] |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
* Niveau requis : {{tag>avisé}} | * Niveau requis : {{tag>avisé}} | ||
* Commentaires : //Pour maintenir vos paquets Debian sous git avec git-buildpackage. // | * Commentaires : //Pour maintenir vos paquets Debian sous git avec git-buildpackage. // | ||
- | * À savoir : [[:doc:mentors|Contribuer à Debian]] :-) | + | * À savoir : [[:doc:mentors:|Contribuer à Debian]] :-) |
- | * Suivi : {{tag>en-chantier à-tester}} | + | * Suivi : {{tag>à-tester}} |
* Création par **captnfab** 28/02/2014 | * Création par **captnfab** 28/02/2014 | ||
* Testé par <...> le <...> FIXME | * Testé par <...> le <...> FIXME | ||
- | * Commentaires sur le forum : [[url | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) FIXME | + | * Commentaires sur le forum : [[https://debian-facile.org/topic-8552-wiki-mentors-maintenir-ses-paquets-debian-avec-git-buildpackage-page-1.html | ici]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) |
**Nota :** | **Nota :** | ||
Ligne 25: | Ligne 24: | ||
<code root>apt-get install git gitk git-buildpackage pristine-tar</code> | <code root>apt-get install git gitk git-buildpackage pristine-tar</code> | ||
- | ===== Configuration de Git ===== | + | ===== Configuration ===== |
+ | |||
+ | ==== Configuration de Git ==== | ||
<code user>git config --global user.name "Votre Nom" | <code user>git config --global user.name "Votre Nom" | ||
Ligne 31: | Ligne 32: | ||
Si vous avez une clé GPG FIXME : | Si vous avez une clé GPG FIXME : | ||
- | <code user>git config --global user.signingkey "0xXXXXXXXX" | + | <code user>git config --global user.signingkey "0xXXXXXXXX"</code> |
+ | ==== Configuration de Git-BuildPackage ==== | ||
+ | |||
+ | Créer le fichier ''~/.gbp.conf'' contenant le texte suivant : | ||
+ | <code ini ~/.gbp.conf>[DEFAULT] | ||
+ | # Sign tags by default: | ||
+ | sign-tags = True | ||
+ | keyid = 0xXXXXXXXX | ||
+ | # use pristine tar by defaul | ||
+ | pristine-tar = True | ||
+ | |||
+ | [dch] | ||
+ | # Parse meta tags like Closes: from commit messages | ||
+ | meta = True | ||
+ | # Add seven digits of the commits sha1 to the commit message | ||
+ | id-length = 7 | ||
+ | # Regex for matching bugs to close | ||
+ | meta-closes = Closes|LP|BZ | ||
+ | # Use the full commit message instead of the first line only | ||
+ | full = True | ||
+ | # Ignore these in commit messages | ||
+ | ignore-regex = (Signed-off|Acked)-by: | ||
+ | |||
+ | [buildpackage] | ||
+ | # Automatically push to remote repo after tagging a new release | ||
+ | posttag = /usr/share/doc/git-buildpackage/examples/gbp-posttag-push | ||
+ | # Run Lintian after a succesful build | ||
+ | postbuild = lintian $GBP_CHANGES_FILE | ||
+ | # Build command | ||
+ | builder = dpkg-buildpackage -i -I -uc -us | ||
+ | # Clean command | ||
+ | cleaner = /bin/true | ||
+ | |||
+ | [import-orig] | ||
+ | # Automatically forward the changelog after importing a new upstream version | ||
+ | postimport = git-dch -N%(version)s -S -a --debian-branch=$GBP_BRANCH</code> | ||
+ | <note important>Remplacer ''0xXXXXXXXX'' par l'id de votre clé GPG !</note> | ||
===== Utilisations ===== | ===== Utilisations ===== | ||
- | FIXME | + | ==== Gérer les patchs via une branche ''patch-queue'' ==== |
+ | |||
+ | Pour gérer les patchs de debian/patchs, on peut utiliser une branche git. | ||
+ | * Cela nous permet pour chaque branche //foo// d'avoir la branche non-patchée (//foo//) et la branche patchée (//patch-queue/foo//) | ||
+ | * Un commit dans la //patch-queue// correspond exactement à un patch dans ''debian/patches/'' | ||
+ | * Les patchs peuvent facilement être supprimés, ou ajoutés en modifiant la branche //patch-queue// (et en évitant de se tromper en utilisant //quilt add//, //dpatch-edit-patch//, //cdbs-edit-patch//, etc.) | ||
+ | * Les patchs peuvent facilement être portés sur les nouvelles versions grâce à ''git rebase'' sur la branche //patch-queue// (les patchs appliqués par //upstream// sont automatiquement détectés). | ||
+ | * Les patchs générés dans ''debian/patches/'' ont toutes les informations nécessaires pour être envoyés à //upstream//. | ||
+ | |||
+ | Inconvénient : | ||
+ | * Pas d'historique sur la branche //patch-queue/foo//, mais bien sûr l'historique de la branche //foo// reste disponible. | ||
+ | |||
+ | === Créer la branche de patchs === | ||
+ | <code user>gbp pq import</code> | ||
+ | <note info>Cela changera la branche courante du dépôt à //patch-queue/master//.</note> | ||
+ | |||
+ | === Travailler sur les patchs === | ||
+ | * Un commit = un patch | ||
+ | * C'est une branche git classique | ||
+ | |||
+ | === Re-générer les fichiers de patchs === | ||
+ | <code user>gbp pq export</code> | ||
+ | <note info>Cela changera la branche courante du dépôt à //master//.</note> | ||
+ | |||
+ | === Enregistrer les modifications === | ||
+ | <code user>git add debian/patches | ||
+ | git commit</code> | ||
+ | |||
+ | === Mettre à jour le changelog === | ||
+ | <code user>git-dch -S -a</code> | ||
+ | |||
+ | === Construire le paquet === | ||
+ | * Voir plus bas. | ||
+ | |||
+ | === Après avoir importé une nouvelle release === | ||
+ | <code user> gbp pq rebase | ||
+ | git checkout master | ||
+ | gbp pq export</code> | ||
+ | |||
+ | === Si des commits ont été fait sur //master// depuis la dernière mise à jour === | ||
+ | <code user>gbp pq rebase</code> | ||
+ | |||
+ | === Créer un premier patch === | ||
+ | * <code user>gbp pq import</code> | ||
+ | * Créer le patch et en faire un commit | ||
+ | * Générer le fichier patch pour quilt : | ||
+ | <code user>git checkout master | ||
+ | gbp pq export</code> | ||
+ | * Commit: | ||
+ | <code user>git add -a debian/patches/ | ||
+ | git commit -m 'mon premier patch'</code> | ||
+ | |||
+ | ==== Cloner un dépôt git-buildpackage existant ==== | ||
+ | <code user>gbp clone adresse-du-dépôt-git</code> | ||
+ | |||
+ | ==== Garder un dépôt jour ==== | ||
+ | Après un clone initial avec ''gbp clone'', vous pouvez exécuter //gbp pull// pour mettre à jour les branches //debian//, //upstream// et //pristine-tar// depuis le dépôt distant. Le flot de travail ressemble alors à cela : | ||
+ | * Initiallement, cloner le dépôt une fois | ||
+ | <code user>gbp clone adresse/du/dépôt.git | ||
+ | cd dépôt</code> | ||
+ | * Travailler sur ce clone, faire des commits, récupérer les releases, faire des pushs, etc. | ||
+ | * Pour récupérer après quelques jours les mises à jours faites par vos collègues : | ||
+ | <code user>gbp pull --redo-pq</code> | ||
+ | Cela mettra à jour toutes les branches en fonction des modifications faites par vos collaborateurs, et regénérera la branche de patchs. | ||
+ | |||
+ | ==== Compilation du paquet === | ||
+ | |||
+ | À faire depuis la branche //patch-queue/master// à jour : | ||
+ | <code user>DEB_HOST_ARCH=amd64 ARCH=amd64 DIST=sid git-buildpackage --git-pbuilder --git-arch=$ARCH --git-dist=$DIST --git-tag --git-debian-branch=patch-queue/master</code> | ||
+ | |||
+ | ===== Quelques rappels de git ===== | ||
+ | |||
+ | * Supprimer un tag localement et à distance : | ||
+ | <code user>git tag -d nomdutag && git push origin nomdutag</code> | ||
+ | * Revenir irréversiblement à un ancien commit : | ||
+ | <code user>git reset --hard hashprefix-du-commit</code> | ||
+ | * Établir une branche basée sur un ancien commit : | ||
+ | <code user>git checkout -b nomdelabranche hashprefix-du-commit</code> | ||
+ | |||
+ | |||
+ | ==== Références ==== | ||
+ | * [[http://stackoverflow.com/questions/6151970/how-do-you-remove-a-tag-from-a-remote-repository|How do you remove a tag from a remote repository]] | ||
+ | * [[http://stackoverflow.com/questions/4114095/revert-to-previous-git-commit|How to revert to a previous git commit]] | ||
===== Références ===== | ===== Références ===== |