Comment utiliser SubVersion

Subversion est le logiciel qui gère le dépôt du code source Gambas sur http://sourceforge.net.

Un dépôt est exactement comme un système de fichiers, mais un système de fichiers qui garde toutes les modifications.

Organisation du dépôt Gambas

Le dépôt Gambas est divisé en trois répertoires principaux :

/trunk Ce répertoire contient les sources de la version en développement. Son but est de devenir la version principale suivante de Gambas (3.0).
/branches Ce répertoire contient les sources de la version stable. Il y a un sous-répertoire pour chaque version stable. Leur cible est de devenir la version mineure suivante de la version stable (2.X).

On peut y trouver quelques autres développements relatifs à Gambas qui sont conçus en dehors de /trunk, et qui y seront intégrés dans le futur.
/tags Ce répertoire contient les sources de chaque version publiée de Gambas. Il y a un sous-répertoire pour chaque version. Ce ne sont que des archives, elles peuvent être utilisées pour recréer un paquet d’une ancienne version.

Vous pouvez lire le contenu du dépôt sur le Web à cette adresse : http://sourceforge.net/p/gambas/code

Compiler la version du dépôt Subversion

Vous devez, tout d’abord, télécharger le code source.

Tout le monde peut faire une copie du dépôt sur son disque dur en utilisant la commande suivante :

$ svn checkout http://svn.code.sf.net/p/gambas/code/gambas/trunk

Ou :

$ svn checkout http://svn.code.sf.net/p/gambas/code/gambas/branches/3.3

Pour la version stable.

Une fois que c’est fait, vous effectuez la compilation exactement de la même manière que lorsque vous compilez une archive source téléchargée sur un site web :

$ ./reconf-all
...
$ ./configure -C
...
$ make
...
$ sudo make install
...

Obtenir un accès en écriture au dépôt Gambas

Si vous voulez faire du véritable développement ou de la traduction pour Gambas, alors vous devez avoir un accès en écriture à ce dépôt.

Pour obtenir un accès en écriture au dépôt Subversion de Gambas, créez juste un compte utilisateur sur sourceforge.net, et demandez-moi d'accorder un accès en écriture à l'utilisateur que vous venez de créer.

Comment ça fonctionne?

Chaque fois que quelque choses change dans le dépôt, le numéro de révision est incrémenté, et un journal de révision est attaché à ce dernier. Le journal de révision est édité par la personne ayant fait la modification.

Tout est fait avec la commande svn.

  • svn checkout fait une copie du dépôt sur votre disque dur, et ajoute beaucoup de répertoires cachés .svn quelque part dedans pour suivre les changements.

  • svn commit renvoie toutes les modifications au serveur, demande une révision du journal, et incrémente le numéro de révision. Chaque soumission a son propre numéro et journal de révision.

  • svn update, met à jour votre copie locale du dépôt avec la dernière version.

Quelqu'un peut avoir modifié certaines choses entre le moment où vous avez vérifié et le moment où vous avez soumis (c.a.d. envoyé les modifications). Donc avant de faire un svn commit, vous devriez faire un svn update.

Ecrire un journal de révision

Quand vous soumettez, vous devez indiquer l'éditeur utilisé pour l'édition du journal de révision dans la variable d'environnement $EDITOR. Par exemple :
$ EDITOR=gedit svn commit

Notez que vous ne pouvez pas modifier un journal de révision après avoir envoyé vos modifications. Soyez vigilant !

Format du journal de révision

Je voulais avoir une manière standard d'écrire les messages de soumission, de telle sorte que le ChangeLog puisse être presque automatiquement généré.

Le format est le suivant :

  • Une section ChangeLog, entre '[' & ']'

  • Une modification de ChangeLog : un '*', un espace, le mot 'BUG', 'NEW' ou 'OPT', suivi de deux point, un espace, et le texte.

'BUG' est pour un problème résolu, 'NEW' pour une nouvelle caractéristique, et 'OPT' pour une optimisation.

Les emplacements sont le nom du composant en majuscule, ou l’un des suivants :
  • [INTERPRETER] pour les changements dans l’interpréteur (gbx3).

  • [COMPILER] pour les changements dans le compilateur (gbc3).

  • [ARCHIVER] pour les changements dans l’archiveur (gba3).

  • [INFORMER] pour les changements dans l’informateur (gbi3).

  • [DEVELOPMENT ENVIRONMENT] pour les changements dans l’IDE (gambas3).

  • [CONFIGURATION] pour les changements dans le processus de configuration automake/autoconf

  • [WIKI CGI SCRIPT] pour les changements dans le script CGI du wiki.

  • [WEB SITE MAKER] pour les changements dans le générateur du site web Gambas.

  • [EXAMPLES] pour tout changement dans un exemple.

