Monday, January 26, 2009

Setup TFS WorkSpaces for Developers

Read http://blog.donnfelker.com/post/PowerShell-TFS-WorkSpace-Initialization-Script.aspx. Its a pain in the neck to teach everyone how to set up workspaces, show them how to get latest and hope they don't accidentally (or purposely) mess it up. I recommend reading this posting and downloading the script into your Custom TFS Tools Solution that you maintain in the Version Control tree for your organization's architecture/processes' TFS team project.

Not yet ready for 64-bit

Read http://ianfnelson.com/blog/64-bit-tfs. Its a reminder that TFS is not really ready for 64-bit yet. But stay tuned that it will be, and that's when it'll roll out to tens of thousands on a single server farm and work tremendous magic in very very large enterprises that adopt it well. This article also reminds me why I was wise to shift gears recently towards supporting virtualization as the way to go for all future TFS implementations.

TFS Branching Guide

Go read http://www.codeplex.com/TFSBranchingGuideII. Nobody should use Branching on a VSTS/TFS project without reading up on the pain/lessons that others have gone through. There are 5 good PDF documents here that all by themselves would make an excellent brownbag:

- Main 2.0.pdf
- Scenarios 2.0.pdf
- Q&A 2.0.pdf
- Labs - 2.0.zip
- Drawings 2.0.zip

Wednesday, January 21, 2009

TFS Install Bug with SQL Server Files

Today I setup a server for TFS 2008. I first installed SQL Server. It put the Reporting Services data/log files in the C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\Data directory. Then I moved these files into the D:\TFSDATA\SQLDATA and D:\TFSDATA\SQLLOG directories on the D: drive and configured SQL Server to use these same directories as the default directories for data/logs. Then I installed TFS 2008 (including WSS). The installer put all the new databases’ data/log files in the C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\Data directory. Note to Microsoft: That’s what I call a bug. The workaround is simple. I just have to move those files from the folders on C: over to the default folders on D:.

Saturday, January 17, 2009

Migrate VSS to TFS

Here's some steps to follow to learn about VSS to TFS migrations.

1. I recommend watching the following Microsoft video:

<br/><a href="http://video.msn.com/video.aspx?vid=3aeb2749-e0c9-44f7-a33d-aa74205bb96d" target="_new" title="How To - Migrate from VSS to Team Foundation Source Control">Video: How To - Migrate from VSS to Team Foundation Source Control</a>

2. Make sure you have installed TFS 2008 Service Pack 1 on your TFS server. See http://blogs.msdn.com/tfs_migration/archive/2008/09/08/improved-vss-converter-available-with-tfs-sp1.aspx for information on VSSConverter improvements.

3. Read http://msdn.microsoft.com/en-us/library/ms400803(VS.80).aspx and http://msdn.microsoft.com/en-us/library/ms400685(VS.80).aspx to learn about the Analyze and Migrate commands for VSSConverter.

4. Read http://msdn.microsoft.com/en-us/library/ms181246(VS.80).aspx and do the five step process to prepare for migrations: (a) Back up your Visual SourceSafe database. (b) Identify and resolve data integrity issues in your existing database using the Visual SourceSafe Analyze tool. (c) Run the converter tool to identify potential sources of information loss. (d) Specify which Visual SourceSafe folders to migrate. (e) Create a user mapping file to map Visual SourceSafe users to Team Foundation users.

5. Read http://msdn.microsoft.com/en-us/library/ms181247(VS.80).aspx and do the two part process for migrations: (a) 7 steps to modify the settings file to create a migration file, (b) 5 steps for running the converter. There's actually a 6th step that's essential for developers using VSTS. See http://msdn.microsoft.com/en-us/library/ms253188(VS.80).aspx for instructions on migrating source control bindings.

6. Be sure to search the MSDN forums (see http://tinyurl.com/vss-tfs-help or http://social.msdn.microsoft.com/Forums/en-US/tfsversioncontrol/threads) for the latest discussion threads on VSS->TFS migrations. Also see http://search.twitter.com/search?q=VSS+TFS to check out the latest gossip about doing VSS->TFS migrations.

7. Be sure to google VSSConverter for further information on the migration tool. I did a search today that provided a few interesting links including http://www.codeplex.com/VssConverterGui.

8. If you really want total flexibility then learn about the Microsoft.TeamFoundation.VersionControl.Client namespace that opens up possibilities such as http://blogs.msdn.com/edhintz/archive/2006/02/03/524312.aspx, http://www.codeproject.com/KB/DLL/MySidekicks.aspx, http://tf4mono.googlecode.com/svn/trunk/class/Microsoft.TeamFoundation.VersionControl.Client and http://www.sashasydoruk.com/2007/02/14/tfs-howto-get-a-list-of-users-and-pending-changes.

We Share Your Pain (WSYP)

Finally Microsoft will build pain-free software ;) This is funny.

<br/><a href="http://video.msn.com/video.aspx?vid=efc3d597-55c0-4eee-9e0a-30435cd8bce9" target="_new" title="Sharing software Customer pain">Video: Sharing software Customer pain</a>

Thursday, January 8, 2009

Deleting Work Items in TFS

Many new TFS users are surprised to learn that deleting work items is not a piece of cake. Technically its possible to do. But its wisely kept from being straightforward. Making a Work Item be "deleted" means destroying history and that's not good for honesty/transparency. What's recommended is to modify the WIT template workflow to create a State called "Deleted". But if you must delete a work item there are a couple ways:

(1) Delete the work item in the database.

delete from dbo.WorkItemsLatest where ID = ?"

delete from dbo.WorkItemsAre where ID = ?"

delete from dbo.WorkItemsWere where ID = ?"

delete from dbo.WorkItemLongTexts where ID = ?"

delete from dbo.WorkItemFiles where ID =? "

Warning: You need to also possibly delete rows in the Attachments database and the work item will still be in the data warehouse.


(2) Get the latest TFS Power Tools (see
http://msdn2.microsoft.com/en-us/tfs2008/bb980963.aspx) and use the "tfpt destroywitd" command.

Warning: The work item will still be in the data warehouse as this only deletes them from the operational store.