Continuous Integration Is More Than Version ControlMany, many people seem to equate ContinuousIntegration with CommitEarlyAndOften. While committing your code to the version control system is one example of integration, it's only the tail of the donkey.
Continuous Integration is making sure you don't create a mini-universe that ends up getting crushed by the real universe.
Examples of non-continuous integration:
In the case of using head to stuff your partial refactorings, you may find that the refactoring goes wrong part-way through. You cannot simply roll-back the changes made, because intervening commits from other developers are likely already in the repository. You have to 'unwind' your changes manually when this happens. This is, for all intents and purposes, the equivalent of merging branches (in terms of workload involved). [Actually, if you're using darcs, you *can* simply rollback the changes (unless someone else edited the same lines after you did). It is still equivalent to merging. I think the same applies to any SensibleVersionControl?^W DistributedVersionControl system.]
Some personal experience relevant to this:
Answer: commit all refactorings in steps that work. If this means you have a changeset that touches 500 files, so be it. If your changeset takes a week to develop, so be it. In this case, I back up my delta from source control regularly. This is not the same as branching as I am still fetching daily. --JoshuaHudson
See also ContinuousIntegrationPatterns, ContinuousIntegrationApplied, FrequentReleases, IncrementalIntegration, HorizontalStripes, AntHill, IntegrationGuard, ContinuousIntegrationIsMoreThanVersionControl
EditText of this page
(last edited June 20, 2012)
or FindPage with title or text search