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

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

Outils personnels