Intégration

Dans cette première leçon, nous allons procéder à une intégration complète d'un tronc commun et d'un module dans une branche.

Accédez au projet pour cette leçon, et ouvrez son module en mode exclusif.

Pour commencer une intégration, choisissez le menu Gestion de configuration > Intégration.

Voici la première boîte de dialogue du processus d'intégration.
Pour plus d'information sur la boîte de dialogue, consultez le manuel utilisateur de BranchManager for DOORS®.
Appuyez sur Parcourir pour sélectionner la source des changements à intégrer dans le module.

Sélectionnez le projet pour lequel une branche a déjà été créée dans cette leçon.
Appuyez sur OK.

Le script va trouver automatiquement le module parallèle et calculer la base commune.
A ce stade, vous pouvez choisir une autre version de la source pour les changements à intégrer en appuyant sur Choisir; mais nous allons utiliser la version courante pour cette leçon.
Comme il n'y a pas encore de version d'intégration, laissez l'option Comparer avec la base commune sélectionnée.
Appuyez sur Démarrer l'intégration.

Puisque nous utilisons la version actuelle du module source, le script avertit qu'une version de référence devra être créée dans le module source après la finalisation de l'intégration.
Appuyez sur Confirmer pour continuer.

Ensuite, nous devons choisir les aspects de l'intégration de la source à la cible.
Activez l'option Attributs communs.

Nous voulons inclure l'attribut "Test Status" dans la comparaison, pour cela sélectionnez l'attribut "Test Status" puis appuyez sur OK.

Cela nous amène à la fenêtre du processus d'intégration.
Pour une description complète de la fenêtre d'intégration, veuillez consulter le manuel utilisateur de BranchManager for DOORS®.
Note: Il y a un bug mineur sur l'interface, s'il y a des changements confictuels, le signe "+" (plus) n'apparaîtra pas.

Par conséquent, vous devez toujours sélectionner la ligne "Changemens conflictuels" afin de forcer l'apparition du signe "+".
Ce problème peut aussi arriver avec les modifications non conflictuelles.

Dans notre exemple, un signe apparaît.
Cliquez sur le signe "+" (plus) pour afficher la liste des modifications conflictuelles.

Si vous regardez le module que nous avons ouvert en mode exclusif, vous verrez que de nouvelles colonnes ont été créées.
Ces colonnes aident l'utilisateur à comprendre ce qui a changé par objet dans la source et la cible.

Afin de mieux comprendre comment les changements sont présentés, nous allons ouvrir les modules source et la base.
Vous pouvez utiliser les commandes d'ouverture des modules situées en haut de la fenêtre, mais il est plus rapide de double-cliquer sur un changement pour que les modules soient ouverts et les objets sélectionnés.
Essayez ceci en double-cliquant sur le changement non conflictuel de l'objet "ORG_17".

Avec les différents modules ouverts, nous pouvons commencer un examen approfondi du changement.
D'abord, la version de référence 0.4 du module de base (/4.0 Trunk for Username/Module baseline 0.4).
Pour l'objet 17, nous voyons qu'il y a un lien sortant.

Ensuite, regardez le module source (/4.0 Trunk for Username/Module current).
Pour l'objet 17, nous voyons qu'il n'y a pas de lien sortant, parce que la version de référence commune des modules source et cible a une modification dans la source.

Maintenant, regardez le module cible (/4.1 Full Integration for Username/Module current).
Pour l'objet 17, nous voyons qu'il y a un lien sortant, c'est-à-dire que depuis la version de référence commune entre la source et la cible, aucun changement n'a été apporté à l'objet cible (au moins en termes de liens sortants).
Ceci peut être observé dans les colonnes d'intégration du module cible.
La colonne intitulée Changements dans la source indique un lien supprimé, parce que le lien depuis la base commune a été supprimé pour l'objet source.
La colonne intitulée Changements dans la cible est vide, aucune modification n'a été apportée à l'objet cible depuis la base commune.

Regardez la fenêtre d'intégration.
Vous voyez qu'il y a un changement répertorié pour "ORG_17", la suppression d'un lien.
Le même texte est affiché dans le champ Changements dans le module source sur le côté droit de la vue et dans la colonne Changements dans le module source.
Ainsi, nous savons que le module source a changé depuis la version de référence commune: un lien dans "ORG_17" a été supprimé.
Nous savons aussi que l'objet "ORG_17" de notre module cible n'a pas changé.