Toutes les lignes doivent être inférieures ou égales à 76 caractères.

Si une modification de ChangeLog prend plus d’une ligne, vous devez utiliser une indentation de 2 espaces.

Les lignes vides sont ignorées.

Toutes les autres lignes n'iront pas dans le ChangeLog.

Exemples

J'ai fait cette chose, et elle n'ira pas dans le ChangeLog.

[GB.QT]
* BUG: J’ai réparé ce bug.
* NEW: J’ai fais cette très longue modification....
  Et ça prend plus d’une ligne pour l’écrire.

Cela n’ira pas dans le changelog non plus.

[GB.SDL]
* BUG: Quel horrible bug!

[GB.GTK]
* NEW: J’ai finalement terminé le composant :-)

Veuillez s'il vous plait suivre ce schéma. ça serait vraiment cool...

Liste de diffusion de soumission

Il y a une liste de diffusion qui récupère un mail chaque fois que quelqu'un (en général moi) envoie une nouvelle révision. De cette manière vous savez toujours si vous avez la dernière révision sur votre disque dur ou pas.

Pour vous inscrire à cette liste de diffusion, allez à la page de la liste de diffusion sur le site web. Le nom de la liste de diffusion est gambas-devel-svn.

État de votre copie de dépôt

Pour obtenir l'état de votre copie de dépôt, lancer la commande svn status.

Chaque état est décrit par une ou plusieurs lettres :
  • ? est un fichier qui n'est pas géré par SubVersion.

  • M est un fichier que vous avez modifié.

  • C est un fichier en conflit.

  • G est un fichier en conflit qui a été automatiquement résolu par la commande svn.

  • A est un fichier ou répertoire ajouté récemment.

  • D est un fichier ou répertoire supprimé.

  • ... etc.

Voir ci-dessus pour plus d'informations à propos des conflits.

Avertissements

Aucun suivi automatique de structure de projet

Vous devez dire à Subversion si vous ajoutez, supprimez, renommez, ou déplacez un fichier. Vous le faites avec les commandes :

  • svn add pour ajouter un fichier que vous avez déjà créé.

  • svn del pour supprimer un fichier.

  • svn move pour renommer ou déplacer un fichier.

Oublier d'utiliser svn add est une erreur commune. Je sais de quoi je parle :-)

Les conflits

Quelqu'un a pu modifier un fichier dans le dépôt, pendant que vous modifiez le même fichier sur votre disque dur. Ceci est un conflit, et svn vous le dira quand vous lancerez svn update, ou la commande svn status.

Chaque fois qu'il y a un conflit, svn essaie de le résoudre automatiquement, en fusionnant vos propres changements avec les changements faits par les autres personnes.

Si la fusion a réussi, vous obtiendrez un fichier avec un caractère d'état 'G'.

Si la fusion n'a pas réussi, vous aurez un fichier avec un caractère d'état 'C'. Alors vous devrez résoudre le conflit manuellement :

  • Vous devez éditer le fichier vous-même pour fusionner les changements. svn a modifié le fichier de telle sorte que vous voyez vos propres changements et les autres changements côte à côte.

  • Ou vous pouvez utiliser une des copies faite automatiquement par Subversion. Vous en obtenez une pour la dernière version, et une pour la version en cours de votre dépôt local. Leur nom est le nom du fichier original suivi par un point, la lettre 'r' et le numéro de révision. Remplacez juste le fichier original par la copie.

Une fois cela fait, vous direz à svn que le conflit est résolu en lançant la commande svn resolved sur le fichier en conflit.

Y-a-t’il des risques?

Normalement il n'y a pas de risque, comme toutes les choses sont archivées, et donc vous pouvez toujours remonter le temps.

De plus, si vous travaillez sur un projet Gambas à l'intérieur du dépôt, l'environnement de développement peut s'accorder avec toute commande svn pour vous. Allez dans l'onglet Versioning dans la boîte de dialogue des propriétés du projet, et vous trouverez des boutons qui vous permettent de mettre à jour le projet, de l'envoyer, et d'annuler vos modifications.

Si vous avez fait quelque chose de bizarre, vous pouvez utiliser la commande svn revert. Il remettra votre copie locale dans l'état de la dernière vérification ou mise à jour.