As we begin planning the next release of the branching guidance, a top priority is to address how to manage shared code dependencies (the Dependency Repository / Shared Code issue). The newly release Build Customization Guide (now available for download from Codeplex) begins to address this issue, primarily from a build perspective. For the Branching guidance, I would like to go beyond that offered in the Build Customization Guide. I would like to provide more details for each the recommended scenarios including screen shots from Visual Studio Source Code Explorer to show the proposed folder / branch structure for each scenario.
For the Branching guidance, I am thinking of using Enterprise Library 4.1 AND Enterprise Library 5.0 to show the following:
The four scenarios described in the Build Customization Guide are
I would like to go beyond the guidance in the Build Customization Guide, by providing guidance to help people choose from these four options. For example, what are the benefits and disadvantages of each approach. Why would I choose one over the other?
In addition I want to include, in the Branching guide, examples for each of these four options (or which ever options we choose to recommend) for creating references (one example for binary reference, one example for project reference).
Questions we need to answer:
The four scenarios described above are from the Dependency Management section of the Build Customization Guide. As much as possible, we should ensure that the guidance for sharing code and managing dependencies is consistent between the Branching guide and the Build Customization guide. This does not necessarily mean we have to incorporate all four of the Build guidance scenarios into the Branching guide. We also should not necessarily be confined to these four scenarios.
Some dependency management scenarios I envision discussing in the Branching guide include:
For each of the scenarios we settle on, we should talk about the considerations for choosing one over another. Some of the considerations I can think of include: