**This question was downvoted and identified as a duplicate, even though the other proposed duplicate question is considerably different from my scenario. That problem is a question about how to merge already existing branches. My question is how to correctly/ideally change the project structure/add branches for an existing project with no branches. I even linked to another question that is exactly the same as mine, except I have additional questions that weren't answered in that one.
This is probably pretty basic, but I'm having a hell of a time trying to figure out the recommended approach for adding branching to an existing project in TFS2013 that has never used branching. This post is the same issue (for TFS2010), but the answer leaves some questions.
My specific scenario is that I've got an old project that has never had branches and wasn't setup for branching. From what I've read it appears as though starting with /main /dev and /releaseX /releaseY folders and converting them all to branches right off the bat is the recommended approach, but that ship sailed a long time ago. The company I'm working for needs to be able to maintain release branches for hotfixes for customers that have lots of different versions.
One recommendation was to simply to convert the top-level team project itself into a branch and treating that as the main branch. That seems fine, but I've also read that you can't create any branches inside of a branch, so how/where would I proceed to create the release branches?
The current structure looks like this, and the release folders are what I had in mind:
- server\default collection
- team project
- ...all the project's files and folders
- ReleaseBranches
- Release 1
- Release 2
- team project
So, do I have to create a "Main" folder, move all the project's files and folders into that, turn that into a branch, and then setup release branches at that level? Or is there some way to convert the root folder to a branch and have the release branches under it? Or do I have to create a separate project for each branch? Or, is it possible to not have a main branch and just create branches for releases (I recognize this probably isn't best - it would make merging more difficult)?
This is a very small team and I'd like to keep the changes as simple as possible, and make it as easy as possible for the team to merge bug fixes from the main to older releases. One other thought I have is how this might affect the CI build I've setup. If the branches exist under the project collection mixed in with the main code, then would checking in to a release branch trigger the CI build?