Regardons un autre objet, l'objet "ORG_16".
On voit qu'il a un lien sortant.
Remarquez dans le module source que "ORG_16" a un lien sortant, ses liens n'ont pas changé.
Regardez "ORG_16" dans le module cible.
Nous voyons qu'il n'y a pas de lien sortant et le texte dans la colonne Changements dans la cible reflète cela, cela indique un lien sortant supprimé.

Mais si vous regardez dans la fenêtre d'intégration, il n'y a pas d'objet "ORG_16" de répertorié (si c'était le cas, ce serait entre "ORG_12" et "ORG_17").
L'objet "ORG_16" n'est pas répertorié car la liste ne montre que les modifications apportées au module source, par rapport à sa base.
Vous devez vous rappeler que nous intégrons des modifications à partir du module source vers le module cible, de sorte que les modifications apportées au module cible ne sont pas sous contrôle.

Sélectionnez l'objet "ORG_19" maintenant.
En regardant les modifications dans Changements dans le module source vous voyez deux changements.
Si vous développez la liste, vous verrez les deux changements.
Dans la zone de texte Changements dans le module source, sera affiché le changement sélectionné.

Maintenant, sélectionnez l'entrée de la liste appelée "module ORG_0".
Cette entrée représente les modifications apportées aux attributs de module.
Nous voyons que l'attribut Test Status du module source a été modifié depuis la base, à partir de Not Tested vers Under Test.

Analysons un changement conflictuel.
Un changement conflictuel se produit lorsque deux objets source et cible ont changé (pas nécessairement le même attribut ou lien).
Double-cliquez sur Changements conflictuels dans la liste pour l'objet "ORG_13".

Si nous regardons la version de référence du module de base, nous voyons l'entête "ORG_13" du début.

Si nous regardons le module source, nous voyons que l'entête "ORG_13" a changé.

Et si nous regardons le module cible, nous voyons que l'entête a été changée, mais d'une manière différente de celle du module source.
Ceci est expliqué dans les colonnes créées par le script d'intégration, ainsi que dans la colonne Information conflictuelle sur le côté droit.
Avant de faire des changements, il y a encore un point à noter.
Dans le module cible, notez que "ORG_11" a des modifications à la fois dans la source et la cible.
Toutefois, si vous regardez la fenêtre d'intégration, il n'y a pas de ligne pour cet objet.
C'est parce que les changements sont les mêmes, donc pas de fusion nécessaire.

Maintenant que nous comprenons comment interpréter les changements décrits par le script d'intégration, nous allons fusionner certaines modifications du module source vers le module cible.
Sélectionnez le changement "module ORG_0".
Nous voyons que la valeur de l'attribut Test Status a changé, de Not Tested à Under Test.
Appuyez sur Fusionner les changements.

Vous voyez que la ligne "module ORG_0" a disparu.
Si vous affichez la valeur de Test Status pour le module, vous verrez qu'il est maintenant Under Test, parce qu'il a été modifié pour correspondre aux changements du module source.
Sur la ligne suivante, pour l'objet "ORG_12", appuyez sur Fusionner les changements.

Encore une fois, vous voyez que l'objet "ORG_12" a disparu.
Lorsque vous affichez le module cible, vous voyez que l'Object Text de "ORG_12" a été changé.
Dans la fenêtre d'intégration du module, appuyez sur Fusionner les changements pour l'objet suivant, (objet "ORG_17").

Comme précédemment, l'objet "ORG_17" a disparu.
Lorsque vous affichez le module cible, vous verrez que "ORG_17" n'a plus de lien sortant.
Dans la fenêtre d'intégration de module, appuyez sur Fusionner les changements pour l'objet suivant (objet "ORG_18").

Au cours de cette fusion, le script a rencontré une erreur.
Actuellement, il n'existe pas de jeu de liens défini dans notre module cible pour décrire des liens vers le "LinkTo" du module.
Il nous faut donc en définir un.

Executer la commande du menu Fichier > Propriétés du Module...

Sélectionnez l'onglet Ensembles de liens et appuyez sur Ajouter.

