|
Why An Automated Merging Tool?
In software
development, the longer you wait to integrate and test your software,
the longer it will take to test and ship the product. For this reason,
many development teams have begun to use continuous integration
solutions to build the software each time a developer makes new changes
to the software. When continuous integration is used in combination
with automated unit tests, the team gains instant feedback regarding
any new problems or bugs that were introduced into the software. By
recognizing problems early, the team can fix them before they have a
chance to fester.
While this is a very valuable approach, some
problems arise when in using continuous integration when the team has
many active branches in their SCM repository. Some of these problems
include:
- Continuous integration systems are hard to
configure when there are many branches. Generally speaking, each
branch must be configured with it's own build definition file, making
it difficult to maintain the configuration when new branches are
created.
- Teams lose track of their branching strategy and can't see the big picture.
- Developers aren't sure when to merge changes from one branch to another.
- Merging changes from one branch to another is a time-consuming, manual process. Developers tend to avoid merging.
- The
longer two branches deviate from their ancestor, the more likely it is
that conflicts will occur, and the longer it will take to merge them
back together.
- If merges aren't done frequently, the benefit of continuous integration is lost.
For these reasons, some teams avoid branches altogether, and simply
perform all development on the mainline, or trunk of their SCM
repository. In many cases, however, this methodology is not workable
because the trunk becomes unstable with multiple, incomplete lines of
development.
MergeMagician solves these problems by creating
publish/subscribe relationships between branches. Changes made to one
branch (such as a service pack branch) can be automatically propogated
and/or merged into other branches.
|