The project I'm working on includes two what I'll call Libraries of code developed by other teams. Using TFS, we would simply include their TFS folders in our workspaces and include their Visual Studio projects in our solution files. If the other team checked-in a file to the libraries we would immediately get their changes.
Obviously you can see the downside of this arrangement (we have no idea when someone will introduce a breaking change - and neither do they).
For better isolation from the day-to-day changes of these Libraries I plan on branching the Library code. We plan on treating these branches as read-only - we'll never make our own changes.
At certain times we would want to refresh these branches when each Library is at a stable point. (Most teams are using SCRUM, so this would be the code from the end of each Library team's Sprints). I expect that each Library team would label their code at these points.
Branching the first time seems easy. But what about refreshing the branches with each Library's labeled release?
Do I Merge? How do I specify that I want to merge only the changes from a certain label? Assume that I'll Merge sometime after the Library was released so that the "latest library code would have changes I wouldn't want - unstable changes for their next release).
OR - should i just re-branch each time?
OR - DO something else?
We still want to build their code ourselves - so I'm not looking for any suggestions about checking-in binaries for each library's release.