Ask anyone about the benefits of using a version control system (VCS) and you will undoubtedly hear about things like change tracking, release branching, merge tracking, and the ability to roll back changes. But how often have you thought about the version control system as a history of design decisions? This is one way to think about version control – and thinking of it this way helps us notice things in the development workflow that are out of place and need to be changed.
I like to see version control changes made by the person or team who is making the decision in case there is a need for locating the person who made the decision. SCM should not provide a check in service for the development team when it comes to decisions made by someone else. Doing so will sometimes put the SCM team members in a position of having to remember who asked for the change in order to find out why the change was made. In today’s world of agile programming and continuous integration, the decision to include new features is likely owned by the development team, while configuration management teams are more likely to provide quality control services and administration of the build artifacts.
Version Control Is Design History