As part of their "Early Access Program," the folks at JetBrains have posted a build of TeamCity that contains support for TFS version control. They are looking for feedback, so give it a try and let 'em know what you think.
TeamCity EAP (Latest) Current build: 3654 released Jan 30, 2007 | Download | Changes This version of TeamCity will contain many additional features comparing with TeamCity 1.2 as well as improvements of existing functionality.To name a few: View file changes on the Web Enhanced notification policies with more customization Eclipse integration ClearCase VCS support Checkout on build agent MS Team Foundation Server VCS support Visual Studio add-on - remote run & delayed commit for MS TFS Agent details information page with possibility to enable/disable agents by administrator Dependent builds triggering Dependent builds artifacts exchange Better and uniform UI to configure Inspections runner and IPR runner on the web Search for code duplicates on the server-side and view results in IDEA Improved IntelliJ IDEA plugin View code duplicates on the Web Possibility to clone project Customizable build log filtering Improved Maven 2 support Ant 1.7 support JUnit 4 support
TeamCity EAP (Latest)
This version of TeamCity will contain many additional features comparing with TeamCity 1.2 as well as improvements of existing functionality.To name a few:
tags: tfs, team foundation server, teamcity, jetbrains
Jeff Atwood has written a post on how to extend the Vista grace period to 120 days. It turns out that you can extend it three times for 30 days each, giving you up to 120 days when you count the original 30-day grace period. It seems like a great way to try out Vista Ultimate to see if it's worth the extra money.
Extending The Windows Vista Grace Period to 120 Days If you're on the fence about the impending release of Windows Vista, I recommend trying before you buy. Every Vista DVD includes the ability to install any edition of Vista without a product key. When you install without a product key, you get an automatic 30 day evaluation period.* This probably isn't news to anyone. What may be news to you, however, is that you can easily extend the 30-day Windows Vista grace period to 120 days. No hacks required. This is an official, supported operation directly from Microsoft. To extend the grace period another 30 days, simply start a command prompt as Administrator, and issue this command: slmgr -rearm Reboot for the change to take effect, and voila, you have 30 more days. You can only extend three times, so the total grace period for a Vista evaluation is 120 days. You do, however, need to be careful that you've installed the correct edition of Vista. At the end of that 120 day grace period, you'll have to pony up a license fee for the edition of Vista you've installed. more...
Extending The Windows Vista Grace Period to 120 Days
If you're on the fence about the impending release of Windows Vista, I recommend trying before you buy. Every Vista DVD includes the ability to install any edition of Vista without a product key. When you install without a product key, you get an automatic 30 day evaluation period.* This probably isn't news to anyone.
What may be news to you, however, is that you can easily extend the 30-day Windows Vista grace period to 120 days. No hacks required. This is an official, supported operation directly from Microsoft.
To extend the grace period another 30 days, simply start a command prompt as Administrator, and issue this command:
slmgr -rearm
Reboot for the change to take effect, and voila, you have 30 more days. You can only extend three times, so the total grace period for a Vista evaluation is 120 days. You do, however, need to be careful that you've installed the correct edition of Vista. At the end of that 120 day grace period, you'll have to pony up a license fee for the edition of Vista you've installed.
more...
tags: windows vista, slmgr
I was reading through some customer feedback about VSTS and TFS. There were a lot of positive comments in there. I was looking for the negatives, though, because I want to know where we're missing the mark (perhaps by miles). This is one that really resonated with me.
"The Build Machine aspect of Team Foundation Server is way behind the combination of Nant/CruiseControl.Net"
It's my sincere hope that what we are doing with Team Foundation Build in Orcas will dramatically change that perception. The following posts cover many of our new features.
As a result, I'm looking forward to what folks have to say when the next CTP comes out (February/March). The January CTP did not have any of the new Orcas TFS features.
As always, please let us know what you need to make Team Build truly useful. I'll warn you up front that the time for big features has passed for Orcas. However, smaller features may be tackled via DCRs (design change requests) for Orcas, and now is a great time to put in suggestions for future releases. By the way, waiting until a version ships before giving feedback on what you'd like to see in the next version is too late. Major feature planning for the next version starts before the current version ships so that the organization is ready to start implementing it after wrapping up the current version (Orcas development started almost immediately after Whidbey shipped, with only MQ in between).
Another possibility for smaller, client-side features is the TFS power tools. The downside here is that these obviously don't ship with the product and do not get official support. One possible power tool would be a tray notification applet that shows whether the last build was good or bad, much like the one that's popular with CruiseControl users (CCTray). We didn't have the time to do it as part of the feature crew that developed Continuous Integration and the architectural enhancements. Is the tray applet something that would be a good power tool? Or does it need to be "in the box" and considered for a DCR?
What problems do you need Team Build to solve for you to be successful?
tags: team foundation, team build, orcas, nant, cruisecontrol.net
Via Richard Hundhausen, I learned that the folks at FinalBuilder posted an article on their web site about how to get FinalBuilder working with Team Build via FinalBuilder's custom MSBuild task. If you use FinalBuilder, you may want to check that out.
tags: tfs, team foundation server, team build, msbuild, final builder
Shortly after I wrote about Remote Desktop Connection 6.0 client, Blake Handler sent me email about a CodePlex project called Terminals. Terminals is a neat application that hosts RDC sessions in tabs.
One of the options in the Terminals connection dialog is whether to connect to the console, which becomes important when connecting to Windows 2003 Servers. Unless I missed it, the RDC 6.0 GUI still doesn't have this feature, and you still have to use mstsc /console.
Terminals was created by Dudu Shmaya and Eyal Post. If Dudu's name sounds familiar, it's because he also wrote the TFSBuildManager that I recently wrote about. I noticed it at the time and added to the list of things to check out, but Blake's email motivated me to go download and try it. I like it!
You can find screenshots of Terminals in Eyal's post, Windows Terminal Services Client. Check it out!
tags: remote desktop connection, rdp, terminal services, windows server
Last month, the Remote Desktop Connection 6.0 client was released. It has some nice new features in it, which I've listed below. Being able to log into a machine on a private network without having to use a VPN sounds really cool (TS Gateway servers), but I haven't been able to try that out. I found an internal page where folks could sign up for access, but unfortunately the list was full. Being able to span multiple monitors (mstsc /span) is really nice too.
The change that I like the most right now, though, is a really simple one. It now uses the same credentials dialog that you see in IE and elsewhere in Windows that lets you save and managed your credentials. It's a small change, but I've found it really handy.
Remote Desktop Connection 6.0 client Monitor spanning Remote Desktop Connection supports high-resolution displays that can be spanned across multiple monitors. However, the total resolution on all monitors must be under 4096 x 2048 pixels. The monitors must have the same resolution. Additionally, the monitors must be aligned side-by-side. To have the desktop of the remote computer span multiple monitors, type Mstsc /span at a command prompt. Visual improvementsRemote Desktop Connection now supports 32-bit color and font smoothing. TS Gateway servers A TS Gateway server is a type of gateway that enables authorized users to connect to remote computers on a corporate network. These authorized users can connect from any computer by using an Internet connection. TS Gateway uses the Remote Desktop Protocol (RDP) together with the HTTPS protocol to help create a more secure, encrypted connection. However, earlier versions of Remote Desktop Connection cannot connect to remote computers across firewalls and network address translators. This behavior occurs because port 3389 is typically blocked to enhance network security. Port 3389 is the port that is used for Remote Desktop connections. However, a TS Gateway server uses port 443. Port 443 transmits data through a Secure Sockets Layer (SSL) tunnel. The advantages of a TS Gateway server are as follows: It enables Remote Desktop connections to a corporate network from the Internet without setting up a virtual private network (VPN) connection. It enables connections to remote computers across firewalls. It helps you share a network connection with other programs that are running on the computer. This enables you to use the Internet service provider (ISP) connection instead of the corporate network to send and receive data over the remote connection. Network Level AuthenticationNetwork Level Authentication is a new authentication method that finishes user authentication before you establish a full Remote Desktop Connection and the logon screen appears. The advantages of Network Level Authentication are as follows: It requires fewer remote computer resources at first because remote computer uses a limited number of resources before it authenticates the user. In earlier versions, the remote computer starts a full Remote Desktop Connection. It can help provide better security by reducing the risk of denial of service attacks (a denial of service attack attempts to limit or prevent access to the Internet). It uses remote computer authentication. This helps protect users from connecting to remote computers that are set up for malicious purposes. Server authentication In Remote Desktop Connection, server authentication verifies that you are connecting to the correct remote computer or server. This security measure helps prevent you from connecting to a different computer or server than you intend to connect to. This also prevents you from unintentionally exposing confidential information. Resource redirection The Remote Desktop Connection 6.0 client update helps you redirect Plug and Play devices that support redirection. Terminal Services Remote Programs Remote Programs are a feature of Windows Server Terminal Services that lets client computers connect to a remote computer and use programs that are installed on it. For example, a workplace may have a remote computer to which employees can connect and run Microsoft Word. An administrator must first publish the programs for end-users to access them. The experience is the same as running a program that is installed on the computer.
Remote Desktop Connection 6.0 client
Monitor spanning
Remote Desktop Connection supports high-resolution displays that can be spanned across multiple monitors. However, the total resolution on all monitors must be under 4096 x 2048 pixels. The monitors must have the same resolution. Additionally, the monitors must be aligned side-by-side.
To have the desktop of the remote computer span multiple monitors, type Mstsc /span at a command prompt.
Visual improvements
TS Gateway servers
A TS Gateway server is a type of gateway that enables authorized users to connect to remote computers on a corporate network. These authorized users can connect from any computer by using an Internet connection. TS Gateway uses the Remote Desktop Protocol (RDP) together with the HTTPS protocol to help create a more secure, encrypted connection.
However, earlier versions of Remote Desktop Connection cannot connect to remote computers across firewalls and network address translators. This behavior occurs because port 3389 is typically blocked to enhance network security. Port 3389 is the port that is used for Remote Desktop connections. However, a TS Gateway server uses port 443. Port 443 transmits data through a Secure Sockets Layer (SSL) tunnel.
The advantages of a TS Gateway server are as follows:
Server authentication
In Remote Desktop Connection, server authentication verifies that you are connecting to the correct remote computer or server. This security measure helps prevent you from connecting to a different computer or server than you intend to connect to. This also prevents you from unintentionally exposing confidential information.
Resource redirection
The Remote Desktop Connection 6.0 client update helps you redirect Plug and Play devices that support redirection.
Terminal Services Remote Programs
Remote Programs are a feature of Windows Server Terminal Services that lets client computers connect to a remote computer and use programs that are installed on it. For example, a workplace may have a remote computer to which employees can connect and run Microsoft Word. An administrator must first publish the programs for end-users to access them. The experience is the same as running a program that is installed on the computer.
tags: remote desktop connection client, rdp, terminal services, windows
Brian posted these answers in a comment to a question on his January dogfood statistics post. These may be of interest to folks out there, particularly those running larger-sized Team Foundation Server installations.
1) What is the current size of our dogfood database?
2) Backups/Restores - With large databases, are there any issues with backups and/or restores? How often do we run backups? How long do they take typically?
Full Databases backups (using LiteSpeed) – Every night Transactional Logs backups (using LiteSpeed) – Every 15 minutes For our biggest instance (DevDiv, total size a little bit over 1TB) – total full backup time for all databases is around 10-12 hours.
Full Databases backups (using LiteSpeed) – Every night
Transactional Logs backups (using LiteSpeed) – Every 15 minutes
For our biggest instance (DevDiv, total size a little bit over 1TB) – total full backup time for all databases is around 10-12 hours.
3) Integrity Checks - Do we run periodic "integrity checks" on the database and if so, how long do they take?
dbcc checkdb for all databases – every weekend (total time 3-5 hours for all databases)
4) Index Regeneration - Do we run periodic "index regeneration" on the database and if so, how long does it take?
Index defragmentation – every weekend (total time 2-3 hours for all databases) Full index rebuilds have gotten very long and can't be done online so we are looking at partitioning some of our largest tables to make that infrequent maintainence operation less disruptive.
Index defragmentation – every weekend (total time 2-3 hours for all databases)
Full index rebuilds have gotten very long and can't be done online so we are looking at partitioning some of our largest tables to make that infrequent maintainence operation less disruptive.
tags: tfs, team foundation server, database
After you learn five things about Aaron that you didn't know, he'll show you how to do an incremental get without necessarily doing an incremental build.
Doing an Incremental Get in Team Build In Team Build v1.0, it is not possible, without some trickeration, to do an incremental get without also doing an incremental build. (The process for doing both is documented here, and consists of setting the SkipClean property to true, the SkipInitializeWorkspace property to true, and the ForceGet property to false) The short answer for why this is the case is that the CoreClean target wipes out the entire source code directory in order to delete the intermediate binaries...
Doing an Incremental Get in Team Build
In Team Build v1.0, it is not possible, without some trickeration, to do an incremental get without also doing an incremental build. (The process for doing both is documented here, and consists of setting the SkipClean property to true, the SkipInitializeWorkspace property to true, and the ForceGet property to false)
The short answer for why this is the case is that the CoreClean target wipes out the entire source code directory in order to delete the intermediate binaries...
Next he shows you how to get a list of files that changed since the last build.
Getting the Modified Files for a Team Build Build I've had several people inquire recently about how to figure out which files have changed since the previous Team Build build... In V1 there is no straightforward way to do this, unfortunately, though we plan to remedy that in the next version of Team Build. For now, here is one approach - the basic idea is to do a preview get prior to doing the actual get. There are issues with this, of course - you might be interested in the list of changesets rather than the list of files, for example; additional modifications might be made to source control between the preview and the actual get; you might want to get one of these lists without having to do an incremental get; and so forth. To a first approximation, however, this should do the trick.
Getting the Modified Files for a Team Build Build
I've had several people inquire recently about how to figure out which files have changed since the previous Team Build build... In V1 there is no straightforward way to do this, unfortunately, though we plan to remedy that in the next version of Team Build. For now, here is one approach - the basic idea is to do a preview get prior to doing the actual get. There are issues with this, of course - you might be interested in the list of changesets rather than the list of files, for example; additional modifications might be made to source control between the preview and the actual get; you might want to get one of these lists without having to do an incremental get; and so forth. To a first approximation, however, this should do the trick.
As Aaron states, we're working to make these and other things simpler to accomplish in Orcas. These are the kinds of things you won't find on the product roadmap or in a bulleted list of product features, but they help make folks more productive. We take the feedback from the build forum to heart and try to address as many of these things as possible. Whenever you hit something that's not possible, painful, or just simply annoying, post it in the forum. We'll do our best to either make the problem disappear or at least substantially improve it.
tags: tfs, team foundation, team build, orcas, msdn forums
Lorenzo Barbieri wrote about a tool on CodePlex called TFSBuildManager. I didn't know about this one. It's a tool written by Dudu Shmaya. The CodePlex project page has the following about the project.
TFSBuildManager TFSBuildManager is a utility to manage Team Foundation build types in an environment other than Visual Studio. Main Features Start, stop a build Change build/s quality Delete, backup build/s Edit build type News Release 1 Production is now available Information Screenshots Planned Features
TFSBuildManager
TFSBuildManager is a utility to manage Team Foundation build types in an environment other than Visual Studio.
Looking at the screenshots, it looks quite useful. There is a download from the releases page.
Dudu's blog has quite a few posts about using the Team Build web service. Here are links to some of them.
tags: tfs, team foundation, team build, codeplex, tfs api
John Robbins has written a post called Working Offline with TFS. In it, he describes his approach to using Visual Studio when not connected to the Team Foundation Server. As many of you know, the server information is stored in the .sln file, and VS tries to connect to the server whenever you open a solution that contains the server information in its source control bindings. To make things go more quickly, he wrote a couple of custom MSBuild tasks to automate the process of adding and removing the bindings the solution files. While you don't have to remove the bindings while you're offline, it certainly makes opening the solution quicker when you know you can't get to the server.
For synchronizing with the server when he's connected again, he wrote an MSBuild task that wraps tfpt to use the online command. The online command will find and pend edits for any files in version control that are writable and don't already have a pending edit. Optionally, it will find additions and deletions (and there more options still -- run tfpt online /help for more information).
He pointed out a bug in tfpt.exe such that there's not way to get the online command's dialog when standard out is redirected, which was also a bug in tf.exe. It's correct that the default is no GUI or other prompting when standard out is redirected, but we had intended to allow a way to get the GUI in that case. I fixed the bug in tfpt.exe to add the /prompt switch. We had already fixed the Orcas tf.exe a while back. So, the problem with not getting the online command's dialog as he describes will be fixed when the updated tfpt.exe is released, so long as you add /prompt (I don't know when, but it's not too far off in the future).
[UPDATE 01/11/07] I've changed the last paragraph to clarify the bug I described.
tags: tfs, team foundation, tfpt, msbuild, offline, version control
Martin Woodward tagged me with that blogging game that's going around where you post five things that people don't generally know about you and then tag five more people. Okay, I have to admit it seems kind of fun, so I'll do my part to keep it going.
I'm tagging Jeff Beehler, Aaron Hallberg, Mario Rodriguez, Jeff Atwood, and Clark Sell.
Chandru, a developer on the TFS version control server, has written the first post on the Version Control Server Team blog. I helped Craig Harry, development lead for TFS version control platform, set this blog up a while back, so I'm excited to see the first post. Craig's team owns both the version control server and the client object model, which moved to his team in the re-org that occurred last spring.
Orcas Workspace Mapping Improvements I thought I would give you an overview of the workspace mapping improvements which Brian Harry mentioned in his TFS roadmap post. Please do keep in mind that any of this might change / be removed before Orcas ships - so there are no guarantees. History: In DevDiv our branches are enormous , a developer typically maps only portions of the tree they need to work on. Upon analysis we determined an average workspace had 100+ mappings. To reduce the performance and maintenance overhead of a large number of mappings we are introducing the following features. 1. Mappings under Cloaks2. One Level Mappings more...
Orcas Workspace Mapping Improvements
I thought I would give you an overview of the workspace mapping improvements which Brian Harry mentioned in his TFS roadmap post. Please do keep in mind that any of this might change / be removed before Orcas ships - so there are no guarantees.
History: In DevDiv our branches are enormous , a developer typically maps only portions of the tree they need to work on. Upon analysis we determined an average workspace had 100+ mappings. To reduce the performance and maintenance overhead of a large number of mappings we are introducing the following features.
1. Mappings under Cloaks2. One Level Mappings
Hopefully, this is the first of many good posts to come! If you have things you want to know about, leave a comment on their blog or contact them.
tags: tfs, team foundation, version control
Back in early December, I wrote the post, More on the Orcas features for Team Build, that described many of the new features that we are adding for Orcas, elaborating on what Brian Harry had written in his TFS Roadmap post. I'm very happy to say that later in December, we finished the implementation of those features, and they'll be in the next CTP.
A few days ago, we published the specification for Continuous Integration and the other features that we have added to Team Build. It's available in Team Foundation Server section of the Feature Specifications for Visual Studio and .NET Framework "Orcas" page. Here's the direct link: Continuous Integration.
Before you think, "Wow, a spec, how dull," take a look at it. It's fewer than 20 pages of Visio wireframes of the GUI. There's no dense text to wade through. Please check it out and post your comments, either here or on that site. Unfortunately, the TFS Specification Feedback link takes you to a page where the two choices for feedback are Get Latest on Checkout and Annotate. Hopefully, that'll be fixed next week.
tags: tfs, team foundation, team build, continuous integration, orcas
If you use the AssemblyInfoTask to stamp the version numbers for your assemblies that you build with MSBuild as part of your Team Build process, you may run into the "Y2K7" problem. The version number is stored as a 16-bit (yes, 16 not 32) unsigned integer. With the format YMMDD, January 1, 2007 becomes 70101, which is 70,101 and doesn't fit in a 16-bit integer. Internally, the version numbering has been reset to have a smaller number for the year. For the last part of 2006, builds were 1MMDD. Starting with 1/1/07, they are 2MMDD. Neil Enns discusses the issue in the MSBuild Team Blog in a post titled, Fixing invalid version number problems with the AssemblyInfoTask. He provides more background in the follow up post, Why are build numbers limited to 65535?
tags: msbuild, team build, tfs, team foundation, assemblyinfotask
Way back near the beginning of development of TFS version control, which was called Hatteras back then, we sent email to the team manually when we checked in. So I would typically write my checkin comment in Outlook, which was using Microsoft Word as the editor, and then paste it into the checkin dialog. My comment was a bulleted list of the changes that I made. I would start with an asterisk, and Word would convert it to a bullet. Later, viewing the changeset details on the command line would produce beeps. I knew that the Unicode bullet character was being converted to a BEL (0x07) character, but I didn't know how the conversion worked.
Raymond Chen's recent post, How a bullet turns into a beep, provides the details on how the conversion happens, changing the Unicode bullet into a beep.
tags: tfs, team foundation, unicode
Rob Caron wrote about the post Automatically raise bugs from IE on the Microsoft Developer Tools UK Sales Team blog. Here's the text of the post, and there's a screen shot on the GotDotNet page.
Have you ever been in a position where someone raises a bug on a web page that you have been working on, but doesn't supply enough information to allow you to reproduce the problem? Ok, I didn't think it was just me :-) To try and help this, I've written an addin for IE to allow users to easily raise a complete bug report. When the user indicates that there is a problem on the page, the addin will create a new Team System Work Item and populate it with the following information: A screenshot attached to the work item. HTML source of the page and any frames and IFrames attached to the work item. Any style sheets referenced by the page attached to the work item Any script files referenced by the page attached to the work item Details about the user's machine and browser (OS version, browser version, screen size, ...) Hopefully this should include a significant amount of the information you'll need to identify the problem. For more information, some screenshots and the download, please have a look at the project space on gotdotnet.
Have you ever been in a position where someone raises a bug on a web page that you have been working on, but doesn't supply enough information to allow you to reproduce the problem? Ok, I didn't think it was just me :-)
To try and help this, I've written an addin for IE to allow users to easily raise a complete bug report. When the user indicates that there is a problem on the page, the addin will create a new Team System Work Item and populate it with the following information:
Hopefully this should include a significant amount of the information you'll need to identify the problem.
For more information, some screenshots and the download, please have a look at the project space on gotdotnet.
Looking at the screen shot, it looks really useful. One enhancement that would be really nice would be a zip file attachment containing all of the files other than the screenshot. Given how WIT attachments work in v1, it would be more convenient, especially for a large number of files.
By the way, you can use the workitem command in tfpt, the Team Foundation Power Toy (soon to be Tool) command line, to download all of the attachments for a work item.
tags: tfs, team foundation server, work item tracking