Hi guys; read the documents and they were very helpful. We have some heated discussion on the best way to revamp our branching strategy and wanted to find out how the experts were doing it. ;)
We are using TFS 2010 and mostly C# development.
Current setup: Under the project we have:
Dev-branch\ (where development of new code takes place, SME verification etc)
AIT\ (intial branch from Dev-branch, we now merge items from Dev to here by work item. We build this nightly and our internal QA group uses it to verify Tasks are done, Bugs are fixed, etc)
UAT\ (branch from AIT, merge by work item from AIT to here once the WI has been verified in AIT branch. This environment is built twice per week and deployed to machines for the end user to test. Typical UAT environment)
Problem List: Since it takes awhile sometimes for the Devs to complete work items and get approved sometimes we end up with smaller tasks ready to go up before the larger piece is complete. We almost have to (and sometimes do) merge
only the particular changeset associated with the work item [cherry picking] but of course this causes alot of problems later on with dependencies not in place, etc. Alot of times a Task will work in DEV, AIT but not work in UAT. The Dev is very modular with
gui typically first then backend services and DB work done. Also we are coming to the end of the development for this project (2-3 months) and will be in Bug Fix mode from then on.
Given all of that what is the best way to create a new branching strategy to stop our issues but will allow us to merge modular development up as needed. Any ideas is much appreciated. If you need more info I will be happy to help. Ive typically worked as
ConfigMgr for Agile teams; this style of development is different than what Im used too. Also we did not use TFS work items from the beginning. We imported a spreadsheet into TFS as Tasks and use Bugs...nothing on a higher level.