Source Reliance
Managed Content Contribution
Software engineering is all about managing complexity. The atomic elements of that complexity are the changes that are made to your project's source files. As such those changes are a source of things that can hinder your project's success, such as confusion, defects, budget overruns, missed delivery dates, etc. Managing how those changes are contributed from one branch to another is at the core of operationally managing the development process. The whole purpose of a Software Configuration Management system is to provide the means to manage content contribution.
To properly model the data for managing content, Source Reliance has a project level view of the data. A project level view of data gives you the most accurate representation of the state of your project. The project level is how you think of your development process. When you release your product you do not release a single file, or collection of changes to a select group of files within your product. You release the entire product. In Source Reliance a branch represents a logical snapshot of your entire project in a particular state at a particular point in time. A small group of files within a particular branch may represent the total changes made to that branch, but the branch represents a snapshot of the project as a whole.
Properly managing content contribution is at the heart of Source Reliance. In Source Reliance all content contribution between branches is done through formal, automated, atomic, completely controlled merges that incorporate testing of the merged content prior to committing it to the database. Logical groups of changes are segregated by branches at a project level, and all the changes in a branch at a specified point in time are merged as a whole. The merge process is automated, straight forward, and allows for review and testing of the merged content before it is committed to the database. This makes it easy to ensure best practices are followed and only reviewed and tested changes are committed. Source Reliance has many features for segregating content in branches using public branches, private workspaces, and features to easily duplicate branches up through a specified label. Formally managing content contribution along with tools such as the Branch History View that allow you to see the contribution history, mean that with Source Reliance you always know exactly what content is contained in all branches at any given time.
Other SCM systems fail to properly control this fundamental process. File-oriented systems such as CVS don't even address the issue since contribution management must be done from the project level, with all the changes across the entire project for a specified period being bound to the single logical content contribution. Other SCM systems have features such as cherry picking and out-of-band merging that circumvent the content management process.
Cherry picking is the process of selecting a portion of what was originally considered a logically bound group of changes, and then contributing only those selected changes to a branch. While this can seem like a convenience in some situations, it can quickly create a complex derived change hierarchy. These derived groups of changes loose their original context making it impossible to understand them especially when used in active or large teams. This easily results in spaghetti code, confusion, bugs, and lost time.
Out-of-band merging is the process of merging between branches that do not have a direct parent/child relationship. This too causes the loss of the original context of the change, and can easily create situations where automated merging cannot be done and large-scale manual conflict resolution has to be done. This becomes a very time consuming and error prone process that is debilitating in large teams.
These lesser-managed processes become a major source of confusion, bugs, wasted time and resources, missed schedules and lost revenue. They are often born out of a perceived necessity which is caused by the SCM system's inability to properly manage the merging process. This is often due to their branching architecture not being able to support proper contribution management, or their merging process being difficult or cumbersome. These features are usually promoted as being flexible and simplifying, but in practice they tend to quickly create a tangled mess and make it impossible to know what content is contained in what branch.
With its straight forward automated merging process and its intuitive, easily managed branch architecture, Source Reliance does exactly what you expect your SCM system to do. It properly manages the content contribution process for you making it easy to ensure best practices are followed and you always know the status of your project.
|
© 2012 Core Software Technologies, Inc. |