http://blog.johngoulah.com/
Most shops these days seem to know that using a Version Control System is necessary for the organization of a large software project involving multiple developers. It’s essential to allow each developer to work on their part of the project and commit the changes to a central repository, which the rest of the developers can then pull down into their working sandbox. Its an effective way to develop that avoids overwriting of changes, and allows for easy rollback and history. However, one problem I see over and over again is either lack of branching altogether, or doing it in a manual way that drifts the branch further out of sync with trunk as time goes on, and then trying to manually merge this with the trunk code when the branch is done. For those who don’t know, trunk is basically your mainline, in which code can be branched off of for features that won’t interfere with trunk until they are merged at some later point. This allows for testing changes without bothering other developers, but still being able to keep a commit history.