Commits are intelligently replicated to the stable repository when approved.
Each project has a development and stable repository. Developers use development, builds are triggered from stable.
Stable repositories only show original commits, keeping your history clean.
Two repositories are created, stable and development. Developers commit to development — for all they know, stable doesn't even exist. You trigger builds from stable because only working code makes it there.
Once approved, files in commits are copied into stable with -C sha1
to replicate the commit.
This keeps the commit history clean, and completely avoids merge commits. Changes to the same file are merged in serial, but
everything else is copied into master as soon as it's approved.