How to Parallel develop on EXISTING solution using VS2003, VS2008, and VS2010.

Oct 20, 2010 at 8:11 PM

These are the 2 question that I have based on the subject:

How do I change current solution to use branching for multiple versions of Visual Studio?

How should the branch  for solution1 (see TFS setup) really look like?

TFS setup:

 $/tfsServer

 $/tfsServer/ourFolder (using Areas for different solutions)

 $/tfsServer/ourFolder/solution1 (VS2003)
 $/tfsServer/ourFolder/solution1/project1(with folders)
 $/tfsServer/ourFolder/solution1/project2(with folders)
 $/tfsServer/ourFolder/solution1/project3(with folders)
 $/tfsServer/ourFolder/solution1/project4(with folders)

 $/tfsServer/ourFolder/solutionN (not VS2003)

 $/tfsServer/otherTeam1Folder
 .
 .
 .
 $/tfsServer/otherTeamNFolder

Intro:

Currently we (a small team of 5) are using TFS 2008 (TFS 2010 will go live in 2011). Most of our solutions were imported from Visual Source Safe and slowly updated to use VS2008.

Our solutions did not consider branching as we always released the latest version using check out/in, tested task(s), release with set of tasks. Sometimes tasks were included that were not tested for this release - OUCH!!! (If the user needs to officially run the app using those "untested" features, they would have to wait until the next release. We have staggered test cycles and frequent releases during those cycles.)

 Now that we have VS2010 we would like bring solution1 into VS2010 and I see the need to use branching :) because we need to parallel develop until the solution is tested in VS2010.

The latest version is released and may by design exist side by side with an older version which means we may need to update a version with a capability that does not neccessarily belongs in the latest version. If it were not for this, I would drop the previous solutions and us CM snapshots of source files to update those versions.

The problem I see is that creating subfolder $/tfsServer/ourFolder/solution1/Main and moving $/tfsServer/ourFolder/solution1/projectX under Main has the side effect of not easily pulling out a previous versionSpec, i.e., label. One must use TFPT commandline. (I did it, developed for a couple of days, decided to rollback 8 or more checkins, and start fresh.)

 Consideration:

I have now considered the following but I am not sure if this is the way to go:

  1. Keep the existing branch and use it as the VS2003 Rel branch.
     - VS2003 development can continue from this branch using a VS2003 Dev branch.
     - Changes need to be added to the VS2010 Dev branch.

  2. Create a branch from VS2003 Rel and convert solution to VS2010 and use this as the VS2010 Main branch.
     (A new Solution using old code and losing History of files?)
     - Never Merge back to the VS2003 Rel branch until everthing has been tested out!
     - Merging back after both branches have same functinoality will most likely screw up everything. :)

  3. Create a Dev branch from the VS2003 Main branch
     - continue development and giving VS2010 developer code changes.

  4. Create a Dev branch from the VS2010 Main branch
     - Implement changes to get the app to run the "same" way as the VS2003 version.
     - Adding a secondary VS2010 Dev branch that includes changes made in the VS2003 Dev branch.

How do I change current solution to use branching for multiple versions of Visual Studio?

How should the branch  for solution1 really look like?

Oct 22, 2010 at 4:59 PM

I don't know if this will be helpful, but I just migrated several projects into TFS 2010 earlier this week.  I have a Team Project that contains several applications.  A couple applications use vs2005, one uses vs2010 and the rest use vs2008.  I have installed the TFS 2010 fix for both vs2005 Team Explorer and vs2008 Team Explorer. On my computer I was able to pull down the source code and with all three versions of visual studio and check out and check in items.  My structure is like the following.  I used indentation to show sub-items.

Application (Team Project)
    Website (Folder)
        Main (Branch - vs2010)
            Developement (Branch - vs2010)
            Release (Branch - vs2010)
    Web Service (Folder)
        Main (Branch - vs2005)
            Developement (Branch - vs2005)
            Release (Branch - vs2005)
    End-Of-Day Processes (Folder)
        Email (Branch - vs2008)
        Updates (Branch - vs2008)
        Diagnostic Tools (Branch - vs2008)