Merge Train is a project used to automatically merge changes from a source
repository into a target repository. Changes can be merged using git merge, or
by copying over all changes except for proprietary files such as the ee/
directory in GitLab. In both cases merge conflicts are handled automatically.
Strategies
There are two merge strategies provided by the Merge Train: a regular merge, and
a FOSS merge.
Regular merge
A regular merge is the default approach, and uses git merge to merge changes
from the source repository into the target repository. Conflicts are resolved by
taking the version of the target repository.
FOSS merge
A FOSS merge can be used to merge changes from a GitLab repository into a
repository that does not contain any proprietary code. This approach does not
use git merge, instead it applies all changes from the source repository
followed by removing any proprietary files and folders. To use this strategy,
pass the foss argument to the merge-train executable.