DirigoEdge Source Control Basics09/01/2013
Since we have no fewer than 5 internal coders adding to the DirigoEdge Open Source ASP.NET responsive CMS platform, it is time to set some rules. From here on out we'll be using Team Foundation Server (TFS) branches for all future DirigoEdge installations. Up to this point we've used Google Code. This should greatly reduce the complexity of installing and updating DirigoEdge in the future, as well as allow support for “Feature Branches”, such as the Page Builder and the Events Calendar.
The gist is that the “Dirigo.Edge” project is Trunk and is where all major DirigoEdge development will take place. All future Projects and Feature Branches will be branched from this trunk.
How to create a new project:
- Under the Source Control Explorer, create a branch off of the Root / Trunk Edge project.
- You can create your branch anywhere within the Source Control Tree – you don’t have to keep your project under the Dirigo.Edge folder. In fact, please don’t! For example, Gerry just branched off of Edge into the EA tree under a project called “EA_Edge”. This will allow for a clear client / project relationship that does not clutter the DirigoEdge folder. It further maintains the trunk / branch relationship.
- Please use this naming convention for future projects : “MyProjectName_Edge”
- To update your DirigoEdge project, just merging your changes in from “Dirigo.Edge” (Trunk) to your branched project.
- To do this, right click on your project in the Source Control Explorer and go to Source Control – Merge. Follow the screens to merge Dirigo.Edge into your project. The merge should be pretty painless if you haven’t modified core files. If you’ve modified core files you may need to manually merge some changes if conflicts arise.
Feature Branches of DirigoEdge:
Feature Branches will allow us to separate non-core features from the default DirigoEdge installation. The PageBuilder, UserRoles, Events, Directory, and GoogleSiteSearch for example, are not stock features of DirigoEdge, but can easily be integrated into your application. To do so, simply merge the feature branch into your project. Unfortunately TFS will consider this a baseless merge, but as long as the feature branch is up to date with DirigoEdge, the merge should be relatively painless. Please name your feature branches “DirigoEdge-FeatureName”. Over time we will amass many features. Unlike other CMS systems, we will not clutter the base with unwanted features. This will keep the code and admin interface at a minimum and make the system easier to use. We will likely, at some point, publish feature branches as part of the Open Source Project. Some features will be kept proprietary to Dirigo (e.g. lodging, tickets, trails, weather, advertising, store locator). These private or custom features will be licenses to our customers. As of the writing of this blog post we have more than 1,500 tech hours of custom features. These are not core features or plugins that you'd fine available in open-source CMS systems.
DirigoEdge Feature Development:
If you come across a feature that you think DirigoEdge can benefit from, you can build that feature in a Feature Branch first, then merge that feature branch into your project when you’re done. This way your feature is reusable across all projects and you won’t have to copy and paste code around from different projects. For example, if you decide to create a newer, awesomer slide show editor, do it in a feature branch first, instead of directly in your project. Once it’s fully awesome, just merge that branch into your project. Then anyone can use your awesome slide show editor by merging that branch in to their project. If you update your slideshow branch, users can grab your update by merging the latest version of that branch. *Note – while working on a feature branch please make sure that the branch stays up to date. If you don’t, it can make future merging more difficult.
Documentation: Feature Branches require full documentation and review by leadership. Build time into your projects for doccumentation and review.
Non-Dirigo coders - our numerous Open Source contributors - should conform to these standards if they plan on making substantial contributions.