Visual Studio Online Local Backup? - visual-studio

I work from a small IT department and I'm pushing to move from our current TFS implementation to Visual Studio Online. My boss who gets the final say is hesitant because "What if Microsoft decides to stop offering the service, without notice, or their servers fail how will we get our code". While I find such a scenario unlikely and the scenario of our TFS server crashing and burning with no backups/bad backups much more likely. I still need to address his concern.
Does anyone know of a way to "backup" a remote TFS implementation? So far the only thing I've come up with is doing a nightly pull of Visual Studio Online and submitting it to a local repo, feels hacky, feels wrong.

Take a look over at the discussion on this StackOverflow question: Is There A Way To Backup Visual Studio Team Services Projects?
Here is Richard's answer:
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 Online 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 Online will
come from either Microsoft shutting down the Visual Studio Online
service or that the underlying Azure infrastructure has such a
catastrophic failure that your Visual Studio Online 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 :-)
I agree with Richard. Visual Studio Online is not going anywhere :) You can also use tools like OpsHub, TaskTop, and Kovair to setup a two-way synchronization or use the TFS Integration Platform to do the same thing if you really wanted an option. If you are using Git repositories, you can clone the repository into other locations to maintain multiple copies. All of those options take effort.

I posted the same answer to this stackoverflow question.
We developed our own VSO 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

Related

Share source between VisualStudio.com TFS & Codeplex TFS

I am wanting to use VisualStudio.com to link work-items and user stories to source control check-ins for a current project of mine that is hosted on Codeplex.
The project is an open source project and has been hosted on Codeplex for several years. Now that I am doing a re-write, I am wanting to use an Agile process, creating user stories and building it in sprints, while I develop the app. The issue is that Codeplex's hosted TFS does not support this, while Visual Studio online does.
Visual Studio online is geared more towards closed-source projects with team members. It's offered for free, so I'm a bit bummed that they didn't open it up to support Open Source projects. Is there a way for me to have Visual Studio online host my source, and when I am ready to distribute a build, merge my branch in to Codeplex? I assume something along these lines is possible as the Prism team seems to do this with their releases. Since I don't have control over either TFS though, I'm not sure if external parties can do this or not.
If you use git on both projects (you can ask the Codeplex team to convert your project for you) then you can simply set up your git repo with two remotes.
Do you work locally and push to the main VSO git repo whenever you wish. When you've made enough changes that you want to push to Codeplex, just do a separate push to that remote and it'll be good to go.
If you're using TFVC on both then you're out of luck, unless you want to mess with the TFS Integration Platform (which I wouldn't recommend)

Sharing visual studio projects between computers

I have a laptop and a desktop computer that I wish to share visual studio projects between - what is the simplest way to do this?
The simplest way to do this at the moment is to use Microsoft's new and free TFS (Team Foundation Server) service "in the cloud".
First, sign up a TFS account here. You will have to choose a name, which will give you a URL like http://yourname.visualstudio.com/
Next, within Visual Studio you can add a TFS server, where you will be able to check-in and check-out your solutions and projects from any number of computers.
Do you want to share Visual Studio project (1) or do you want to put the project under version-control (2)?
For the first case you may consider online backup / storage service like Dropbox, Google Drive or SkyDrive. You will be able to access your project from different computers and could share it with others when needed. It's really the simplest way; no version-control though.
If you require version-control I advise you to choose Apache Subversion. TFS is like walking the hard and thorny path and is definitely NOT the simplest way.
So, you can install VisualSVN to add SVN as a source control to Visual Studio. Then you can "Add the solution to Subversion" with VisualSVN.
You can either host repositories on your LAN with VisualSVN Server (or any other SVN server) or use a hosted SVN service. Initial setup takes a couple of minutes max actually.
You can use a free SVN service. Here is one provided:- https://www.assembla.com/home

How to work on a single project via adhoc wireless in Visual Studio

my team is working on a project but we figured out if we continue, committing the changes we're making will be different. The option we're considering is to share the project on an adhoc wireless connection and work on it together but I'm wondering if there's a better way of doing this, like one that will allow you see that a different user is working on a class when you open it (like Google Documents) etc.. Thanks.
ps: I'm looking into the Team Foundation Server, but it sounds a bit complex, though I'm downloading the trial now, I don't know if it's what I'm looking for...
If you have a MSDN account install Team Foundation Server in Basic configuration or do what KMoraz told you: use TFS Express (it's still a beta, but it's "go live" so don't be afraid to use it). You can install both version on any kind of computer (yours for instance but it will have to be started all the time your teammates are working).
I strongly encourage you to give a try to tfspreview.com (Team Foundation Services) which is the cloud version of TFS, it's free for now (as long as it's beta) but Microsoft always said that it won't cost a lot when going retail.
Team Foundation Services is really great, you know have continuous integration in the cloud, it's pretty nice. I can give you more info about it if you're interested.
GIT, GIT, GIT.
GIT is a simple free solution to this problem. It merges files modified by multiple users very well.
GIT with VS.NET
GIT

Setting up BitBucket and Mercurial for Use In a Group Environment

My company is currently implementing a versioning system using Mercurial and BitBucket. We currently have respositories set up on bitbucket and are able to use them, but our work processes for doing so are a bit clunky. We use Visual Studio for web programming in .Net. Currently, we have set up a cloned repository locally and work from there. We can do this using Visual Studio with VisualHg.
In order to edit files we open them in Visual Studio from the local repository and make our edits. We then commit our changes to Hg, which updates the repository as it should. Then we need to FTP the files from our local system to the DEV server for testing and then FTP again to the Production server once QA is completed and approved.
It would help streamline things if we could have the BitBucket repository synced with our DEV server so that all that was required is to commit changes for testing in DEV, bypassing the otherwise necessary step of locating and FTP'ing all relevant files.
Does anyone know if this is possible? If so, can you point me to any documentation that would show me how to set this up? Our developers would be eternally grateful. Thanks for your time.
In my opinion, using Mercurial is not the correct solution for this problem.
The main reason for it not being the correct solution is that the files that are in Mercurial are not the files that you want on the production server and so aren't the files that you want to use on your development server (because you want the QA environment to be as close to the production environment as possible). There are no assembly files stored in Mercurial (or there shouldn't be) and those are the files that the server should be using to run the application.
There are deployment tools built into Visual Studio that you can use for this task. They can be configured to upload all the necessary files with one button click.
Scott Hanselman has a post on his blog about this.
Troy Hunt takes it one step further by introducing a build server with this excellent set of posts. It uses Subversion as the repository but it can be done using Mercurial too.
I prefer the build server method as, once you have it set up correctly, it makes it 100% reliable. It will do the same thing every time you ask it to do the deployment. If you use Visual Studio to do it the developer doing the publish could choose different options and get it wrong.

