Un petit guide pour débutants en SVN
De Wiki mozfr.
Mini-guide pas à pas pour utiliser le SVN (Subversion) de Mozilla en ligne de commande
Le principe d'un gestionnaire de versions c'est de conserver tous les changements des fichiers, l'historique, ce qui donne le droit à l'erreur (on peut revenir à une version antérieure)
Sommaire |
Préparer un environnement de travail
installer subversion :
sudo apt-get install subversion
et patienter...
créer un dossier qui contiendra les projets svn
cd /home/xxxx/mesProjetsSVN pour la suite, se placer en console à la racine de ce nouveau répertoire.
se munir d'un éditeur de texte correct
Il doit permettre l'encodage en UTF-8 et procurer la coloration syntaxique
- Geany (dans tous les dépôts de distribution libres) est conseillé, Vim si vous êtes aguerri.
Repérer les ressources en ligne
- Pour les projets Mozilla la tâche est annoncée sur le webdashboard
(= tout ce que gère Pascal, en gros tout ce qui est lié aux livraisons logicielles)
http://l10n.mozilla.org/webdashboard/?locale=fr
--> Exemple ci-dessous avec un fichier de l'android market ---
- L'outil pour voir :
http://viewvc.svn.mozilla.org/vc/projects/l10n-misc/trunk/androidmarket/en-US/strings.php
- Le vrai fichier sur lequel travailler :
https://svn.mozilla.org/projects/l10n-misc/trunk/androidmarket/en-US/strings.php
- La base du serveur de nos dépôts svn c'est https://svn.mozilla.org/
En dessous on trouve beaucoup de dossiers, on les organise par projets en général
ex:
https://svn.mozilla.org/projects/mozilla-europe.org
https://svn.mozilla.org/projects/mozilla.com
là c'est https://svn.mozilla.org/projects/l10n-misc/ (un dépôt fourre-tout pour les projets un peu à part) et pour notre exemple l'androidmarket
https://svn.mozilla.org/projects/l10n-misc/trunk/androidmarket/
En général il y a 2 dossiers par projet au moins: trunk et production
donc on a *trunk + son serveur de test *production + son serveur pour les vrais visiteurs
quand on envoie un fichier sur trunk, le changement est répercuté quelques minutes plus tard sur le serveur correspondant
exemple: un changement envoyé sur
https://svn.mozilla.org/projects/mozilla.com/trunk/fr/
s'affichera sur
http://www-trunk.stage.mozilla.com/fr/
quand on copie un changement de trunk à production, il se voit sur
http://www.mozilla.com/fr/quelques dizaines de minutes plus tard
Importer un répertoire
on va importer le dépôt du projet android dans un dossier appelé androidmarket
créer un nouveau sous-dossier local
cd androidmarket
(Se mettre en console dans ce nouveau répertoire)
importer le répertoire distant
svn checkout https://svn.mozilla.org/projects/l10n-misc/trunk/androidmarket/fr/ . bien noter le point final, ça veut dire 'ici'
Une fois l'opération achevée on obtient un message du type :
revison 81477 extraite
On dispose alors d'une copie du dépôt (= le répertoire en ligne), que l'on peut voir ça en listant tout le contenu du dossier avec la commande :
ls
Mettre à disposition du travail effectué
Une fois que l'on a traduit un fichier (*ne jamais toucher bien entendu aux diverses balises html php ou autres css), si l'on fait :
svn status
on peut obtenir l'état des modifications avec le nom des fichiers affectés
M strings.php (Modified)
A nomdefichier.dtd (Added)
D nomdefichier.html (Deleted)'
Vérifier les changements effectués
Afficher un diff (fichier de différences) dans la console en tapant :
svn diff
On voit alors dans la console les ligne originales précédées d'un signe - , les lignes modifiées précédées d'un signe + , et quelques lignes de part et d'autre de la zone modifiée.
Créer un vrai patch
svn diff > bug604512.diff
le > veut dire "redirige la sortie de la commande vers" donc là on a créé un patch dans un nouveau fichier appelé bug604512.diff Ce patch (=rustine logicielle) peut être appliqué dans le svn en ligne.
On peut le faire :
- en l'attachant à un bug (accès bugzilla requis)
- en l'envoyant en fichier attaché par mail à Pascal
- Si l'on dispose d'un accès au svn, il existe une commande qui permet d'appliquer tes changements
-->En principe, il faut demander une "review" ou révision pour validation Demander à Cédric via bugzilla, sur irc ou par mail)
Utiliser d'autres commandes utiles
Exporter tous les changements que j'ai faits *vers* le fichier monpatch.diff
svn diff > monpatch.diff
Importe ici tous les changements contenus dans le fichier monpatch.diff
patch < monpatch.diff
Si l'on accède à un svn on peut envoyer directement le patch
svn commit -m "mon message qui explique ce que je viens de modifier dans les fichiers"
Annuler un changement en local
svn revert nomdefichier.extension
(en se plaçant dans le bon répertoire)
Annuler en local les changements sur tout un répertoire avec ses sous-répertoires (se placer à la racine du répertoire)
svn revert -R .
restaure tous les fichiers du répertoire dans lequel on se trouve (important : le point final)
Actualiser (mettre à jour) le svn local par rapport au svn en ligne (indispensable)
svn up ou update
pour que le svn prenne en compte un nouveau fichier il faut faire
svn add nomdefichier.ext
_ _ _ à suivre...
avec le mercurial
hg push -u pour mettre à jour