vendredi 29 mai 2009

3 ème Salon des nouvelles technologies et des entrepreneurs




Bonjour

Venez découvrir le 3 ème Salon des nouvelles technologies et des entrepreneurs, je serais présent et cela sera l'occasion de nous rencontrer et de discuter.



Venez nombreux

mercredi 27 mai 2009

Installation de TFS 2010 BETA 1 en mode personnalisé

Florent SANTIN nous livre trois bon articles sur l'installation de TSF 2010 en mode par défaut.

Dans ce poste je vais m'efforcer de vous montrer l'installation personnalisée de TFS 2010, je vous rappel que ce n'est encore qu'une version BETA.

Pour commencer lisez les articles de Florent ;)

Ensuite sur la page d'accueil de l'installation choisir "Custom Configuration" et vous arrivez sur cet écran :

Dans l'écran "Configuration DataBase" indiquer les informations de SQL Server, petite nouveauté, il est possible de préfixer vos bases de données, dans mon exemple je l'ai préfixer par Evaluant.
Dans l'écran "Application tier" indiquer les informations le compte system et les informations sur le site TeamFoundationServer. Il est à noter que dans cette nouvelle version il est enfin possible de choisir le nom du site et le port de communcation

Dans l'écran "Reporting" cocher la case pour configurer Reporting avec TFS.

Dans l'écran "Reporting Service" indiquer le serveur de rapports et les URL

Dans l'écran "WareHouse" indiquer le serveur à utiliser pour gérer le cube OLAP, pour rappel le cube OLAP vous permet la création de rapports.

Dans l'écran "Report Reader Account"  indiquer le compte à utiliser.

Dans l'écran "Sharepoint" cochez la case pour configurer SharePoint pour TFS

Dans l'écran "Setting" vérifier les informations de connection à WSS si comme moi vous aviez installé WSS avant TFS. Cela permet également de ce connecter sur un MOSS.

Dans l'écran "Project Collection" indiquez la collection de projets que vous souhaitez. Ceci est une nouveauté et me sera personnellement très utile. 
En effet dans cette nouvelle version le terme de collection de projets va permettre de mettre de l'ordre dans les projets soit par service, par société (pour les SSII), par catégorie (Taille, méthodologie...). Chaque Collection de projet a ça propre base de données, son propre portail de collection de site. C'est une grande et bonne idée.

Dans l'écran "Review" vous pourrez visualiser les paramètres.

Dans l'écran "Readiness Checks" l'application vérifie que vos paramètres soit bon.

Une fois vérifié vous pouvez lancer la configuration, nous ne parlons pas d'installation mais bien de configuration. Pour l'installation voyez l'article de Florent.

Une fois la configuration terminé si tout c'est bien passé vous devriez avoir cet écran.


Mes tests ce sont déroulés sur un Windows Server 2003 R2 SP2 avec SQL Server 2008 et WSS 3.0 SP2. Je vous recommande de faire les tests sur une machine virtuelle.

Si vous souhaitez une présentation de VSTS 2010, contactez moi : n.choulant@evaluant.com

Pour ceux d'entre vous qui seront du coté de strasbourg le 23 Juin venez aux MS Day, je serais présent.

