Tfs 2010: how to set up a corporate source server? - debugging

I'm looking for guidance in setting up a corporate source server, but when I google this topic the best I can come up with is articles and walkthrough concerned with configuring VS to use microsoft's public symbol servers for use with debugging .NET assemblies.
Provided for background info, the environment I'm concerned with using is Vs2010/Tfs2010. Basically, the workflow I'm looking to facilitate is this:
1) customer reports problem with application
2) application of the appropriate version is installed on a virtual machine
3) developer repros bug attaching to process on virtual machine and leveraging source server (symbol server?) on corporate domain. This is the step I'm concerned with.
4) developer pinpoints problem fixes bug in workspace.
5) developer performs a dll swap on VM to test changes? (side topic, not sure on this)
6) normal development/source control workflows.
Any advice is welcome!
Edit: since writing this, I have stumbled on this article, which is a nice writeup on the configuration of source server for TFS 2008. Has anyone adapted this for Tfs 2010?

Here is an article about setting up a Symbol Server, for your own company. It also details how to add your own symbols and binaries to it and how to use them for debugging.
The article is from 2006, but the advice should still apply.
You should be able to follow your workflow with this setup.
Here is another article explaining the use of symbol servers.

1) customer reports problem with
application
Several ways this can be done. If your customer is external to your organization, you'll probably want a custom web front-end that ties into creating workitems via the API. Otherwise, you can use Work Item Web Access, which is included with your TFS installation.
2) application of the appropriate
version is installed on a virtual
machine
For this, you're probably looking at Visual Studio 2010 Ultimate and the Test and Lab management piece. Getting set up to use this is probably outside the scope of a SO response.
3) developer repros bug attaching to
process on virtual machine and
leveraging source server (symbol
server?) on corporate domain.
Again, Test / Lab management.
4) developer pinpoints problem fixes
bug in workspace.
TFS
5) developer performs a dll swap on VM
to test changes? (side topic, not sure
on this)
Development branch build with automated deployment. May be able to do this with Test/Lab management, or may have to do some scripting within your build. Scripting installs is relatively straightforward with TFS custom actions.
6) normal development/source control
workflows.
TFS source control and work items.
Installation and initial configuration of TFS is relatively straightforward with TFS 2010. Best practices will probably require a lot of reading and a mentor / consultant or two to get you through it.

Items 2 through 5 are normally handled manually by the developer. How they go about reproducing and debugging the error is not something any source control system can help with.
For everything else there is TFS.
With TFS you can pin builds and pull those from the build server as necessary for redeployment. You can also branch releases, make bug fixes in those branches, and roll those fixes back into trunk.

I think I have something to help you out... Here's a bunch of information about Symbol Server and Source Server support for TFS 2010 specifically wrapped up together: http://bit.ly/SymbolServerTFS
Let me know if there are any additional questions and I'll get them updated in the blog post!

Related

Sharing Code Snippets in a Team?

I'm looking for a (if possible) web service/local server download of some kind that would allow me to share code snippets with my team at work. To increase the productivity of our team it seems like the best way to do this is for everyone in the team to submit code snippets with their name. So a way to share snippets on a local network (in the team) and a way to tell who submitted which code snippet when. I've looked a bit and I've found https://snipt.net which is fine but isn't really setup for a team from the looks of it.
If you are using git for version control, and you are using version control right? :). Github is the defacto standard in my opinion for sharing and managing code. They have free and paid plans that are very affordable. The also to subversion hosting so you are covered on both fronts.

Visual Studio - Source Control

