We are using TFS 2010, and we have some very nasty problems with our dependency / branch management.
At first glance, our problem is quite common. We have AppServer , WebClient and WinClient . Both WebClient and WinClient are dependent on AppServer . There are two additional restrictions:
- we prefer to include a specific version of the dependency used
- we prefer to include the source code rather than the binaries, because itβs easier to implement and test changes to
AppServer that come from a specific origin, such as WinClient .
We select the following folder structure:
\ |-AppServer (1) |-WebClient |-Dependencies |-AppServer (2) |-Sources |-WinClient |-Dependencies |-AppServer (3) |-Sources
AppServer (2) and (3) are branches (like the first class branch) of AppServer (1) . All this works very well and corresponds to our development scenario.
Now comes the problem. Suppose we want to implement the "branch-per-release" template on a WebClient , which means branching the whole WebClient hierarchy to another location. We cannot do this because TFS2010 does not allow nested branches of the first class.
To add to this call, we present a branch hierarchy (only for WebClient and we have several other dependent and dependent projects):
WebClient |-Client1 | |-feature-1 | |-feature-2 | |-v1 Release | | |-v1 hotfix1 | | |-v1 hotfix2 | |-v2 Release | |-v1 hotfix1 | |-v1 hotfix2 | |-Client2 |-feature-1 |-feature-2 |-v1 Release | |-v1 hotfix1 | |-v1 hotfix2 |-v2 Release |-v1 hotfix1 |-v1 hotfix2
What are our options? I can think of several:
- Convert first class branches to folders. This will allow us to embed branches, but we will lose tracking and visualization, which I don't like.
- We can somehow rebuild our code regarding dependencies. But I tried to think about it for some time and still do not see the answer.
- We can switch from code dependencies to binary dependencies, but this will slow down our development.
Is there any solution I missed?
source share