Which version control suits best this list of requirements

Our dev team is small (3 developers) and windows based.
I'm looking for a source control that can do the following:
Check out files for editing and warn others that file is used
Check in files and merge if they have changed
Split baselines for release versions and merge baselines if needed
Visual Studio integration
Can work over WAN
Thanks.
SW
Team Foundation Server fits all of those.
SVN would be great, as long as you use locking (normally the server has no idea what clients are doing by default)
Perforce might be a nice one to look at which does this more by default.
Both have VS integration, SVN especially.
SVN, provided that you explicitly lock the files. This is not by default, but you can easily lock the file via SVN commands or via TortoiseSVN.
VisualSVN provides the Visual Studio integration.
If you want good Visual Studio Integration, then check out Microsoft Team System. You didn't specify if you wanted free or commercial or how critical Visual Studio intergration was.
git will do almost all of it. Not sure about integrating it with Visual Studio though. there might be a plugin for that.
Reasons:
No central server needed. If you want one, you can have one, but it's not necessary
You can push/pull changes to the others at will.
Each of you can have your own local branches, and push only the ones you need to
each other. Branching/merging is easy enough to do branch-per-task. Then push just that task to a co-worker if needed.
Unlike SVN, only one directory is needed for git, in the top level of the directory structure.
git stash rocks for when you have changes in your current branch, and need to switch to another for a while. This is one of those things you don't miss until you don't have.
Merges are awesome.

Resources