In the software development environment where I work we have a group of developers all working in the same (Java) codebase (currently using SVN). I notice that people want to commit often what they have constructed without 'breaking the build'. So just for that reason I'm looking at tools like Git and Mercurial that make branching and especially merging much easier.
One of the things I see is that if a developer commits 'bad code' then the code is broken for everyone. As an idea to avoid this I would like a way of having a 'intermediate single feature' repository that is simply the current 'master' with ONLY the one changeset for that single new feature. Such a 'intermediate single feature' repository can then be automatically tested (code quality, unit testing, manual code inspection, etc.) before becoming part of the main code base.
So the workflow I have in mind looks something like this:.
I have some questions about this kind of workflow:
Thanks.
Background note:
I have worked as a developer some 13 years ago at a company where they build a similar workflow internally and they had two nightly builds:
Because this was all SCCS (lock-edit-unlock model) based there was no way to 'commit often', you had deadlocks for code changes and all other kinds of nasty effects. What I'm looking for is mainly the good things about what I used back then using the much better tools of today.
TeamCity has a pretest commit feature.