Autres langues English ; Français ; |
Accueil [en] → Accueil → Équipes → Packageurs → Les outils d'empaquetage Mageia → SVN
Contents
- 1 Comment voir les sources d'un programme
- 2 FAQ
- 2.1 Y a-t-il un accès anonyme à svn ?
- 2.2 Je suis un packager, comment puis-je configurer SSH sur ma machine ?
- 2.3 Est-ce que mgarepo gère les dépôts binaires séparés ?
- 2.4 Je suis un empaqueteur, comment puis-je vérifier un paquet depuis SVN ?
- 2.5 Comment puis-je soumettre une modification ?
- 2.6 Comment mettre à jour un paquet vers une version plus récente ?
- 2.7 Comment puis-je voir si un paquet qui est déjà vérifié dans mon disque dur a été téléchargé vers le serveur ?
- 2.8 Où puis-je suivre les changements de paquets ?
- 2.9 Comment vérifier que le commit a déjà été soumis ?
- 2.10 En cas d'erreur, comment puis-je revenir sur un commit ?
- 2.11 En cas de faute de frappe, comment puis-je éditer les registres de svn ?
- 2.12 Comment puis-je importer un nouveau paquet vers SVN ?
- 2.13 Comment puis-je obtenir mgarepo ?
- 2.14 Comment supprimer un paquet de SVN ?
- 2.15 De quelle branche provient ma copie locale
Comment voir les sources d'un programme
Pour voir les sources d'un logiciel, veuillez installer mgarepo.
Via le centre de contrôle de Mageia → Gestion des logiciels → "Configurer les sources des médias pour installation et mises à jour" → installer le paquet
"mgarepo" (qui signifie "Mageia's repository", les dépots de Mageia).
Ensuite, dans /etc/mgarepo.conf
, remplacez
repository = svn+ssh://svn.mageia.org/svn/packages/ |
par
repository = svn://svn.mageia.org/svn/packages/ |
Enfin, pour télécharger par exemple les sources du paquet libreoffice-kde
, lancez dans un terminal :
$ mgarepo co libreoffice-kde |
FAQ
Y a-t-il un accès anonyme à svn ?
- Bien sûr ! Par exemple :
svn co svn://svn.mageia.org/svn/packages/cauldron/$NOM_DU_PAQUET/current $NOM_DU_PAQUET |
Cette commande vous retournera le fichier de spécification et les correctifs de $NOM_DU_PAQUET, mais pas les sources du paquet.
Pour obtenir les sources associées, allez dans le répertoire ($ cd $NOM_DU_PAQUET/SOURCES/) et la commande 'cat sha1.lst' devrait vous retourner quelque chose du genre :
3f17f9de3e1d95ec2be5982f90f2362e474ed9ca fooarchive-0.1.tgz 5a513f683c8b2ec6d2d8c097dbd37e50311d92e3 bararchive-0.2.tgz |
Ainsi avec chacune des lignes, on continue avec :
wget http://binrepo.mageia.org/3f17f9de3e1d95ec2be5982f90f2362e474ed9ca -O fooarchive-0.1.tgz |
wget http://binrepo.mageia.org/5a513f683c8b2ec6d2d8c097dbd37e50311d92e3 -O bararchive-0.2.tgz |
Vous pouvez alors construire le paquet (après être revenu dans le dossier parent $NOM_DU_PAQUET) :
rpmbuild --define "_sourcedir `pwd`/SOURCES" -ba ./SPECS/$NOM_DU_PAQUET.spec |
- Vous pouvez aussi utiliser l'interface web de SVN pour voir les fichiers spec des rpm et les correctifs de tous les paquets.
Je suis un packager, comment puis-je configurer SSH sur ma machine ?
Pour utiliser mgarepo
afin d'extraire des paquets du SVN, d'importer de nouveaux paquets ou de soumettre des paquets au système de construction, vous devez configurer SSH sur votre ordinateur ; pour ce faire, consultez la section Configuration de base de SSH pour les empaqueteurs.
Est-ce que mgarepo gère les dépôts binaires séparés ?
Je suis un empaqueteur, comment puis-je vérifier un paquet depuis SVN ?
mgarepo co $PACKAGE_NAME |
Comment puis-je soumettre une modification ?
Soit en utilisant :
mgarepo ci |
ou
svn commit |
Comment mettre à jour un paquet vers une version plus récente ?
Pour mettre à jour un paquet vers une version plus récente, on avait l'habitude de placer le fichier tar dans le dossier SOURCES
et d'exécuter :
svn rm SOURCES/$previous |
svn add SOURCES/$new |
Mettre à jour le fichier spec avec
svn ci |
Mais le dépôt des binaires binrepo (les archives tar et leurs contenus) est séparé du dépôt des fichiers de construction mgarepo, alors le processus a changé.
Vous pouvez ainsi faire
mgarepo upload /chemin/vers/nouveau/tarball.tar.* |
Ceci chargera l'archive tar vers le dépot des binaires et mettra à jour le fichier sha1. Quoi qu'il en soit, vous devez quand même supprimer l'ancienne archive tar avec :
mgarepo del /chemin/vers/l'ancien/tarball.tar.* |
Ou encore, vous pouvez utiliser mgarepo sync; pour simuler les changements sans les faire :
mgarepo sync --dry-run |
Une fois seulement que vous êtes sûr que les résultats répondra à vos attentes, vous pouvez effectuer les changements localement :
mgarepo sync |
Penser à soumettre les changements sur le fichier sha1 après l'opération sur les fichiers binaires avec :
mgarepo ci |
Comment puis-je voir si un paquet qui est déjà vérifié dans mon disque dur a été téléchargé vers le serveur ?
Avant, vous seriez allé dans le répertoire et taper "svn up". Maintenant l'équivalent est :
mgarepo up |
Il est maintenant nécessaire d'être apte à vérifier la nouvelle archive tar (s'il y a) depuis le dépot de binaire SVN.
Où puis-je suivre les changements de paquets ?
- Pour voir la progression des paquets en cours de construction, vous pouvez visiter la page web des status du système de construction de Mageia.
- En parcourant SVN en utilisant son interface web dans un quelconque navigateur - des fonctionnalités de recherche rapide des navigateurs peuvent vous aider à accéder à ces informations, voir par exemple http://kb.mozillazine.org/Using_keyword_searches
- Vous pouvez aussi aller voir sur http://cia.vc/stats/project/Mageia pour avoir une vue d'ensemble des soumissions dans le système de contrôle des versions de sources.
- Il y a un canal spécial #mageia-commits sur Liberachat en désuétude.
- Les registres au nom du paquet dans mgarepo montrent les registres associés du paquet et de la branche de SVN.
Comment vérifier que le commit a déjà été soumis ?
- Voir le chapitre précédent, la page des status du système de construction de Mageia peut être utilisé pour regarder rapidement les paquets récemment soumis.
- De plus, il est possible depuis l'interface web de SVN de comparer les informations entre $NOM_DU_PAQUET/releases et les $NOM_DU_PAQUET/current/SPECS/$NOM_DU_PAQUET?view=log.
- La commande svn log svn+ssh://svn.mageia.org/svn/packages/cauldron/$NOM_DU_PAQUET/release montrera les mises à jour et soumissions du paquet. Il est possible d'interroger facilement via une fonction shell :
function svnrel2() { svn log svn+ssh://svn.mageia.org/svn/packages/cauldron/"$@"/releases } |
En cas d'erreur, comment puis-je revenir sur un commit ?
Vous pouvez faire :
svn merge -rxx:yy SPECS/foo.spec |
Où :
- xx est la révision courante,
- yy est la dernière révision travaillée,
- SPECS/foo.spec est les fichier auquel vous souhaitez revenir sur les changements
- à la racine de votre répertoire local, vous pouvez utiliser. Comme nom de fichier si vous souhaitez revenir sur tous les changements que vous avez faits en local.
Si vous voulez revenir sur une révision exacte, alors utilisez :
svn merge -c yy SOURCES/LeFichier |
où :
- yy est la dernière révision travaillée
- SOURCES/LeFichier est le fichier auquel vous souhaitez revenir sur les changements
- à la racine de votre répertoire local, vous pouvez utiliser. Comme nom de fichier si vous souhaitez revenir sur tous les changements que vous avez faits en local.
En cas de faute de frappe, comment puis-je éditer les registres de svn ?
Après avoir défini la variable d'environnement EDITOR, vous pouvez dans votre dossier local :
svn propedit --revprop svn:log -r <revision> |
Ou vous pouvez travailler sur la version en ligne et en spécifiant votre éditeur de texte favori :
svn pe --revprop -r <revision> svn:log svn+ssh://svn.mageia.org/svn/packages --editor-cmd nano |
Comment puis-je importer un nouveau paquet vers SVN ?
mgarepo import *.src.rpm |
Ou, puisque ce n'est qu'une alias comme on peut le voir depuis la page man de mgarepo ou depuis sa sortie --help :
mgarepo import *.src.rpm |
Optionnellement, vous pouvez fournir un message d'import pour les registres différent du message par défaut "imported package foobar" si vous souhaitez attribuer correctement le créateur du paquet original, ou donner une raison de l'import, vous le faites grâce à l'argument -l comme ceci :
mgarepo import *.src.rpm -l 'votre message d'import ici, en anglais naturellement' |
Comment puis-je obtenir mgarepo ?
# urpmi mgarepo |
Comment supprimer un paquet de SVN ?
Il y a un répertoire dans lequel les vieux paquets qui ne sont plus nécessaires sont transférés, ils sont conservés au cas où ils redeviennent nécessaire plus tard.
- Pour déplacer un paquet dans ce répertoire, faites :
mgarepo obsolete <pkg> -m "SILENT <message ici en anglais>" |
- Penser à utiliser SILENT, au cas où le paquet est restauré, ce message n'apparaitra pas dans les registres de changements.
- Pour plus d'informations sur les étapes pour rendre un paquet obsolète afin qu'il soit supprimé du système des utilisateurs finaux et des miroirs, voire cette section : rendre un paquet obsolète.
De quelle branche provient ma copie locale
Si vous avez une copie locale d'un paquet obtenue de SVN, et que vous ne vous souvenez plus de quelle version elle est issue, vous pouvez utiliser :
svn info |
Vous obtiendrez quelque chose du genre :
Relative URL : ^/updates/8/sogo/current |
ou dans le cas de cauldron
Relative URL : ^/cauldron/python-django/current |
indiquant que la copie vient de Mageia 8, respectivement cauldron