Subversion - informations générales

Cet appendice donne des informations générales concernant la configuration du Référentiel Subversion, ainsi que quelques exemples concrets et une section concernant les métapropriétés.

Connexion au référentiel

IKAN ALM se connecte au Référentiel via le Client SVN (Subversion) qui doit être installé sur le Serveur IKAN ALM. Le chemin de commande indique l’emplacement du Client SVN.

Un Référentiel Subversion est identifié par son URL de Référentiel, par exemple file:///path/to/repos ou svn://servername ou http://my.domain/repos. Pour plus d’informations, se référer au manuel en-ligne de Subversion “Version Control with Subversion, chapter 2 - Basic Concepts” localisé à http://svnbook.red-bean.com/en/1.7/svn.basic.version-control-basics.html. Le chapitre 7 de ce manuel montre un tableau concernant les URLs du Référentiel et une section concernant le Référentiel Subversion.

Dans la plupart des cas, un Identifiant Utilisateur et un Mot de passe doivent être saisis, sauf si le Référentiel n’est pas protégé (par exemple: pour le protocole svn, anon-access = write dans le fichier svnserver.conf) ou si les identifiants de l’utilisateur exécutant le Serveur Web d’IKAN ALM ou le processus serveur de l’application sont sauvegardés dans la zone Utilisateur privée d’exécutions ( ~/.subversion/auth/ ou %APPDATA%/Subversion/Auth/). Pour plus d’informations, se référer également à http://svnbook.red-bean.com/en/1.7/svn.serverconfig.netmodel.html#svn.serverconfig.netmodel.credcache.

Définition du référentiel

