Dans cette leçon je vous propose d'apprendre ou de revoir comment il est possible de récupérer les éléments du contrôler de version.
Team Foundation Server permet de gérer le code source d'une application (Projet) et son historique.
Que représente l'historique ?
Ligne de temps d'un projet
--------------->--------------------->----------------->------------------>------------------------>------------------------>-------...
Initialisation du projet | Modification du code n°123 | Modification du code n°127 | Modification du code n°168 | Modification du code n°201 | Modification du code n°309 |
Chaque modification de code se nomme "ChangeSet". A chaque archivage de code d'un développeur un "ChangeSet" est créé avec l'ensemble des éléments qui ont été modifiés.
Les API de TFS permettent de récupérer les fichiers qui sont donc les stocker dans le contrôler de version et leurs modifications.
Etape 1: Les "USING"
Pour utiliser les éléments il faut les using suivant:
using Microsoft.TeamFoundation.Client; using Microsoft.TeamFoundation.VersionControl.Client; |
Etape 2: Connexion au contrôler de version
Pour la connexion au serveur veuillez voir la leçon 1.
L'objet "Tfs" est l'objet TeamFoundationServer permettant la connexion au serveur.
VersionControlServer vcs = (VersionControlServer)Tfs.GetService(typeof(VersionControlServer)); |
La méthode "GetService" de l'objet "TeamFoundationServer" permet de récupérer un type de service. Nous verrons dans les prochaines leçons qu'il existe plusieurs services possibles. Dans le cadre de cette leçon nous nous pencherons sur le service "VersionControlServer" permettant de travailler avec les éléments (fichiers, répertoires, historique…).
Etape 3: Récupérer les éléments d'un projet
"VersionControlServer" contient une méthode nommé "GetItems" qui permet la récupération des éléments. Elle prend deux paramètres, un chemin (Ex: $/MonProjet) et un type de recrutions (Ex: RecursionType.Full), Full permet de récupérer l'ensemble des éléments de tous les répertoires et sous-répertoires.
ItemSet itemSet = vcs.GetItems("$/MonProjet", RecursionType.Full); |
Tout chemin doit commencer par "$/" c'est comme pour le disque dur qui lui commence par exemple par "C:/".
L'objet "ItemSet" contient une collection d' "Items" qui représente chaque élément.
ATTENTION, si vous utilisez l'argument "RecursionType.Full" les items ne sont dans récupérés avec cette notion de hiérarchie.
Exemple :
Si dans mon contrôler de version j'ai :
$/MonProjet/ ----------------DEV/ ----------------------Fichier.cs ----------------------Image.jpg ----------------DEV2/ ----------------------Fichier2.cs ----------------------Image2.jpg |
Ma collection d' "Items" pourrais être représenté de cette manière:
Items[0].ServerItem = $/MonProjet/ Items[1].ServerItem = $/MonProjet/DEV/ Items[2].ServerItem = $/MonProjet/DEV/Fichier.cs Items[3].ServerItem = $/MonProjet/DEV/Image.jpg Items[4].ServerItem = $/MonProjet/DEV2/ Items[5].ServerItem = $/MonProjet/DEV2/Fichier2.cs Items[6].ServerItem = $/MonProjet/DEV2/Image2.jpg |
Vous l'aurez compris la propriété "ServerItem" permet de récupérer le nom et chemin de l'item. Mais cela ne nous permet pas de récupérer facilement, sous forme de treeview par exemple, le contenu de notre projet. Nous verons dans la prochaine leçon comment faire.
Dans ce cas de figure il n'est pas facile de savoir ce qui est un fichier et ce qui est un répertoire. Pour ce faire un item contient également la propriété "ItemType" permettant de le savoir.
Etape 4 : Récupérer l'historique d'un fichier.
Dans l'exemple suivant nous allons récupérer l'historique du fichier
IEnumerable cs = versionControl.QueryHistory("$/MonProjet/Dev/Fichier.cs", VersionSpec.Latest, 0, RecursionType.Full, null, null, null, Int32.MaxValue, true, true);
foreach (Changeset c in cs) { if (c.Changes.Length > 0) { foreach (Change ch in c.Changes) { Item i = ch.Item; ChangeType t = ch.ChangeType; if (t == ChangeType.Add) MessageBox.Show("Fichier ajouté"); } } } |
Aucun commentaire:
Enregistrer un commentaire