I am pretty new in source control installation and inner workings, although I already had worked with TFS, I have no clue about how to make it work from scratch.
Basically I want to have some source control in my personal VS2010 projects, so I may see the code evolution, rollback and etc. but I am a little lost about how may I set it up...as far as I can see, I have to have a Team Foundation Server running, so is it possible to install one in my PC? Is it free? Or there is a better way for doing it?
I just want some simple tips like "hey man, here are the steps you should follow" or "this is impossible, you have to have a server" or "follow this tutorial"
Thanks a lot guys!
[Disclaimer: I work on TFS and tfspreview.com]
If you are looking for ease of set up and a free offering then I would highly recommend tfspreview.com. While it is still in "preview" mode, it is certainly usable and safe. The site itself also has a great "learn" section to help you get started. The best part is that it has features available that haven't even been released in the on-premises product yet and the development team is consistently adding new features.
If you have any questions about the service, I'd be glad to answer them.
Oh, one other note, to connect to the hosted service you will need to install the VS 2010 compatibility GDR but that is free also.
GIT is a brilliant source control that has allot of easy to use functionality. In fact that have an extension for VS2010 as well. Check under the extensions menu and install the GIT extension. You can them commit and update from within VS itself. Super easy to use!
Enjoy :)

How can I set up a fun build notification via TFS 2010?

I've been trying to find a guide on how to get Team Foundation Server to turn on a lava lamp or traffic light to indicate the status of the build. I want to set up something that's visible right across the office so there's some peer pressure to encourage developers not to break the build; but I also want it to be fun.
There's a lot of examples for CruiseControl that use X.10 devices which seems like a good way to go. But I can't find anything similar for TFS. I'm sure that somebody must be doing this somewhere...?
Using X.10 has one problem in that it requires a serial port - but our TFS is completely virtualised in a data centre somewhere. Maybe there is some way to trigger the traffic light via an email?
Any advice appreciated. Thanks.
The TFS have got a nice API for getting the status of recent builds. You can use the API and design your own fun system.
Also take a look at:
TFS Build Monitor
TFS Build Light
At some point I had stumbled upon this youtube-video, where Martin Woodward presents Brian, the funky TFS-build bunny. Might be worth checking. It might also be worth checking this SO post.
The TFS API's are terrible they're a pain to do yourself. You could start with this open source project on Google Code: http://code.google.com/p/siren-of-shame/. That project is designed to work with a couple of different build servers, but everything is broken out, so you could start with the TFS 2010 project (TfsServices.csproj). Or if you don't want to do it all yourself that project is designed to work with a USB Siren that they sell (see http://www.sirenofshame.com/).

VisualSVN over distributed machines?

I'm new to SVN. I've downloaded VisualSVN SErver and VisualSVN client with TortoiseSVN.
The problem is: we are group of 4 ppl and are developing a website on ASP.Net. I want the solution file to be in a repository on a machine which can be a server (desktop). The rest are all laptops trying to gather the updated data. We are working from different locations too. I want to know if Apache Subversion can work through the Internet? How can it be configured?
We are all running Windows and Visual Studio 2008.
I'm a little confused by your question (see my comment), but if you are wondering the best way to use SVN to manage the development of your ASP.NET website, I don't see why you can't include the solution file directly in the SVN repository. When your developers want to work on SVN, they sync with the repository and bring down the entire solution (including source, SLN file, properties, etc). Then, they can work locally on their machine developing the website.
Again, your question is a bit confusing, so I am not sure how else to answer.
Update
Thank you for clarifying your question. If the laptops do not have access to a local server you can do one of two things.
If you want to use Subversion, you can setup a server that is internet-facing - AKA, it's accessible from the net. However, this does require a little bit more work as you will need to have an address for them to point to, etc. But, in essence, this is no different than accessing on a local network, it's just a different address.
Another possibility is to use a different type of source control. Git or Mercurial comes to mind. Both of these products are distributed version control systems. Basically, if you aren't connected to a network, you still "submit" your product to the control system and, then, when you can connect back to the network, you merge your changes in with the main system on the network. It works very well (though is a bit more complicated to understand than Subversion).
Hopefully that helps you. (And, if it does, you can accept this as an answer to your question, which I would appreciate.)
Subversion is designed to work effectively through Internet. Updates/commits uses delta algorithm to transmit only changed parts of tree.
Just do not forget to enable SSL encryption to prevent data sniffed.

