•   Posted in: 
  • TFS

Momenteel zit ik bij een klant waar iedere ontwikkelaar z’n gang kan gaan binnen een vooraf geïnstalleerde VM. Helemaal ideaal natuurlijk, zo weet je zeker dat alles goed werkt binnen het netwerk, zeker wanneer er enkele ‘speciale’ dingen moeten worden ingesteld, zoals een proxy, certificaten, ADFS, etc.

Nu wilde ik onlangs een project uit TFS halen om daar wijzigingen in aan te brengen. M’n workspace had ik ingesteld op C:\Projecten\. Zo kan ik via de Windows Verkenner snel naar die map toe gaan. Hoewel dit tegenwoordig niet meer direct noodzakelijk is, is dit eigenlijk een gewoonte van me geworden.

Bij het ophalen van het project kreeg ik een volgende melding:

The path C:\Projecten\ is already mapped in workspace MACHINENAME;DOMEIN\OTHERUSER

Aangezien ik nog niet zo heel bekend ben met TFS en de onderliggende werking wist ik even niet wat ik hier mee aan moest. Deze VM was helemaal clean en die betreffende gebruiker had zeker nog nooit op deze machine zitten werken. Na wat zoeken kwam ik er al vrij snel achter dat TFS zelf bijhoudt welke gebruikers een project hebben opgehaald. Hier wordt ook bij geregistreerd op welke machine de gebruiker dat gedaan heeft.

Omdat wij allemaal op ‘dezelfde’ VM werken, is de machinenaam ook gelijk. Iedereen maakt immers een kopietje van het origineel. Hierdoor denkt TFS ook dat we allemaal op dezelfde machine zitten te werken en kan ik dus niet dezelfde workspace locatie gebruiken als een collega. Op zich is dat natuurlijk logisch, want dan zou je normaliter bestanden van iemand anders overschrijven, zonder dat die dat door heeft.

Een oplossing voor mijn probleem was ook al snel gevonden. Via de console kun je namelijk workspaces van andere gebruikers verwijderen. Door het volgende commando uit te voeren krijg je te zien welke workspaces bij een bepaalde gebruiker op een machine bekend zijn:

tf workspaces /computer:MACHINENAME /owner:* /format:detailed /server:http://tfsserver:8080

De output zal dan een lijst met workspaces zijn die voor deze machine gelden.

image

Zodra je weet welke gebruiker dezelfde workspace heeft als jij kun je deze gewoonweg verwijderen uit TFS, zodat je je eigen workspace kunt gebruiken. Het benodigde commando hiervoor is:

tf workspace /delete MACHINENAME;DOMEIN\OTHERUSER /server:tfsserver:8080

Let op, het is wellicht verstandig om eerst na te gaan of dit ook gewenst is. In mijn geval was het niet de bedoeling dat ik de workspaces van een ander zomaar ging verwijderen, omdat hun ook bezig waren met hun eigen wijzigingen in de code. Uiteindelijk heb ik maar gekozen om m’n workspace in een map te plaatsen die overeen kwam met m’n AD gebruiker account, dus C:\JANDEVRIES\Projects\.

Let er wel op dat je de verschillende commando’s draait in een console welke in de gebruikercontext van het bijbehorende domein hoort. Zodoende weet je zeker dat je ook voldoende rechten hebt op de TFS server. Wanneer je dit niet doet, dan zit je in de gebruikercontext van je lokale gebruiker te werken welke mogelijk geen rechten heeft op de TFS server.