Parcourez jusqu'au module "Module LinkedTo" pour le prendre comme cible des liens.
Accédez au module de liens "Link Module" pour stocker les liens.
Ensuite, appuyez sur OK.

L'ensemble de liens apparaît dans la liste de l'onglet maintenant.
Appuyez sur OK.

Lorsque vous appuyez sur Fusionner les changements dans la fenêtre d'intégration pour l'objet "ORG_18", et regardez l'objet dans la cible, vous verrez qu'un lien sortant a été ajouté.

Dans la fenêtre d'intégration, sélectionnez la ligne pour l'objet "ORG_21", et appuyez sur Fusionner les changements.
Si vous regardez le module cible maintenant, vous ne verrez pas l'objet, car il a été supprimé.
Exécuter la commande du menu Vue > Afficher > Suppressions dans the module cible, et vous verrez l'objet supprimé "ORG_21".
Vous pouvez également voir les objets supprimés comme le "ORG_22".

Dans la fenêtre d'intégration, sélectionnez la ligne pour l'objet "ORG_22", et appuyez sur Fusionner les changements.
Si vous regardez le module cible maintenant, vous verrez que l'objet est maintenant restauré.

Dans la fenêtre d'intégration, sélectionnez la ligne pour l'objet "ORG_23", et appuyez sur Fusionner les changements.

Au cours de cette fusion, le script a rencontré une erreur.
C'est parce que l'objet a déjà été purgé de notre module cible.

Dans la fenêtre d'intégration, sélectionnez la ligne pour l'objet "ORG_25", et appuyez sur Fusionner les changements.
Si vous regardez le module cible maintenant, vous ne verrez pas l'objet, même si vous affichez les objets supprimés, c'est parce que l'objet a été purgé.

Maintenant, nous allons fusionner un changement conflictuel.
Dans la fenêtre d'intégration, sélectionnez la ligne pour l'objet "ORG_13".
Cet objet est en conflit parce que les deux objets source et cible ont été modifiés depuis la base, et ces changements ne sont pas les mêmes.
Appuyez sur Fusionner les changements.

Parce que vous tentez de fusionner des modifications en conflit, le script vous avertit des éventuelles conséquences involontaires.
Appuyez sur Confirmer.

Si nous revenons sur le module cible, nous voyons que l'entête a été changée pour correspondre à ce qu'il y a dans le module source.
Bien que cette fusion fonctionne comme nous l'expérions, le script ne peut pas toujours fusionner correctement les modifications.
Vous devriez donc toujours vérifier deux fois les modifications conflictuelles fusionnées.

Que faire si vous ne voulez pas fusionner un changement dans votre module cible ?
Il suffit de sélectionner la ligne, dans cet exemple, sélectionnez l'objet "ORG_54", et d'appuyer sur Marquer comme fusionné.

Vous voyez que la ligne disparaît de la liste des changements.
Maintenant, à partir du module cible, faites un clic droit sur l'objet "ORG_54", et sélectionnez la commande du menu Propriétés...

Si vous regardez l'onglet Attributs, vous voyez que l'attribut Test Status demeure à Not Tested, plutôt que de prendre la valeur du module source de Tested.
Vous pouvez aussi voir que l'option Last Integrated On est active.
C'est ainsi que le script sait que l'objet n'a plus besoin d'être fusionné.
Appuyez sur OK pour fermer la fenêtre des propriétés.

Si nous devions interrompre les modifications du fichier source dans le module cible, pour reprendre plus tard, nous pourrions appuyer sur Continuer plus tard.
Supposons que nous avons fini de fusionner toutes les modifications souhaitées.
Appuyez donc sur Terminer l'intégration.

Le script va afficher une boîte de dialogue permettant de personnaliser la version d'intégration qui doit être faite après chaque intégration.
Vous pouvez changer la version de référence si vous voulez, en incrémentant ou le numéro mineur ou le majeur (ou pas du tout, c'est le cas par défaut).
Vous pouvez également modifier le suffixe et ajouter un texte descriptif.
Lorsque vous êtes prêt, appuyez sur OK.

Puisque nous avons intégré les changements à la version actuelle du module source, le module source doit également avoir une version d'intégration créée.
Appuyez sur Confirmer.

Quand les versions de référence sont créées, une boîte de dialogue annonce leur achèvement.
Appuyez sur OK.
Vous avez terminé l'intégration !