I'm evaluating tools that helps to manage branch for my team. We are working on a commercial product, so the tools must be chosen carefully to handle multiple releases, potential hotfix on older versions, etc.
Basically, what I want is to reach what git-flow allows.
But because we are already using TFS (2012 today, but 2013 upgrade in the pipe) with Visual Studio 2012 (but we didn't use branches before), I'd like to "stick" to a full MS product line.
Then I was looking for guidance, and I found this software. I've seen the short webcast Quick tour of the TFS Branch Tool VS Extension on channel9 that demonstrate the tool. But it only covers the creation of the initial structure. What about day to day work?
Let's say I've finished working on a feature or a hotfix. How can I guide the developer to merge to the correct branch? How can I have a easy to read view of the work?
The tools said "automate branching task in the ALM Rangers branching guidance"... but I don't see any menu that can do that. The only thing I see is the "Create initial structure" menu.
Did I miss something? Is there any other resource that can help me?
I like GIT... I believe in its strong branching features. But I feel the git experience in VS 2012 is terrible... so I'd like to give a chance to TFS.
As my team (including me) is not mature in managing branching, I must keep things as easy as possible, so any advise is welcome.
In TFS 2013 you have the choice of 2 types of source control repositories: traditional TFS (TFVC) or Git. You can use a fully-featured Git repository hosted in TFS that gives you all the other goodness that comes with TFS. You can use any git client tools that you prefer to connect and work with the TFS-Git repository (including Microsofts new git tooling inside VS - but that's still a work in progress). Then you can do any git workflow you like, such as git-flow.
More info on Git in TFS here: http://blogs.msdn.com/b/bharry/archive/2013/01/30/git-init-vs.aspx
Alternatively, if you stick with TFSVC, you need to educate yourself on branching workflows that are supported (TFVC is more restrictive than Git on what workflows are supported, but you can definitely achieve something like git-flow). The best source of knowledge for this is probably the ALM Rangers Branching Guidance: http://vsarbranchingguide.codeplex.com/
Note: The tool you linked only helps with creating the initial branch structure. The day to day work is done using the out of the box source control and branch/merge tooling in Visual Studio.
Related
My company has used a cloud TFS host for many years. Now the host has disappeared from the internet and a lot of code and all history has been lost. There are people working on it so it might be solved but I anyway need to fairly quickly set up new source code handling in Visual Studio Online and need some hints on how to do it.
The current solution was set up long before I started and for various reasons I am currently the only developer. It might change in the future but there will never be more than one developer for each visual studio solution.
I work with many small customer specific projects in Visual Studio (windows application, windows service, WebAPI, SSRS, SQL, Entity framework). The average size of a project is maybe 20 hours from start coding to deployment (there are a few larger projects as well). New features and bug fixes are sometimes added after deployment (can be years later) but that is usually 2-6 hour projects.
The current process has one TFS project per customer and each contain at most a handful Visual Studio solutions. There are no dependencies between the solutions and common code is handled with NuGet.
We had around 250 projects in the cloud and even if I so far only recovered 50 of these, the ones I had locally, we will sooner or later end up with similar numbers. Total size was in the region of 30GB (a lot comes from TFS by default checking in the nuget packages folder)
For most projects there is no need for workitems, kanban, reporting and other ALM features. Only developers will ever use visual studio online. I would like to work with a branch/pull-request/merge process. Coming from Git/Mercurial I have never felt comfortable with TFS.
So my questions are now:
What is a good way to structure the projects?
Single VSTS-project for everything
A VSTS-project for each customer (as today)
A VSTS-project per Visual Studio solution
What is a good way to structure the repositories?
One repository for everything
One repository per customer
One repository per Visual Studio solution
How does Visual Studio and the online portal work with hundreds of projects/repositories where 90% are not active. I usually have 3-5 instances of Visual Studio running with different solutions at any time.
I have read a lot of recommendations but they all seem to deal with long-lived projects and/or team of developers.
My main concerns are:
How much work it is to add a new customer or visual studio solution (happens weekly)
Getting started time. Sometimes an external developer is involved. It is not common but when it happens I don't want them to spend a lot of time on clone/pull (security is not an issue)
Standard. I want the process to follow standard/best practice as much as possible to make it easier to document for other developers. e.g. not encoding information in names of projects or forcing a folder structure.
I will suggest:
Create projects from each customer. Such as you can create projects with customer name like WebAPI, SSRS, SQL etc.
Since a VSTS project belongs to a certain customer related. So all the repositories in the team project should related to the customer. The structure for the repositories can be: different repositories for each case/solution of a customer.
There are only two kinds of version control system hosted on VSTS/TFS: Git and TFVC. And it seems you are familiar with Git and Mercurial, so you can use Git VCS for your projects.
Git repositories hosted on VSTS works as other remote repositories like github, bitbucket etc. it’s bare repo without working directories. So the solutions are not stored but the checksum between two versions and it stored with sha-1 value (40 char). And for most time, you work in local repo (no connect/communication with remote repo). Only when you clone/pull/push, your local git repo will communicate with remote repo.
Project(s) structure: Single project for everything.
Repositories structure: One repository per VS solution
Regarding VS work with these projects/solutions, you can close a solution, then open another solution (You can’t open multiple solutions at the same time in the same instance of VS), you also can just open the file in VS and edit. Regarding commit and push, you can use Git command (e.g. git commit, push)
You need to add them to VSTS when developers are involved, and they need to clone/pull source code from remote.
I am looking for alternatives to NWDI (Stands for Netweaver Development Infrastructure by SAP) source control system for developing
Java EE Applications. Primarily because:
NWDI is not DVCS : So developers have to be online to do just about anything.
User Interface: Its very difficult to use and train developers on using this system.
Tracking Changes/Generating Reports: Very limited support for this.
For example I cant find out what projects (Files within the project) have been changed in the last 2 weeks.
Code Review: You can do code reviews, it has a good diff utility. But thats about it, there is no way to attach code reviews to a change request.
Branching and Merging are extremely painful.
However the current system has a few handy features:
Automatic Builds: No need to write any build scripts , everything is built in. So when a new repository (we call it track)
is created it automatically configures the build based on the type of components (Supported by the repository) selected on creation.
A Central Build is triggered whenever a developer commits (Activates the changes). Irrespective of the status of the build the changes are now inflicted on the entire team.
Automatic push to Central Test Server: While creating a repository you can define all the servers (Central test, QA, Prod). A developer can push his changes by a
click of a button to Central Test Server. Again everything is built in and there is no need to extend any hooks like you have to do in Mercurial.
I was exploring Mercurial, Kiln and but couldn't find anything helpful. For mercurial Hooks can be used to do the same but I guess some customization effort is required.
Are there any cool DVCS like Mercurial which does the above 2 as well or is it something that I have to customize to make it work?
I don't know of a DVCS proposing everything build-in.
The only alternative (not DVCS, but with some of DVCS characteristics in it) is Rational Team Concert or RTC (free for up to 10 developers).
With a DVCS alone, the usual setup for CI and reviews is:
Git
Gerrit (review)
Jenkins (scheduler)
See "Using Gerrit Git Review with Jenkins CI Server"
Looks like there nothing useful out of the box. I am going to try out Kiln as it appears to be easy to use and try customizing it.
We're assessing whether to buy either the Standard or Professional version of Araxis merge. The Standard version has no auto merge, but this won't matter if TFS does that for us. But does it??
TFS does support auto-merge and, unfortunately, there's no extensibility point that would let you plug-in Araxis' auto-merge functionality (which, to be honest, is probably better than the auto-merge we shipped in TFS 2010). We do have improvements to our auto-merge coming in TFS 11.
I am looking into merging our source control provider and bug tracking software to Team Foundation Server 2008. We currently have SourceGear Vault as our source control provider and OnTime for our bug tracking software. Both currently meet our needs however as we are growing it seems that TFS is a more likely candidate for our company. It would have been nice if Microsoft had developed a merge tool so that we could get all of our source code into this new system including all the history.
As of now I can get all of our bug tracking items into the system through a csv import and I can also get the latest version of the source code into the system.
Is there an easy way or a toolkit that can be used in merging all of our source code with history from SourceGear Vault to TFS 2008?
Have a look at the TFS Migration and Syncronization toolkit. This is an open source project developed by Microsoft for people doing this type of thing. That said I usually recommend keeping the old system around for the history rather than importing as people usually have a better experience that way rather than going through the pain of import.
I'm intrigued by the idea in TeamCity of pre-testing commits (i.e. verifying they don't break the build before allowing check-in to occur) and I'm wondering if there is any way to implement this in TFS. It looks like TeamCity can interface to TFS version control as a backing store but of course I'd prefer a free solution.
In TFS there is the notion of check-in policies where you can execute code on the client and that can validate check-ins before allowing them to occur. However - what you are after sounds more like the notion of a "Gated Check-in" where a build is attempted on a central build server before the check-in is committed to the main code base. Take a look at the BuddyBuild project on CodePlex to add that functionality in the current versions of TFS.
In TFS 2010, gated check-in builds will be a feature out of the box.