How to merge source code from Vault to TFS 2008 - version-control

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.

Related

Team services with many small projects and single developer

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.

Migrate VSO to VSO with history and work items

I'm using VSO xxx.visualstudio.com. We have to migrate with history to yyy.visualstudio.com. I know there is no direct tool. Looking for good approach or solution.
Unique Difference with, below question:
Visual Studio Online migration (VSO to VSO)
Export Source code with work Items
TFS Integration Platform tool is not working.
OpsHub company is taking too long to reply.
You can use the TFS Integration Tools to move TFVC code and Work Items from one Team Project to another regardless of TFS/VSO version.
I have done this a number of times and it works pretty well..

Is There A Way To Backup Visual Studio Team Services Projects?

I'm advocating using Visual Studio Team Services for our source control solution, and have actually started doing so. However, my manager, who is somewhat apprehensive when it comes to cloud-hosted storage and services, wants to know what our contingency plan is in the event of Team Services ceasing to be accessible for whatever reason.
I've pointed out that we have our source code on our developers' computers, in their mapped work spaces, but admittedly if we ended up with just that and no access to Team Services we'd certainly be in a bit of bind. They might all be working on different parts of the same solution and we wouldn't be able to check all of their changes back into the central repository or merge changes made in separate branches. We also wouldn't have access to the comments associated with previous check-ins, or our backlog, tests, etc.
So, the question is, is there a way to backup everything that we're hosting in Team Services so that, in the event of something going wrong, we'd be able to restore all of that to a locally-hosted installation of TFS (or somewhere else)?
I'm a bit late to the party but we developed a Team Services backup tool. We scheduled it as a scheduled task and it runs once a night. It then just clones all our repositories to disk.
Taken from this blog:
We use the VSO Rest API to query our VSO account and get all the data
we need. Since in VSO you can only have one Team Project Collection,
we retrieve all the team projects of the default collection. Each of
these team projects can have multiple repositories that need to be
backed up. A folder is created for each team project and saved to a
location on disk that can be configured in the app.config. When the
team project folder is created, the task loops over each repository in
the team project and creates folders for each repository.
You can also fork it on GitHub here
There's no out of the box backup ability.
Now, if you are only referring to source control, and not work items, pull requests, builds, test plans or anything else that the service offers, then I'd suggest you migrate your code over to git.
With git every developer will have a complete copy of the source repository, including all history and commit comments. From there, it's a simple task to push the git repository to a different git hoster (such as bitbucket or github) and make them your new centrally hosted git repository.
On a historical note, Visual Studio Team Services at one point offered a data export for a period of time. You might want to add a vote or three to this related UserVoice idea to help raise the importance of the feature with Microsoft.
Side comment: The business risks in using Visual Studio Team Services will come from either Microsoft shutting down the Visual Studio Team Services service or that the underlying Azure infrastructure has such a catastrophic failure that your Visual Studio Team Services account is unrecoverable. Both of those are extremely low risk, and very likely lower than the risks you'd have running TFS on-premises, in your own data centre, unless of course, your infrastructure and staff are better than Microsoft's :-)
Not a full VS backup in terms of a restore of service. But you can take a full Zip from root down using the Code web site. Right click the root folder and has a zip download option. Pretty neat feature.
The easiest way to back up everything is to use something like the TFS Integration Platform to periodically pull off all your data into an on-premises TFS solution. I've set this up using an Azure VM that we turned off when we weren't actively backing up, which makes it really low cost. For more info on using the TFS IP with Team Services, see this: http://nakedalm.com/migration-from-tf-service-to-tf-server-with-the-tfs-integration-platform/

I don't understand the usage of the TFS branching tool

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.

SSAS Versioning Without Source Control

What is the best way to manage and combine different versions of SSAS solutions, without using version control?
Currently, we have a network drive where the "master" copy is stored. So individual develoeprs work with a local copy, but we recently ran into a problem with adding changes to the "master" copy.
Any suggestions? Microsoft appears to have souce control for SSIS. SSRS is easy enough to migrate by just copy/pasting the rdl files. There seems to be no easy way to accomplish this with SSAS packages.
What version are you talking about? I just recently added an entire SSAS project into source control. There was no issue at all.
We must somehow be talking about two different things.
You could try creating a single master xmla script that holds the entire cube definition. this script would live on the network drive.
The XMLA Script can be generated using the analysis service deployment tool. Then you would have to rely on a diff tool to try and manually merge the changes from each developer into the master file.This would be extremely cumbersome and error prone.
I would recommend just storing the project in source control. As previously mentioned MSAS will work with any version control provider. since it source files are just xml. For best results use a source control provider that integrates with visual studio.