Leçon 4 : Comment récupérer les éléments d'un projet dans un TreeView


    Dans la Leçon 2  nous avions vue comment récupérer des éléments (fichiers, répertoires) dans TFS pour un projet donné.

     

    Dans cette leçon, nous allons voir comment mettre ces éléments dans un TreeView.

     

    Etape 1 : Création du TreeView

     

    Rien de bien compliqué.

    TreeView trvItem = new TreeView();

     

    Etape 2 : Création d'une méthode de base

    Nous allons créer une première méthode que l'on pourra appeler de n'importe où.

     

    Elle prend 3 arguments:

  1. Un objet de type VersionControlServer permettant la récupération.
  2. Le chemin à partir du quel rechercher les enfants
  3. Un TreeView contenant les éléments trouvés
  4.  

    private void GetAllItem(VersionControlServer vcs, string path, TreeView trvItem)

    {

    GetAllItem(vcs, path, trvItem.Nodes.Add("$"));

    }

     

    Etape 3: Création d'une méthode récursive

     

    Méthode récursive permettant de parcourir niveau par niveau les éléments.

     

  5. Objet de type VersionControlServer permettant la récupération
  6. Le chemin à partir du quel recherché les enfants
  7. Le TreeNode contenant les éléments trouvés
  8.  

    private void GetAllItem(VersionControlServer vcs,string path,TreeNode trnParent)

    {

     

    Code Complet :

     

    TreeView trvItem = new TreeView();

     

    private void GetAllItem(VersionControlServer vcs, string path, TreeView trvItem)

    {

    GetAllItem(vcs, path, trvItem.Nodes.Add("$"));

    }

    private void GetAllItem(VersionControlServer vcs,string path,TreeNode trnParent)

    {

    //Récupération des éléments du niveau en cours

    //Utilisation de RecursionType.OneLevel pour n'avoir que le niveau en cour

    //Cela permet de connaitre la hiérarchie

    ItemSet itemSet = vcs.GetItems(path, RecursionType.OneLevel);

    //Parcour des éléments trouvé

    foreach (Item item in itemSet.Items)

    {

    //Vérification du type d'item

    //Un répertoire peut avoir des sous éléments mais pas un fichier

                    if (item.ItemType == ItemType.Folder)

                    {

                        //Ajout du noeud en cours

                        TreeNode trn = trnParent.Nodes.Add(item.ServerItem.Replace(path, string.Empty));

                        //Récursion sur la méthode pour la récupération des éléments

                        GetAllItem(vcs, item.ServerItem, trn);

                    }

                    else

                    {

                        //Pour un fichier ajout du noeud

                        trnParent.Nodes.Add(item.ServerItem.Replace(path, string.Empty));

                    }

                }

       }

         

mercredi 6 mai 2009

Leçon 3 : Comment ajouter un fichier ?


 
Pour ajouter un fichier ou plusieurs il est nécéssaire de passer par VersionControlServer (Voir Leçon 2).
 
Une fois le versionControlServer récupéré il faut créer un Workspace pour travailler.
 
Etape 1: Création du workspace
Workspace workspace = versionControl.CreateWorkspace(Guid.NewGuid().ToString(), versionControl.AuthenticatedUser);
 
Je passe Guid.NewGuid() pour pouvoir créer un workspace qui ne rentrera pas en conflit avec un existant.
 
Etape 2: Récupération des fichiers du serveur dans le workspace
 
Paramétrage de la liaison serveur <-> local
workspace.Map(Target, tmp); 
"Target" représente la destination, l'endroit où sera ajouté le fichier .
"tmp" représente l'emplacement sur le disque dur en local.
 
Action de récupération
workspace.Get();
               
 Etape 3: Ajout du fichier dans le workspace
On edit du coté local donc dans le workspace
workspace.PendEdit(fileTarget);
Puis on ajout le fichier
workspace.PendAdd(fileTarget);
Copie du fichier dans le workspace

File.Copy(_s, fileTarget, true);
Ajout du fichier. 
workspace.PendAdd(fileTarget, (Recursion == RecursionType.Full));
Etape 4: Gestion des modifications en cours
 
Affiche les changement en cour.

PendingChange[] pendingChanges = workspace.GetPendingChanges();
 
Parcour les fichier en attente
    
foreach (PendingChange pendingChange in pendingChanges)
{
         Console.WhritLine("  path: " + pendingChange.LocalItem +
                                      ", change: " + PendingChange.GetLocalizedStringForChangeType(pendingChange.ChangeType));
}
           
Etape 5: Archivage
 
Archive les fichiers et récupère le changeset 
int changesetNumber = workspace.CheckIn(pendingChanges, Description);
 

Leçon 2 : Comment récupérer les fichiers du controler de code source


 

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é");

}

}

}

 

mardi 5 mai 2009

Leçon 1 : Comment ce connecter à un server TFS

 
La connection au serveur TFS est possible de plusieurs manières  


Connextion au serveur via l'instance:

  • 1 ière manière:

TeamFoundationServer monTFS = TeamFoundationServerFactory.GetService("http://TFS:8080"); 

Cette méthode récupére l'instance du serveur en cours.

 

Il est possible de s'authentifier, pour ce faire soit il faut passer un objet ICredentialsProvider soit affichier la fenêtre d'authetification.

TeamFoundationServer monTFS = TeamFoundationServerFactory.GetService("http://TFS:8080", new UICredentialsProvider()); 

  • 2 ième manière:

Instanciation d'un objet TeamFoundationServer.

TeamFoundationServer monTFS = new TeamFoundationServer("http://TFS:8080"); 

Il est également, comme dans la première manière, possible de s'authentifier. Pour ce faire soit il faut passer un objet ICredentialsProvider soit affichier la fenêtre d'authetification.

TeamFoundationServer monTFS = new TeamFoundationServer("http://TFS:8080", new UICredentialsProvider()); 

 

Conseil : Par rapport à des projets j'ai préféré la 2 manière.