How can one setup a version control system on a local network, without a server?

Edit: Ok so I learned that I guess I need an distributed source control, however are there any UI based ones, and do they allow you to merge with other users on the network?
This is kind of a two part question, so here it goes. I want to start developing a web application at home (with multiple developers). However, I don't have a dedicated server nor want to pay for on.
So first, I don't know which version control system to use for this case, as at work we mostly have TFS setup, so I am not to familiar with whats out there. What are the best free CVS/SVN tools out there?
Second, is it possible to somehow setup the CVS/SVN where there is no dedicated server and both clients store up to one week of the source code from the last check-in?
Also, it would be helpful if it could integrate with visual studio, again this isn't that important at all.
Problem:
There are Five users, one is a Server.
Server Connected: All Ok
Server Disconnected: No one can share.
What I am looking for:
No Server:
Users still have versioning based on version id of last check-in.
Users must check all version on network to make sure they aren't outdated based on their last version id.
If not check-in, otherwise merge/get latest.
If they are update checkin, and set current version id +1.
If your looking for a source control that DOESN'T have a central repo, you are looking for a distributed source control system such as Git or Mercurial.
The best free CVS/SVN tool is SVN.
Plus it's easy to setup an SVN server on any machine. Read the fine manual.
I assuming that at some point your developers will connect to each (perhaps on your LAN) to merge all your code. If this is the case I would highly recommend using a DVCS (Distributed Version Control System). The popular kid on the block is Git, but there are others like Mercurial. If you primarily develop on windows Mercurial seems to have better support. The main benefit of a DVCS is that they are designed for teams that are disconnected.
Hope that helps.
Rom
You should probably be interested in VisualSVN server. Its has free edition witch will be sufficient for all your needs. By the way, toroise SVN supports even repositories on any folder or a flash drive, so you have no need in a separate server. As for inrtegration with VS, Visual SVN can help you, but it is not free. Enjoy =)
For a low learning curve, it's easiest to make use of SVN since it's closes to the TFS model. But that also means a dedicated server. I would suggest VisualSVN server as it's dead simple to set up. Then you would need to expose the port it's running on externally to the other developer(s) outside of your home network. And for integrating with Visual Studio, look at AnkhSVN. Or stick with conventional clients like TortoiseSVN.
That would mean that any remote developers would be slowed down when interacting with the repository. That's where options like Git come in, but there is definitely a bit of a learning curve with it when you're used to a centralized repository. There are tools to bridge Git to SVN to get the best of both worlds. I have not tried to use them in a Windows environment, so I won't speak on how easy they are to use. I'm only just getting started in using Git for projects, mainly for situations where I cannot set up a repository elsewhere.
TeamCity for continuos integration by JetBrains is nice, easy to configure, and you don't need a "server", just a machine that's on. It integrates well with subversion as well. Which is a snap to setup with VisualSVN server. And the VisualSVN plugin for Visual Studio.
Have you considered using an online hosted solution? That way you don't have to worry about setting up a server, managing backups etc. There are services that offer this for free - one that I have tried myself is Beanstalk, which uses Subversion and has a free plan for up to three users with 100 MB of space. Useful for smaller projects.
As some of the replies indicated, distributed version control like Git or Mercurial is what you need. Maybe if you can explain how is your distributed team is working, another possible solution can be suggested.
For example, you mention about setting up work from home and have team at work which used to using TFS. Maybe if your work set up is consisting of most of your team at work and you alone working from home, then you can do something like:
Have SVN at work where all your team mates work with, addressing issue of complexity and learning curve
You can use git-svn at home, where you have local repository of the svn server at work and you still be able to work locally and make all kind of changes and branches..and merge only the changes you want to the work SVN repository.

Resources