Windev propose un gestionnaire de versions plutôt bien fait et surtout très pratique lorsqu’on maintient plusieurs versions d’un logiciel. Le cas le plus courant est celui où l’on travaille sur une nouvelle version d’un programme tout en continuant à apporter des corrections ou des modifications à la version précédente en production. Dans ce cas, il est intéressant de pouvoir récupérer (ou pas) les modifications apportées d’une version à l’autre.
L’exemple qui suit est très simple mais illustre les mécanismes mis en œuvre.
Ce que nous allons faire
Dans cet exemple, nous allons faire évoluer une simple fenêtre Windows à travers 3 versions. Puis nous apporterons une modification à la version 1 qui dans un premier temps n’aura aucune incidence sur les versions suivantes. Enfin, nous répercuterons sur la version 3 la modification faite dans la version 1, sans impacter la version 2.
Pour cela nous allons créer des « branches » dans notre projet. Au départ, vous créerez un projet standard, puis très tôt dans le processus vous créerez une première branche pour la version 1. Puis à chaque changement de version, vous créerez une nouvelle branche : 2, 3,..
Chaque branche est une copie du projet précédent qui « vit sa vie » séparément des autres. Il est ensuite possible de copier des éléments d’une branche à l’autre (au sein d’une même arborescence).
Précautions :
La gestion des versions n’est pas très difficile à comprendre, mais pour éviter toute erreur nous prendrons la précaution de fermer un projet branche en réintégrant bien tous les éléments avant d’en ouvrir un autre. Ceci évitera les confusions.
Par ailleurs, vérifiez bien que des éléments « étrangers » ne soient pas présents lors de la réintégration. Ils peuvent résulter d’une petite erreur de manipulation lors de l’enregistrement. C’est sans gravité, mais ne polluez pas vos branches avec des éléments qui n’y ont pas leur place.
Point de départ, la version 1
Tout d’abord, créez un simple projet Windows en le déclarant dans le GDS. Ce projet pourra s’appeler « TestGDS ».
Une fois créé et avant même d’y ajouter une fenêtre et du code, créez une branche à partir du menu GDS.
Et donnez-lui le nom « Version 1 »
Pour se mettre en situation réelle, fermez le projet et ré-ouvrez le projet à partir du GDS en choisissant la branche 1.
Créez maintenant une simple fenêtre et placez-y un bouton de commande. Dans l’exemple, ce bouton est nommé et porte le libellé « Pierre ».
Il est important que les objets aient un nom précis qui permette de les distinguer les uns des autres. Ce sera très utile lorsqu’on comparera différentes versions.
Vous pouvez ajouter du code et d’autres objets, comme par exemple une fenêtre sœur qui s’ouvrira lorsqu’on clique sur le bouton.
Toujours pour se mettre en situation réelle, fermez le projet et ré-ouvrez le à partir du GDS.
Création de la version 2
Maintenant que la version 1 est terminée, créons une version 2. Avant toute chose, vous allez créer une nouvelle branche.
A partir du menu GDS, créer une branche « Version 2 » puis pour bien faire la différence avec la version 1, fermez le projet en réintégrant les éléments et ré-ouvrez la branche 2 à partir du GDS.
Ajoutez maintenant un bouton de commande à la fenêtre principale et désignez-le (nom et libellé) distinctement du premier bouton (« Paul » dans l’exemple).
Vous pouvez là aussi ajouter du code et d’autres objets.
Toujours pour se mettre en situation réelle, fermez le projet et ré-ouvrez le à partir du GDS.
Création de la version 3
Selon le même principe que pour la version 2, créez une branche « Version 3 ».
Puis ajoutez un troisième bouton nommé « Jacques ».
Vous avez maintenant 3 versions indépendantes. Vous pouvez ouvrir tour à tour chaque branche et vous n’y trouverez que les éléments enregistrés ou modifiés pour la branche considérée.
Modification de la version 1
Pour se convaincre de l’indépendance des différentes branches, vous allez maintenant ajouter un dernier bouton de commande, mais à la version 1.
Ré-ouvrez la branche 1 puis ajoutez un bouton à droite de la fenêtre. Le bouton sera nommé distinctement des autres, ici « Info ».
Enregistrez la modification, puis ouvrez tour à tour les version 2 et 3 pour vous assurer que ce bouton n’y apparait pas.
Répercuter la modification de la version 1 dans la version 3
Pour terminer, nous allons répercuter dans la version 3 la modification faite dans la version 1.
Pour cela, ouvrez la branche 3 puis rendez-vous dans le menu GDS et cliquez sur « Récupérer des modifications depuis une branche.. »
Dans le choix de la branche, cochez la case « Afficher les branches de branches »
Et sélectionnez la branche « Version 1 »
Vous choisissez ensuite les éléments à récupérer :
Ici, cliquez sur le bouton « Sélectionnez une partie » pour la fenêtre principale.
On sélectionne une partie pour ne pas écraser les boutons propres à la version 3. On ne veut ajouter que le bouton « Info ».
Dans la liste des différences, sélectionnez le bouton info puis cliquez sur l’œil à droite pour voir la nature de la différence.
Cliquez sur la flèche pour copier le bouton info dans la branche 3.
Puis validez.
Validez à nouveau.
La récupération du bouton info est mettant terminée.
Vous pouvez vérifier que la branche 2 n’a pas été impactée par cette mise à jour.
Conclusion
Cet exemple tout simple n’a pour but que de montrer les séquences principales de la gestion de versions. C’est simple, mais il faut prendre des précautions pour ne pas se tromper de version. Les mises à jour d’une version à l’autre demandent plus de réflexion car il faut bien mesurer toute la portée des changements. Certaines récupérations ne sont d’ailleurs pas possibles si elles rentrent en conflit avec des objets ou du code de la cible.