For example, the fgs product's main line has two modules, src and doc, and is located at:
Product | Branching Patterns | Container Levels | Other SCM Areas |
---|---|---|---|
fgs | Basic Maintenance Basic Planned Development |
main dev rel sb |
//fgs-bld and fgs-rel depots for builds and releases |
web | Standard Hosted | live main latest |
|
toolkit | Organic Development Customization |
main svcs |
Uses libraries from //3rdparty depot |
A regular merge, also called a merge down, is typically done from a more stable to a less stable branch. For example, we would merge down from //fgs/main/... to //fgs/dev/FGS218/... in order to pick up the latest bug fixes on main. Any resolves are started using p4 resolve -am. A merge may result in a conflicts.
A promotion is done when a less stable branch is fully tested and ready to be pushed to its more stable parent branch. The goal is to make the parent branch an exact copy of the less stable branch. For example, when work is stable on //fgs/dev/FGS218/..., we would promote it to //fgs/main/.... A last merge down is done immediately before a promotion. A promotion is done using p4 resolve -at, followed by a diff-driven merge to account for any divergence.
Selective integrations are special cases where a specific revision, or set of revisions, is cherry-picked. Selective integrations introduce complexity into the integration history, and should be avoided if possible.