As Neil Butterworth said , it depends; There are several valid methods.
However, I personally would recommend having a stable trunk and doing all the basic development on temporary branches. (T.E. Only small independent changes that will be fully implemented with a single commit must go directly to the trunk.) To avoid longer branches extending too far from the main line, (auto) combine everything that enters the trunk, to all branch development, at least daily. Oh, and everything should be reviewed by CI - not only the trunk, but all development branches too. Especially with Hudson, this is fast and there is very little overhead.
If you are interested in how we have applied this, there is more detailed information . (I would love to repeat too much ... :)
I would recommend this approach, even if it is only one team working on a codebase, and even if everyone is working on the same function / change. What for? Good, because, in my experience (if things like release schedules, requirements, etc.) are not foreseen in your environment, it definitely pays off to constantly keep your trunk in unlockable form.
Jonik Aug 11 '09 at 18:20 2009-08-11 18:20
source share