Brian Harry talks about the documentation on how to move your TFS SharePoint installation to a different server. It's important to note that he calls this out as not being a trivial undertaking, so you'll want to be extremely cautious.
Moving your TFS SharePoint site We've gotten tons of requests since we shipped TFS v1.0 from customers who want more flexibility with the configuration of the SharePoint server that TFS uses. Some want to use a SharePoint web farm that they already have. Others want to use a pre-existing web site. And still others want to change the port # or not have a SharePoint site at all. more...
Moving your TFS SharePoint site
We've gotten tons of requests since we shipped TFS v1.0 from customers who want more flexibility with the configuration of the SharePoint server that TFS uses. Some want to use a SharePoint web farm that they already have. Others want to use a pre-existing web site. And still others want to change the port # or not have a SharePoint site at all.
more...
tags: tfs, team foundation server, sharepoint
One important aspect of Continuous Integration is getting notification that the build is broken. One common way is via a desktop notification from an application like TfsAlert that listens for events (or polls if there isn't a TFS-style event notification mechanism).
Ideally, the build or unit test break would be noticed as soon as it happens, so that the problem can be fixed before other checkins pile up. Clark Sell has come up with a checkin policy that detects that the last build failed and produces a policy failure when that happens. That makes it pretty hard to say, "But I didn't know about the break."
Stop, the build is broken!! It's late, your tired and yet somehow you got stuck fixing the build because junior engineer bob just fired off a check-in and took off. It looks like the build is now broken because junior hasn't done a get latest in a month. In the meantime 10 other people check-in and just end up compounding the problem. Unfortunately things like this happen. One day I just got so frustrated, I just wrote a custom TFS check-in policy which gets the last build status and validates a particular build type was actually passing before you check-in. more...
Stop, the build is broken!!
It's late, your tired and yet somehow you got stuck fixing the build because junior engineer bob just fired off a check-in and took off. It looks like the build is now broken because junior hasn't done a get latest in a month. In the meantime 10 other people check-in and just end up compounding the problem.
Unfortunately things like this happen. One day I just got so frustrated, I just wrote a custom TFS check-in policy which gets the last build status and validates a particular build type was actually passing before you check-in.
I'm hoping Clark will post an attachment with the solution in a zip file.
The checkin policy has to make a web service call to find out the state of the last build. The performance hit of multiple evaluation calls could be reduced by putting in a time window check or doing it asynchronously (checkin policies are expected to be really fast). However, if you combine this checkin policy with his TfsAlert project and eliminate the call to the build service by changing the checkin policy to use the last build notification from TfsAlert (assuming TfsAlert has gotten at least one build notification), you get double coverage with better performance.
I think this CI checkin policy is a pretty cool idea.
[Update 10/30/2006] Clark has posted a zip file containing the code in a VS solution, including a setup project.
[Update 3/29/2007] We've added this build checkin policy in Orcas!
tags: tfs, team foundation, tfs api, team build, version control
Clark Sell has created a home on CodePlex for a useful desktop notification tool called TfsAlert.
TfsAlert is a .Net 3.0 smart client which monitors for user selected TFS events and will display a balloon window in the Windows TaskBar Notification Area. It is built on top of WCF where you can subscribe to any TFS event you feel fit. It's initial focus is around Team Build management but will also include features around Work Item tracking.
You can get the code, but there's not a binary available yet. This project is the result of his desire to have something equivalent to the desktop notification tool used with CruiseControl.NET. Check it out -- and contribute to it!
[Update 11/2/2006] Clark has posted the first release!
tags: tfs, team foundation, tfs api, team foundation events
Join members of the Visual Studio Team System product group to discuss features available in Visual Studio Team Foundation Server, Team Editions for Architects, Developers, Database Pros, and Testers. In addition, discuss what's new in the latest Community Technology Preview (CTP).
November 8, 200610:00 - 11:00 A.M. Pacific TimeAdditional Time Zones
Add to Calendar
This was released today. Here's the announcement from the GotDotNet workspace.
ANNOUNCING THE VISUAL STUDIO TEAM SYSTEM - PROJECT SERVER CONNECTOR! We are pleased to announce general availability of the Project Server 2003 – Visual Studio Team Foundation Server 2005 Connector application. The Connector can be downloaded here: http://www.avanadeadvisor.com/TFS-ProjectServerConnector.zip. The Connector is largely based on the sample Project Server 2003 – Visual Studio Team Foundation Server Beta 2 Connector available on GotDotNet. The Connector is also available as a part of the Avanade Software Lifecycle Platform™. You can learn more about it here: http://msdn.microsoft.com/vstudio/why/avanade/default.aspx. About the connector: Microsoft® Office Project Server 2003 and Microsoft Visual Studio® 2005 Team System (VSTS) are two powerful applications that are each used in different ways for management of software development projects. Up-to-date project information requires a seamless integration between the development environment and the project management tool. Managing projects, resources, and related information for an entire enterprise requires a holistic view and integration of project management data with the software development lifecycle. The Enterprise Project Management (EPM) solution with Microsoft Office Project Server 2003 can help organizations effectively manage and coordinate people, projects, and processes. The Microsoft EPM solution provides tools for strong coordination and standardization between projects and project managers, centralized resource management, and high-level reporting on projects and resources. Through familiar tools and ease of integration with a broad range of programs in the Microsoft Office System, the EPM solution promotes broad participation for greater accuracy, accountability, and acceptance. Microsoft Visual Studio Team System (VSTS) provides a solution for software development teams that integrates designing, developing, testing, and managing a project. VSTS integrates with Microsoft Office Project Standard 2003 and Microsoft Office Project Professional 2003 for desktop use and allows project managers to plan and manage projects on a local computer. However, because there is no integration with Project Server, the project data for each team is available only in a stand-alone plan. There is no simple way to aggregate project data across multiple projects. The Connector synchronizes Project, Resource and Task data between the two systems. Project Managers, Resource Managers continue to work in the EPM environment while the development team works in the development environment, i.e. VSTS, and data seamlessly flows between the two systems. Updates to work items in VSTS are automatically applied to the corresponding assignments and tasks in Project Server and vice versa. Project Managers have complete control over the inflow of the actuals into the project plan. In addition, resource management functions for all development projects, like managing time and utilization for resources working across multiple projects, team staffing etc. can be performed in Project Server. Lastly, portfolio and program level reports can easily be generated for projects being executed in VSTS and managed in Project Server. More about the Avanade Software Lifecycle Platform (SLP) Avanade Connected Architectures® for Lifecycle or ACA® Lifecycle 2006 is an asset that implements the Avanade SLP vision. It provides a software development lifecycle environment for project teams doing custom .NET development. This includes tools, processes, and best practices to support the various roles on the team, including Test, Dev, Architect, and Project Manager. For more information on how Avanade can help you with the Avanade Software Lifecycle Platform, visit our website at www.avanade.com or contact us at to slp@avanade.com. About Avanade Avanade is the only global IT solutions consultancy 100 percent dedicated to using the Microsoft platform to help enterprises achieve profitable growth. Through proven solutions that extend Microsoft technologies, Avanade helps enterprises increase revenue, reduce costs, and reinvest in innovation to gain competitive advantage. © 2006 Microsoft Corporation. All Rights Reserved. The Microsoft name and logo are registered trademarks in the US and other countries. The Avanade name and logo are registered trademarks in the US and other countries.
ANNOUNCING THE VISUAL STUDIO TEAM SYSTEM - PROJECT SERVER CONNECTOR! We are pleased to announce general availability of the Project Server 2003 – Visual Studio Team Foundation Server 2005 Connector application. The Connector can be downloaded here: http://www.avanadeadvisor.com/TFS-ProjectServerConnector.zip. The Connector is largely based on the sample Project Server 2003 – Visual Studio Team Foundation Server Beta 2 Connector available on GotDotNet. The Connector is also available as a part of the Avanade Software Lifecycle Platform™. You can learn more about it here: http://msdn.microsoft.com/vstudio/why/avanade/default.aspx. About the connector: Microsoft® Office Project Server 2003 and Microsoft Visual Studio® 2005 Team System (VSTS) are two powerful applications that are each used in different ways for management of software development projects. Up-to-date project information requires a seamless integration between the development environment and the project management tool.
Managing projects, resources, and related information for an entire enterprise requires a holistic view and integration of project management data with the software development lifecycle. The Enterprise Project Management (EPM) solution with Microsoft Office Project Server 2003 can help organizations effectively manage and coordinate people, projects, and processes. The Microsoft EPM solution provides tools for strong coordination and standardization between projects and project managers, centralized resource management, and high-level reporting on projects and resources. Through familiar tools and ease of integration with a broad range of programs in the Microsoft Office System, the EPM solution promotes broad participation for greater accuracy, accountability, and acceptance.
Microsoft Visual Studio Team System (VSTS) provides a solution for software development teams that integrates designing, developing, testing, and managing a project. VSTS integrates with Microsoft Office Project Standard 2003 and Microsoft Office Project Professional 2003 for desktop use and allows project managers to plan and manage projects on a local computer. However, because there is no integration with Project Server, the project data for each team is available only in a stand-alone plan. There is no simple way to aggregate project data across multiple projects.
The Connector synchronizes Project, Resource and Task data between the two systems. Project Managers, Resource Managers continue to work in the EPM environment while the development team works in the development environment, i.e. VSTS, and data seamlessly flows between the two systems. Updates to work items in VSTS are automatically applied to the corresponding assignments and tasks in Project Server and vice versa. Project Managers have complete control over the inflow of the actuals into the project plan. In addition, resource management functions for all development projects, like managing time and utilization for resources working across multiple projects, team staffing etc. can be performed in Project Server. Lastly, portfolio and program level reports can easily be generated for projects being executed in VSTS and managed in Project Server.
More about the Avanade Software Lifecycle Platform (SLP) Avanade Connected Architectures® for Lifecycle or ACA® Lifecycle 2006 is an asset that implements the Avanade SLP vision. It provides a software development lifecycle environment for project teams doing custom .NET development. This includes tools, processes, and best practices to support the various roles on the team, including Test, Dev, Architect, and Project Manager.
For more information on how Avanade can help you with the Avanade Software Lifecycle Platform, visit our website at www.avanade.com or contact us at to slp@avanade.com.
About Avanade
Avanade is the only global IT solutions consultancy 100 percent dedicated to using the Microsoft platform to help enterprises achieve profitable growth. Through proven solutions that extend Microsoft technologies, Avanade helps enterprises increase revenue, reduce costs, and reinvest in innovation to gain competitive advantage.
© 2006 Microsoft Corporation. All Rights Reserved. The Microsoft name and logo are registered trademarks in the US and other countries. The Avanade name and logo are registered trademarks in the US and other countries.
tags: tfs, team foundation server
I've updated my post More continuous integration with Team Build to include tools released after that post was written.
tags: tfs, team foundation server, team build
Steven St. Jean has just posted a great document that helps users make the move to Team Foundation Server's version control. While his goal is to help VSS users, this document will help users moving from a lot of other source control systems as well, such as Star Team. He includes lots of screen shots.
I'd highly recommend this to folks who are trying to learn how to use TFS version control and are coming from a version control system like VSS that lacks pending changes, changesets, workspaces, and other concepts that TFS has. It's not going to tell you how to administer your team projects or discuss the major branching models, but that's not the purpose. It's about getting up to speed on the fundamentals of using TFS version control.
Document: From VSS to TFS - An Introduction to Team Foundation Server Version Control from a Visual SourceSafe User's Perspective Over the course of the last few months, I have been part of a team working to bring TFS Version Control and MSBuild into my organization. My duties have included everything from process definition to hands-on migration of code from VSS into our TFS repository. An additional (and unwritten) role that I have assumed is to help our developers, QA, and Infrastructure people make the mental transition from the way VSS did things to the way TFS does them. This document was born out of those discussions. I decided to write this up with screenshots from the Version Control Tree Browser project on CodePlex so that it would not have any proprietary corporate information within it. That will allow me to post this for general public consumption without losing my job. Please feel free to download and use it within your own organizations if you think it is worthwhile. I would appreciate a comment to this posting if you like it, but more importantly, if you don't. If there's anything I've missed or misrepresented, please let me know and I'll do my best to fix it. This document will grow with your feedback, so please give all you can. Thanks, - Steve Download: From VSS to TFS
Document: From VSS to TFS - An Introduction to Team Foundation Server Version Control from a Visual SourceSafe User's Perspective
Over the course of the last few months, I have been part of a team working to bring TFS Version Control and MSBuild into my organization. My duties have included everything from process definition to hands-on migration of code from VSS into our TFS repository. An additional (and unwritten) role that I have assumed is to help our developers, QA, and Infrastructure people make the mental transition from the way VSS did things to the way TFS does them. This document was born out of those discussions. I decided to write this up with screenshots from the Version Control Tree Browser project on CodePlex so that it would not have any proprietary corporate information within it. That will allow me to post this for general public consumption without losing my job.
Please feel free to download and use it within your own organizations if you think it is worthwhile. I would appreciate a comment to this posting if you like it, but more importantly, if you don't. If there's anything I've missed or misrepresented, please let me know and I'll do my best to fix it. This document will grow with your feedback, so please give all you can.
Thanks,
- Steve
Download: From VSS to TFS
He includes one of the key issues many new users hit. Here's an excerpt (the emphasis is mine).
Get Latest Command As you would expect, the purpose of the Get Latest command is to retrieve the files and versions that represent the “latest” or “tip” of the source control tree. This is just part of its function. As stated earlier, the Get commands actually synchronize your local cache to the state of the files on the server. Any out-of-date (not latest) and new files are downloaded and any deleted files are removed from your local cache. Any renamed files are also updated on your drive. When it is complete, your workstation will have an exact replica of the files on the server as they exist at the moment you asked for them. Here’s the drawback to this functionality. TFS tracks the files and version you have retrieved in your Workspace. It doesn’t read the file or version data from your local files, but rather from the Workspace’s cached data. If you remove (some or all) files from your workspace through some mechanism other than Visual Studio, TFS will not have any idea that a change has occurred. If you then invoke a Get Latest, TFS will happily tell you that all of your files are up to date and get nothing. This is usually the first “bug” that a user reports.
Get Latest Command
As you would expect, the purpose of the Get Latest command is to retrieve the files and versions that represent the “latest” or “tip” of the source control tree. This is just part of its function. As stated earlier, the Get commands actually synchronize your local cache to the state of the files on the server. Any out-of-date (not latest) and new files are downloaded and any deleted files are removed from your local cache. Any renamed files are also updated on your drive. When it is complete, your workstation will have an exact replica of the files on the server as they exist at the moment you asked for them.
Here’s the drawback to this functionality. TFS tracks the files and version you have retrieved in your Workspace. It doesn’t read the file or version data from your local files, but rather from the Workspace’s cached data. If you remove (some or all) files from your workspace through some mechanism other than Visual Studio, TFS will not have any idea that a change has occurred. If you then invoke a Get Latest, TFS will happily tell you that all of your files are up to date and get nothing. This is usually the first “bug” that a user reports.
This feature is a fundamental part of what allows TFS version control to scale, but it catches a lot of folks off guard. If you find yourself in this situation, you can use the Get Specific Version command from the popup menu and choose to get files even if the server thinks you already have them.
The second option is Force get of file versions already in workspace. This is the one that you will use to make TFS behave like VSS. When you’ve deleted files from your local cache, this option will force them to be retrieved from the server even if TFS thinks you already have the most up to date version.
About the only relevant thing I see that's not covered in the document is branching and merging. I wouldn't be surprised if he adds that in an update.
tags: tfs, team foundation, version control, source control, VSS, SourceSafe
Someone recently asked me whether there is a VPC image available for Team System and Team Foundation. There is one available to MSDN subscribers in the download area. It’s under Developer Tools -> Visual Studio 2005 -> English -> Visual Studio 2005 Team Suite Trial Edition (For Evaluation Only).
Earlier versions of this VPC have been around for a while, but it's easy to forget that it exists.
tags: tfs, team foundation server, team system, virtual pc
Steven St. Jean has written a nice post about how to assign to a particular person the work item that's created for a failed build. When he talks about the name for the Assigned To field, it must match the name that's displayed in work item tracking. WIT shows the display name for a user, rather than the shorter domain login (aka alias).
TFS - Team Build - On failed build assign workitem to a specific user Problem: I just came across a post on the MSDN TFS forums that was asking how you go about assigning the workitem created on a failed build to a specific user. I have also been asked to do this in my organization. Background: Team Build will create a new workitem in your Team Project when a build fails. The "task" is assigned to the account that ran the build. In my case, that account is a build service account. One of my Dev Leads asked how we could modify the build process to make the assignment to him whenever one of his builds failed. I didn't have time to look into it, so I pretty much blew him off. I recently had some time to look back into this subject. more...
TFS - Team Build - On failed build assign workitem to a specific user
Problem:
I just came across a post on the MSDN TFS forums that was asking how you go about assigning the workitem created on a failed build to a specific user. I have also been asked to do this in my organization.
Background:
Team Build will create a new workitem in your Team Project when a build fails. The "task" is assigned to the account that ran the build. In my case, that account is a build service account. One of my Dev Leads asked how we could modify the build process to make the assignment to him whenever one of his builds failed. I didn't have time to look into it, so I pretty much blew him off. I recently had some time to look back into this subject.
[This post contains instructions for TFS 2005/2008 and TFS 2010, which is in a separate section below]
Grant Holliday wrote a post called, TFS InstanceId, ServerMap.xml and havoc. In it he describes his experience with backing up a production server and restoring it to a test environment. The problem he ran into is that every server has a unique ID called an InstanceId, which is just a GUID. That GUID is the real name of a server, as all other names can change for any number of reasons, from renaming a server to internet vs. intranet access.
Grant references the MSDN forum post where Keith Hill ran into the same issue. By far, the common case is restoring the same server, perhaps after a hardware failure. In that case, you absolutely don't want to change the InstanceId.
However, if you want a copy of your server to experiment with or you're trying to split a server by cloning it and deleting what you don't want (Keith's scenario), the situation is a little different. We've done this a number of times internally where we take a backup the dogfood server and restore it to a pre-production test machine. In such a case, we'd change the InstanceId in the pre-production test machine so that there's no confusion with the real server (it's important that the ID in the test server be changed -- not the other way around :-).
Unfortunately, I don't believe that we have released a tool that will change the InstanceId. I've sent email to a few folks to make sure I'm not simply forgetting something. I'll post a follow up if there's anything available to change it, as that's what's needed when "splitting" a server.
For now, the best approach for creating a test server is to make sure that the machines that access the test server aren't also used to access the real server. If in testing you need to switch between the two, you'll need to delete the cache directory, as Grant noted. To do that, delete the directory %userprofile%\Local Settings\Application Data\Microsoft\Team Foundation\1.0\Cache (%userprofile% is typically c:\Documents and Settings\<your login>\). That will delete the ServerMap.xml file, which caches server name and InstanceId pairs, the work item tracking cache that's partitioned by InstanceId, and the version control cache file VersionControl.config that contains a list of workspaces per server InstanceId.
TFS 2005 and TFS 2008 instructions
The forum thread that James Manning references below shows how to change the InstanceId using the instanceinfo.exe tool. Here are Dan Kershaw's instructions from that thread.
It's really important to make sure that you change the InstanceId in the correct data tier, such as the test server or the new separate server created by restoring the databases mentioned above. You do not want to change the InstanceId when just restoring a production server that folks are using (if you do, you'll have to go clear every user's local cache directory).
I double checked with one of our devs and there is a way to "restamp" the cloned machine using a shipping command-line tool called InstanceInfo.exe (which can be found under the TFS install directory in the Tools folder on the Application Tier machine - along with the other server command line tools, like TFsAdminUtil). You should restamp the server after following the other "move" steps. After making this change it should be safe to connect a client to both the original server and the cloned server. Here are the instructions (please replace the variables with your own settings). If you are doing this with TFS 2005, you'll need to remove TfsWarehouse from the list. Rem Clear the instance info “%TFSInstallDir%\Tools\InstanceInfo.exe" stamp /setup /install /rollback /d TFSWorkItemTracking,TFSBuild,TFSVersionControl,TFSIntegration,TfsWarehouse /s <<your new data tier>>
I double checked with one of our devs and there is a way to "restamp" the cloned machine using a shipping command-line tool called InstanceInfo.exe (which can be found under the TFS install directory in the Tools folder on the Application Tier machine - along with the other server command line tools, like TFsAdminUtil). You should restamp the server after following the other "move" steps.
After making this change it should be safe to connect a client to both the original server and the cloned server. Here are the instructions (please replace the variables with your own settings).
If you are doing this with TFS 2005, you'll need to remove TfsWarehouse from the list.
Rem Clear the instance info
“%TFSInstallDir%\Tools\InstanceInfo.exe" stamp /setup /install /rollback /d TFSWorkItemTracking,TFSBuild,TFSVersionControl,TFSIntegration,TfsWarehouse /s <<your new data tier>>
Rem Re-stamp it with a new instance id "% TFSInstallDir %\Tools\InstanceInfo.exe" stamp /d TFSWorkItemTracking,TFSBuild,TFSVersionControl,TFSIntegration,TfsWarehouse /s <<your new data tier>>
Rem Re-stamp it with a new instance id
"% TFSInstallDir %\Tools\InstanceInfo.exe" stamp /d TFSWorkItemTracking,TFSBuild,TFSVersionControl,TFSIntegration,TfsWarehouse /s <<your new data tier>>
TFS 2010 instructions
In TFS 2010 the concept is the same, only more of it. The IDs in the configuration database and each of the collection databases must be changed. Fortunately, a single command will handle all of that: changeServerID. Here are the steps that you need to follow.
SharePoint and Reporting Services configuration data remains in tact, so you will need to go into the administration console and disable them. Once you open the Team Foundation Server Administration Console, you'll see a node for each in the tree.
[UPDATE 1/21/09] I've added the warehouse DB to the list. Thanks for the comment, Wendell!
[UPDATE 2/8/2009] If you have used build prior to creating a clone of the server, watch out for the TF214007: No build was found with the URI problem Mac Noland ran into.
[UPDATE 7/17/2009] I've added a note about dealing with TFS 2005 (remove TfsWarehouse from the command line). Thanks for the comment, Lim!
[UPDATE 1/22/2010] I've now added instructions for TFS 2010.
Etienne Tremblay, a Microsoft MVP, put up a nice Visio diagram showing the ports used by Team Build and the direction that must be opened for each. Check it out!
Team build the ins and outs So we learn stuff everyday... well I hope. Here is a bit of insight on Team Build, specifically the ports that need to be opened for it to work properly in a multi-machine scenario. more...
Team build the ins and outs
So we learn stuff everyday... well I hope. Here is a bit of insight on Team Build, specifically the ports that need to be opened for it to work properly in a multi-machine scenario.
Neno Loje, a Microsoft MVP, posted a nice list of knowledge base articles for Team Foundation. Here's the list (copied from his post).
So I thought I'd try searching the KB to see how easy it is to get this list. Well, I don't like the search interface. If I search by product for Visual Studio Team Foundation Server (the only product name choice), I get the following results (click here to run the query).
Needless to say, that's not a great result.
If instead you search for the phrase "team foundation" you get all sorts of results (79 total, currently), some of which don't seem to be directly related to Team Foundation. Click here to run that query.
Neno's list is much better.
Brian Keller has put up a video on Channel 9 that has Erin Geaney, a developer on the TFS MS Office integration team, demonstrating the Team Foundation Power Toys that we updated recently. The original release of the power toys was nearly a year ago and was the work of an intern who worked for me, Philip Kelley (he also wrote a paper on how to create shadow folders). The latest power toys release has Visual Studio add-ins, VSS-style project differencing (also written by a summer intern, Taylor Lafrinere), work item tracking commands in tfpt.exe, and more.
Naren Datha<, a dev who works on the WIT client, has written a post on how to use the new work item tracking custom controls that are introduced in SP1 beta (he previously mentioned some ideas for custom controls). He provides an overview, details on how to create custom controls, some hints for troubleshooting, and a sample in a zip file attached to the post. Check it out!
How to use Custom Controls in Work Item Form
tags: tfs, team foundation server, tfs api, work item tracking