Jag har jobbat lite mer än två år med Team Foundation Server (TFS) och under denna period har man lärt sig en hel del om verktyget. I detta inlägg tänkte jag ta upp en del tips kring hur man effektivare kan arbete med TFS:n samt undvika onödiga fallgropar.
1. Versionskonflikter är nog det vanligaste problemet som man stöter på när man börjar använda TFS:n. När dessa konflikter uppstår krävs det att man antingen manuellt eller automatiskt (auto merge) inför de kodändringar man gjort till den senaste versionen av filen. Jag är inte för detta arbetssätt i små projekt (ca 1-6 utvecklare) och jag rekommenderar att man i så stor mån som möjligt undviker versionkonflikter. Detta eftersom det är tidsödande att lösa dessa konflikter samt att risken för fel ökar när själva sammanfogningen görs. Observera dock att i projekt med väldigt många utvecklare så kan effektivitetsvinsterna vara stora om man tillåter versionskonflikter.
Nedan tar jag upp två sätt hur man kan eliminera versionskonflikter.
• Slå av möjligheten att flera utvecklare kan checka ut en och samma fil. Detta görs genom att högerklicka på det aktuella projektet i Team Explorer vyn. Välj därefter "Team Project Settings" -> "Source Control" -> "Check-out Settings" och bocka ur "Enable multiple check-out".
• När man checkar ut en fil så vill man i princip alltid ha den senaste versionen av filen just för att slippa hamna i en onödig versionskonflikt när man väl checkar in filen. I Team Foundation Server 2005 finns tyvärr ingen inställning som man kan slå på som hämtar den senaste versionen av filen vid utcheckning men i Team Foundation Server 2008 har man lagt till en sådan inställning. Högerklicka på det aktuella projektet i Team Explorer vyn. Välj därefter "Team Project Settings" -> "Source Control" -> "Check-out Settings" och bocka i "Enable get latest on check-out". Jag har hört dock att denna inställning kan vara lite svajig om man inte kör Visual Studio 2008.
Har man inte TFS 2008 eller VS 2008 så finns det en addin till VS 2005 som är gratis att ladda hem. Du finner den på följande adress:
http://sela.co.il/?CategoryID=975&ArticleID=501&Page=1
Källkoden till addin:et finns på denna adress för den som är nyfiken:
http://www.codeplex.com/TfsAddInCheckOut
2a. För att bland annat förbättra spårbarhet i versionshanteringen så är det bra att använda work items när man checkar in filer i TFS:n. Work item mallarna är inte alltid anpassade för den verksamhet man jobbar i men det finns möjlighet att skräddarsy dessa mallar. Genom att använda sig av TFS Power Tools så är det mycket lätt att skräddarsy work item mallar. Gå igenom de work item mallar ni använder och ta bort de fält ni inte använder, lägg till de fält ni behöver och använd tydliga rubriksnamn.
På följande adresser kan du ladda hem Power Tools:en
- Visual Studio 2005 Team Foundation Server Power Tools
- Visual Studio 2008 Team Foundation Server Power Tools
Innan man börjar ändra i work item mallen så är det bra att ta en säkerhetskopia på mallen genom att exportera mallen till ens hårddisk. Det finns lite olika sätt att editera en work item mall. Antingen kan man editera den mall man exporterat och därefter importera in den till TFS:n när man är klar. Eller så kan man editera direkt på mallen i TFS:n. För att editera direkt på mallen välj menyalternativet "Tools" -> "Process Editor" -> "Work Item Types" -> "Open WIT from Server". Därefter väljer man TFS server, projekt samt vilken work item mall man vill ändra. Det som man kan ändra är fält, layout och arbetsflöde.
2b. När man checkar in filer mot ett specifikt work item så är förvalet att man är klar med utvecklingen, dvs "resolve". Är man inte klar med utvecklingen så ska man välja att associera (associate) filerna till work item:et. För detta krävs det dock två musklick. Eftersom man betydligt oftare associerar än klarmarkerar så vill man gärna slippa dessa extra musklick. De flesta har nog också varit med de fall då man av misstag klarmarkerat när man skulle associerat. Inträffar detta så tar det lite tid att rätta till det man gjort.
Det finns tyvärr inte något sätt att få associeringsalternativet förvalt. Det sätt som man får lösa detta på är att ta bort klarmarkeringsalternativet så att det bara finns ett enda alternativ vid incheckning, dvs associering. På detta sätt slipper man de extra musklicken. Detta är inte den optimalaste lösningen men oftast vill man inte klarmarkera ett work item direkt efter kodning eftersom det bör testas först.
Sättet att ta bort klarmarkeringsalternativet är via menyalternativet "Tools" -> "Process Editor" -> "Work Item Types" -> "Open WIT from Server". Därefter väljer man TFS server, projekt samt vilken work item mall man vill ändra. Sedan väljer man "Workflow"-fliken och högerklickar på "Transition"-boxen, som är mellan "Active" och "Resolved", och väljer "Properties". Ett nytt fönster öppnas upp, välj då fliken "Actions" och klicka på knappen "Delete" för att ta bort "Microsoft.VSTS.Actions.Checkin". Klicka sedan på OK och spara work item:et.
Microsoft har gjort en video på hur detta görs:
http://msdn.microsoft.com/sv-se/vsts2008/cc817312(en-us).aspx
2c. I vissa fall vill man kunna använda fetstil, kursiv eller någon annan formatering i sina work item texter. Vill man kunna göra detta måste man ändra datatyp till "HTML" på det fält man vill använda formatering på. Olyckligtvis går det inte att ändra formatering på fältet "Description". Sättet att lösa detta är att skapa ett nytt "Description"-fält med datatypen "HTML" och därefter ta bort den gamla från gränssnittet. Observera dock att all gammal data i det gamla "Description"-fältet döljs i work itemet. Det finns olika sätt att importera denna data till det nya fältet. Ett sätt är att importera alla work item:s till Excel (se punkt 4 i detta inlägg) och kopiera över datan från det gamla fältet till det nya.
För att kunna formatera text i HTML-fält så krävs det att formateringstoolbaren är synlig i Visual Studio. Högerklicka på ett blankt område i VS toolbar och välj att lägga till toolbaren "Formatting".
3. Dela in work items i olika applikationsversioner så att man på ett enkelt sätt kan se vilken applikationsversion ett work item tillhör. Detta underlättar tex väldigt mycket när man ska presentera för kunden vilka saker som publicerats till produktion.
4. Det är möjligt att importera work items till Excel 2003, Excel 2007 eller MS project. För att göra det till Excel välj menyalternativet "Team" -> "New List". Ange TFS server, välj work item vy och klicka på OK. När man sedan gjort ändringar i exceldokumentet klickar man på knappen "Publish" i menym för att synkronisera över ändringarna till TFS:n. De tillfällen då det kan vara bra att använda Excel är vid tidsuppskattning och planering för att få en bra överblick eller då alla tester är godkända och man klarmarker många work items på en och samma gång.
För mer information läs följande artikel Using Excel To Manage Your Work Items.
5. För att enkelt versionshantera nya applikationer i TFS:n så rekommenderar jag att samla alla applikationer under en och samma projektinstans. På detta sätt slipper man en del administration (speciellt i de fall då utvecklingsteamet inte är administratörer av TFS:n). Samlar man alla applikationer i en och samma projektinstans så är en rekommendation att skapa olika work item vyer för respektive applikation. Detta för att underlätta incheckning mot work items men även för att få en bättre överblick på vad som ska göras i respektive applikation.
6. När en release gjorts av en applikation så brancha applikationskoden så att det går snabbt och lätt att få upp miljön vid akuta buggar eller liknande. Undvik dock att i så stor utsträckning som möjligt att göra rättningar i branchversionen eftersom det även kräver rättning i den befintliga versionen som man för tillfället utvecklar.
På nedanstående sida finns en guide hur du branchar:
http://msdn.microsoft.com/en-us/library/ms181425(VS.80).aspx
7. Team Foundation kan automatiskt skicka ett informationsmail när något inträffar på en specifik TFS-projektinstans. Det kan tex vara när någon ändrar status på ett work item, att filer checkas in, när dagliga byggen är klara m.m.
På denna sida kan du läsa hur det fungerar:
http://msdn.microsoft.com/en-us/library/ms181334.aspx
8. Ladda hem "Software Development Kit:et" (SDK) till Visual Studio. Där kan man finna bland annat bra kodexempel för hur man kan göra applikationsintegrationer mot TFS:n och work items.
- Visual Studio 2005 Software Development Kit (SDK) Version 4.0
- Visual Studio 2008 Software Development Kit (SDK) Version 1.0
9. Det finns ett webbgränssnitt för att arbeta med TFS:n. Detta kan vara bra att använda för kunder som inte har Visual Studio eller vid kundmöten för att få ett bra gränssnitt. På nedantående sida kan du läsa mer om TFS Web Access och hur man installerar det.
Visual Studio Team System 2008 Web Access
Här nedan finns även några Power Tools till "Web Access"-delen:
- Visual Studio Team System Web Access 2005 Power Tool
- Visual Studio Team System Web Access 2008 Power Tool
10. Det finns lite olika verktyg för att integrera Scrum med TFS:n. Nedanstående är några sådana som gör detta möjligt.
- Scrum for Team System
- Microsoft eScrum
- VSTS Scrum Process Template
- Scrum Dashboard
En utvärdering av de tre översta verktygen finns i detta blogginlägg:
http://grabbagoft.blogspot.com/2007/06/vsts-scrum-process-templates.html
Har du några andra bra TFS-tips så hör gärna av dig till mig på krister.kauppi@elicit.se