Search code examples
asp.nettfsbranchprojects-and-solutionsbranching-and-merging

Removing main trunk in branch hierarchy and having just same level branches


I have decided to branch my TFS solution into 4 branches. I originally had one VS solution that was under source control, called 'Development'. As the product grew I decided to create 3 branches for the three clients that use it. So I have:

  1. Development
  2. Development-Client1
  3. Development-Client2
  4. Development-Client3

I had a new change request for 'Development-Client2' and wrote the code and made the changes. When I checked the source files in I noticed that 'Development' is also taking these new changes into account.

What I expected to happen, when I branched 'Development', was that I would have 4 versions of the solution and I could merge changesets between them.

From my current set up, it appears that any changes I make in #2, #3 or #4 will be automatically added into #1.

Since the branching occurred recently I feel I am in a position to sort it out now. Does anyone know what I need to to to get 4 independent branches?

UPDATE

In my solution file I have 6 projects:

  1. ASP.NET Web Site (running against localhost).
  2. Console Application
  3. Class Library (Business Logic)
  4. Class Library (Data Access)
  5. Class Library (Entities)
  6. Class Library (Common Methods)

I have noticed that for my new features in 'Development-Client2' that the changes in projects 2-6 have not been added to the 'Development' branch or the 'Development-Client1' or 'Development-Client3' branches.

However, any changes I made to the 'ASP.NET Web Site (running against localhost)' in the 'Development-Client2' have been replicated into all branches.

UPDATE 2

What I think has happened, in the following order, is:

  1. I had a solution called Development under source control (TFS)
  2. I created a branch called Development-NewFeatureX
  3. I branched Development-NewFeatureX 3 times, I was left with Development, Development-NewFeatureX, Development-Client1, Development-Client2, Development-Client3
  4. I deleted the Development-NewFeatureX branch.
  5. I made loads of changes to projects 1, 3, 4 and 5 under the Development-Client2 branch.
  6. At this point, I realised that project 1's changes had been replicated across the other branches.

I have also noticed that in the Source Explorer part of TFS that the each of the branches' solution file is pointing at 'Development-NewFeatureX' for the project [ASP.NET Web Site (running against localhost)].

I have tried to check out the solution file and modify the path from:

..Development-NewFeatureX/ASPNETSITE

to:

..Development-ClientX/ASPNETSITE

However this is just not working and source control seems to be overwriting the solution file.

I think it is at the point that I concede defeat and try to start a new solution.

If any TFS gurus have any idea what I'm talking about please give me some advice

SUMMARY OF PROBLEM

  • I have 4 branches.
  • Any time I open the solution file of any of the branches the project: "ASP.NET Web Site (running against localhost)" it is not different. i.e. it's the same one. So if I make a change on this project in any branch it is across all of them.
  • The mapped folder of this problematic project is the branch that I deleted previously.
  • The structure of TFS seems correct with the branches/projects. It is only when I open the solution file that the ASP.NET site is always the same one.
  • Please see screenshot.

enter image description here


Solution

  • In my experience VS always required handholding with websites from localhost.

    Here's what always worked for me:

    • Create web projects only like this: File -> New Project -> Web
    • Always Specify the location of the project, i.e. w:\project\code\AppWebLocation
    • Then you can in Project Properties -> Web -> Servers
      • use localhost/virtualDir - it will do the mapping for you
      • use VS Development Server - I hate it :-\
      • use IIS Express - localhost is better option I think.

    I think what happened it your case: you have used File -> New Web Site project, it placed the project into solution file and then you connected that Web Site into your Client solution as it was in the same location. Since then TFS was picking his files from the same place for all clients. which is pita.