La définition de Subversion nécessite l’utilisation de champs spécifiques pour permettre une configuration flexible de la structure de Référentiel Subversion (voir http://svnbook.red-bean.com/en/1.2/svn.reposadmin.projects.html#svn.reposadmin.projects.chooselayout).

Dans les sections suivantes, vous trouverez des informations concernant:

Champs de configuration spécifiques

Les champs spécifiques suivants ont été ajoutés à la définition de Subversion:

  • Répertoire des projets (Trunk)

  • Répertoire des versions (Tags)

  • Structure du référentiel

Répertoire des projets (Trunk)

Le répertoire des projets (Trunk) est le répertoire du flux de développement principal (“head” ou “main”). La dénomination par défaut de ce répertoire est trunk, mais d’autres dénominations sont permises, par exemple, main ou head.

Ce répertoire peut se trouver directement en-dessous du chemin de référentiel ou peut être spécifique par projet en fonction des Paramètres saisis dans le champ Structure du référentiel décrit ci-dessous.

Le champ Répertoire des projets (Trunk) ne peut rester vide que si le champ Structure du référentiel contient la valeur Orienté référentiel. Pour une structure de référentiel Orientée projet ou Orientée projet unique, le répertoire des projets doit être spécifié pour éviter des Construction continues infinies dans le cas où un Plan horaire serait défini pour une telle définition de référentiel (Le répertoire des versions faisant partie du répertoire des projets, le processus de balisage créerait une modification du répertoire des projets, ce qui engendrerait une boucle sans fin).

Répertoire des versions (Tags)

Le répertoire des versions (Tags) est l’emplacement où IKAN ALM crée les Balises (appelés également des tags) après une Construction exécutée correctement. La dénomination par défaut de ce répertoire est tags, mais d’autres dénominations sont permises, par exemple, tag.

Ce répertoire peut se trouver directement en-dessous du chemin de référentiel, ou peut être spécifique par projet en fonction des Paramètres saisis dans le champ Structure du référentiel.

Structure du référentiel

La structure du référentiel par défaut est établie à Orienté projet. Les autres valeurs possibles sont: Orienté référentiel et Orienté projet unique.

Référez-vous aux Exemples de structure pour plus d’informations concernant la configuration des structures possibles.

Exemples de structure

Cette section décrit les structures de référentiel possibles ainsi qu’une solution possible dans IKAN ALM pour un Référentiel Subversion.

Les dénominations de répertoire utilisées (Trunk, Tags, Branches) sont arbitraires. Si vous désirez appeler le répertoire des projets “main” ou “head”, ou le répertoire des Branches “stream” ou ., vous pouvez le faire librement.

Structure 1 (Orienté projet)

La structure dans le Référentiel Subversion:

/

/calc

/calc/trunk

/calc/branches

/calc/tags

/paint

/paint/trunk

/paint/branches

/paint/tags

La définition dans IKAN ALM:

URL = l’URL de référentiel spécifié dans la définition de Subversion.

Description Valeur

Répertoire des projets (Référentiel Subversion)

Le répertoire des projets (Trunk) dans le Référentiel Subversion.

trunk

Répertoire des versions (Référentiel Subversion)

Le répertoire des versions (Tags) dans le Référentiel Subversion.

tags

Structure du référentiel (Référentiel Subversion)

Une des structures de référentiel possibles.

Orienté projet

Dénomination du Projet RCV (Définition du Projet)

La dénomination du Projet dans le RCV.

calc

Validation du Projet (Définition du Projet)

Si vous cliquez sur le bouton “Vérifier le nom de projet dans le RCV”, l’existence de ces répertoires sera vérifié.

URL/calc/trunk

URL/calc/tags

Récupération Branche Principale (Administration des Requêtes de Niveau)

Le répertoire qui est récupéré en local pour la branche principale du projet dans la phase “Extraction code”.

URL/calc/trunk

Modèle de balise pour la Branche Principale (Aperçu détaillé d’une Requête de Niveau)

Modèle de balise généré après une Construction correctement exécutée pour une branche principale.

URL/calc/tags/H_1-0_b1

Identifiant de la Branche Secondaire dans le RCV (Définition de la Branche Secondaire)

L’identifiant de la Branche Secondaire telle que définie dans le RCV.

/calc/branches/B_1-2

Validation de la Branche Secondaire (Définition de Branches Secondaires)

Si vous cliquez sur le bouton “Vérifier le nom de branche dans le RCV”, l’existence de ces répertoires sera vérifié.

URL/calc/branches/B_1-2

Récupération Branche Secondaire (Administration des Requêtes de Niveau)

Le répertoire qui est récupéré en local pour la Branche Secondaire du projet dans la phase “Extraction code”.

URL/calc/branches/B_1-2

Modèle de balise pour la Branche Secondaire (Aperçu détaillé d’une Requête de Niveau)

Modèle de balise généré après une Construction correctement exécutée pour une Branche Secondaire.

URL/calc/tags/B_1-2_b5

Structure 2 (Orienté référentiel)

La structure dans le Référentiel Subversion:

/

/trunk

/trunk/calc

/trunk/paint

/tags/paint

/tags/calc

/branches

La définition dans IKAN ALM:

URL = l’URL de référentiel spécifié dans la définition de Subversion.

Description Valeur

Répertoire des projets (Référentiel Subversion)

Le répertoire des projets (Trunk) dans le Référentiel Subversion.

trunk

Répertoire des versions (Référentiel Subversion)

Le répertoire des versions (Tags) dans le Référentiel Subversion.

tags

Structure du référentiel (Référentiel Subversion)

Une des structures de référentiel possibles.

Orienté référentiel

Dénomination du Projet RCV (Définition du Projet)

La dénomination du Projet dans le RCV.

calc

Validation du Projet (Définition du Projet)

Si vous cliquez sur le bouton “Vérifier le nom de projet dans le RCV”, l’existence de ces répertoires sera vérifié.

URL/trunk/calc

URL/tags/calc

Récupération Branche Principale (Administration des Requêtes de Niveau)

Le répertoire qui est récupéré en local pour la branche principale du projet dans la phase “Extraction code”.

URL/trunk/calc

Modèle de balise pour la Branche Principale (Aperçu détaillé d’une Requête de Niveau)

Modèle de balise généré après une Construction correctement exécutée pour la branche principale.

URL /tags/calc/H_1-0_b1

Identifiant de la Branche Secondaire dans le RCV (Définition de la Branche Secondaire)

L’identifiant de la Branche Secondaire telle que définie dans le RCV.

/branches/calc/B_1-2

Validation de la Branche Secondaire (Définition de Branches Secondaires)

Si vous cliquez sur le bouton “Vérifier le nom de branche dans le RCV”, l’existence de ces répertoires sera vérifié.

URL/branches/calc/B_1-2

Récupération Branche Secondaire (Administration des Requêtes de Niveau)

Le répertoire qui est récupéré en local pour la Branche Secondaire du projet dans la phase “Extraction code”.

URL/branches/calc/B_1-2

Modèle de balise pour la Branche Secondaire (Aperçu détaillé d’une Requête de Niveau)

Modèle de balise généré après une Construction correctement exécutée pour une Branche Secondaire.

URL /tags/calc/B_1-2_b5

Structure 3 (Un référentiel = un Projet)

La structure dans le Référentiel Subversion:

/

/trunk

/tags

/branches

La définition dans IKAN ALM:

URL = l’URL de référentiel spécifié dans la définition de Subversion.

Description Valeur

Répertoire des projets (Référentiel Subversion)

Le répertoire des projets (Trunk) dans le Référentiel Subversion.

trunk

Répertoire des versions (Référentiel Subversion)

Le répertoire des versions (Tags) dans le Référentiel Subversion.

tags

Structure du référentiel (Référentiel Subversion)

Une des structures de référentiel possibles.

Orienté projet unique

Dénomination du Projet RCV (Définition du Projet)

La dénomination du Projet dans le RCV.

vide

Validation du Projet (Définition du Projet)

Si vous cliquez sur le bouton “Vérifier le nom de projet dans le RCV”, l’existence de ces répertoires sera vérifié.

URL/trunk

URL/tags

Récupération Branche Principale (Administration des Requêtes de Niveau)

Le répertoire qui est récupéré en local pour la branche principale du projet dans la phase “Extraction code”.

URL/trunk

Modèle de balise pour la Branche Principale (Aperçu détaillé d’une Requête de Niveau)

Modèle de balise généré après une Construction correctement exécutée pour la branche principale.

URL /tags/H_1-0_b1

Identifiant de la Branche Secondaire dans le RCV (Définition de la Branche Secondaire)

L’identifiant de la Branche Secondaire telle que définie dans le RCV.

/branches/B1-2

Validation de la Branche Secondaire (Définition de Branches Secondaires)

Si vous cliquez sur le bouton “Vérifier le nom de branche dans le RCV”, l’existence de ces répertoires sera vérifié.

URL/branches/B1-2

Récupération Branche Secondaire (Administration des Requêtes de Niveau)

Le répertoire qui est récupéré en local pour la Branche Secondaire du projet dans la phase “Extraction code”.

URL/branches/B1-2

Modèle de balise pour la Branche Secondaire (Aperçu détaillé d’une Requête de Niveau)

Modèle de balise généré après une Construction correctement exécutée pour une Branche Secondaire.

URL /tags/B_1-2_b5

Structure 4 (Orienté référentiel, pas de répertoirede projets)

La structure dans le Référentiel Subversion:

/

/calc (= répertoire des projets)

/paint (= répertoire des projets)

/tags/paint

/tags/calc

/branches

La définition dans IKAN ALM:

URL = l’URL de référentiel spécifié dans la définition de Subversion.

Description Valeur

Répertoire des projets (Référentiel Subversion)

Le répertoire des projets (Trunk) dans le Référentiel Subversion.

vide

Répertoire des versions (Référentiel Subversion)

Le répertoire des versions (Tags) dans le Référentiel Subversion.

tags

Structure du référentiel (Référentiel Subversion)

Une des structures de référentiel possibles.

Orienté référentiel

Dénomination du Projet RCV (Définition du Projet)

La dénomination du Projet dans le RCV.

calc

Validation du Projet (Définition du Projet)

Si vous cliquez sur le bouton “Vérifier le nom de projet dans le RCV”, l’existence de ces répertoires sera vérifié.

URL/calc

URL/tags/calc

Récupération Branche Principale (Administration des Requêtes de Niveau)

Le répertoire qui est récupéré en local pour la branche principale du projet dans la phase “Extraction code”.

URL/calc

Modèle de balise pour la Branche Principale (Aperçu détaillé d’une Requête de Niveau)

Modèle de balise généré après une Construction correctement exécutée pour une branche principale.

URL /tags/calc/H_1-0_b1

Identifiant de la Branche Secondaire dans le RCV (Définition de la Branche Secondaire)

L’identifiant de la Branche Secondaire telle que définie dans le RCV.

/branches/calc/B_1-2

Validation de la Branche Secondaire (Définition de Branches Secondaires)

Si vous cliquez sur le bouton “Vérifier le nom de branche dans le RCV”, l’existence de ces répertoires sera vérifié.

URL/branches/calc/B_1-2

Récupération Branche Secondaire (Administration des Requêtes de Niveau)

Le répertoire qui est récupéré en local pour la Branche Secondaire du projet dans la phase “Extraction code”.

URL/branches/B1-2

Modèle de balise pour la Branche Secondaire (Aperçu détaillé d’une Requête de Niveau)

Modèle de balise généré après une Construction correctement exécutée pour une Branche Secondaire.

URL /tags/calc/B_1-2_b5

Collecte des métapropriétés

Subversion offre des interfaces pour ajouter, modifier et supprimer des métadonnées versionnées de répertoires et de fichiers versionnés. Ces métadonnées sont appelées des propriétés. Pour plus d’informations concernant l’usage et la définition de ces propriétés reliées à des fichiers et à des répertoires, se référer au manuel en-ligne de Subversion “Version Control with Subversion, Chapter 7 - Advanced properties” localisé à http://svnbook.red-bean.com/en/1.2/svn.advanced.props.html.

IKAN ALM permet l’utilisation de ces propriétés lors des processus de construction et de déploiement. Si la valeur “Collecte des métapropriétés” est oui, les étapes suivantes seront exécutées lors du processus de construction:

  1. Génération d’un fichier de propriétés (vcr.properties)

    A la fin de la phase “Extraction code”, lors de l’exécution d’une Requête de Niveau, un fichier de propriétés vcr.properties sera généré dans le répertoire racine du code récupéré. Ce fichier contient toutes les métapropriétés des fichiers de l’URL récupéré (le répertoire des projets (trunk ou branches)). Le format suivant est utilisé:

    path.to.file.filename.propertyname=propertyvalue

    Il est évident que, si plusieurs métapropriétés sont reliées à un même fichier, plusieurs entrées seront créées dans le fichier vcr.properties.

    Quelques exemples:

    Exemple 1: Une propriété nommée register et une valeur de propriété true pour le fichier /bin/Musicbiz.dll résulteront par la ligne de propriété suivante: bin.Musicbiz.dll.register= true

    Exemple 2: Deux propriétés servletspecs=2.5 et unchangeable=true sont reliées au fichier /MusicLib/WEB-INF/web.xml. Cela résultera par les lignes de propriété suivantes dans le fichier vcr.properties.

    MusicLib.WEB-INF.web.xml.servletspecs= 2.5

    MusicLib.WEB-INF.web.xml.unchangeable= true

  2. Transfert du fichier vcr.properties vers l’emplacement Source de l’Environnement de Construction

    Pendant la phase “Transfert Sources” d’un processus de construction, le fichier vcr.properties sera transféré vers l’emplacement Source de l’Environnement de Construction en même temps que les codes ou objets Sources récupérés depuis le répertoire des projets ou depuis le répertoire des versions de Subversion.

    Pour pouvoir appliquer les propriétés, le script de construction doit être adapté. Par exemple, si vous utilisez un outil de script ANT, les propriétés peuvent être importées dans le script via la tâche <property file="vcr.properties"/>.

  3. Inclusion du fichier vcr.properties dans le résultat de construction

    Si ces propriétés doivent également être disponibles lors d’un processus de déploiement ultérieur, c’est-à-dire sur un Environnement de Déploiement associé à cet Environnement de Construction, le fichier vcr.properties doit être inclus dans le résultat de construction.

    Cela s’accomplit en incluant une instruction de copie dans le script de construction qui copiera le fichier vcr.properties à partir de l’emplacement Source (paramètre de construction prédéfini Source) vers l’emplacement Cible (paramètre de construction prédéfini target) de l’Environnement de Construction.

    Ainsi, le fichier vcr.properties sera inclu dans le résultat de construction, et, par conséquent, il sera disponible pour le script de déploiement pendant le processus de déploiement de ce résultat de construction.