Like mentioned several times above, my advice is similar:
- Update often, as much as possible but at least once a day, and
- Commit often, idem (but of course you must have a compiled/running/tested feature)
The second point is very important as well: as soon as "something" is working, it must be committed, the literature says "don't go blind", i.e., don't keep development on your hard drive for one month until it is perfect (it never is anyway :-) )
This is the basic idea behind Continuous Integration (lots of material on Martin Fowler's site and very clear explanations).
Too last points:
- Regarding "syntactic" conflicts, don't worry about them, they are rare and easily fixed,
- Regarding "semantic" or "architectural" conflicts, it is even more important to discover them as soon as possible, hence the above motto: update often, commit often, merge often (for people using DVCS), and test often the integrated function in order to discover those potential semantic conflicts.
At my previous work, some people in product departments would refuse to update every day (even less several time a day) because they were saying: "the trunk is broken, if I update, I will loose my day". They were right! This is not acceptable!
This is why it is very important to emphasize that only working code should be committed (or pushed for DVCS people): to help to enforce this I setup daily builds, which would start at every commit (using the free software buildbot tool but dozens similar tools exist). With on-commit builds and tests, it is easier to unsure that the trunk is not broken; whenever a build or a (simple) test fails, the person(s) who has (have) just committed receive(s) an email and they must fix the problem immediately or revert. And the web summary (called waterfall in the buildbot vocabulary) is here for everyone to see. To summarize, it is really a state of mind to have and a mutual trust to build among developers, but once you've got to this point, believe me, you will never want to come back: developments are faster yet coordinated, and people are happy to contribute to the same code instead of working on their workstation alone for one month! It is worth trying to take this path (IMHO).
Hope it'll help.
Cheers,
Christophe.
= Great things are not done by impulse but by a series
of small things brought together. --Vincent Van Gogh =