BitKeeper is the configuration management platform for the BitKeeper
family of products. BitKeeper arms developers with a distributed,
peer-to-peer version control system that naturally enables
collaboration, iterative development, and peer reviews.
Developers can work faster and more productively because versioning is local,
sharing work is simplified, and all individual work is preserved.
Architects and project managers can more easily co-ordinate different
components and versions of their projects with BitKeeper's detailed
audit trail and advanced on-demand branching and auto-merging
capabilities.
How does it work?
BitKeeper groups modifications into logical units of work called
changesets, which can represent features updates, patches, etc.
Changesets dramatically improve debugging and maintaining code
by showing all of the related changes that are associated with
any one modification. Comments are associated with each individual
modification as well as the changeset that encapsulates them,
making it easy to see not only the who and what, but why.
Easy to manage repositories
At a simplified level, a BitKeeper repository is a collection
of files and the group of changesets that captures the evolution of
those files.
BitKeeper changesets are committed atomically, never leaving a
repository in an inconsistent state. Unlike other SCM solutions,
BitKeeper changesets are also immutable and fully reproducible:
you can roll back to any changeset and reapply a changeset with
the same effect every time.
Since BitKeeper tracks and groups
all modifications, including symlinks and file renames, you can
always reproduce working builds. Every changeset is automatically
tagged in effect, so reproducibility is preserved even if
someone forgets to "tag" a version.
No more breaking builds
Legacy SCM systems are client-server based, causing central repositories
to become bottlenecks, or worse, single points of failure. In BitKeeper,
each developer has a replica of the repository, giving him a revision
control environment that is local and sandboxed.
Changesets are committed to the developer's local repository -- slow
networks, offline servers, or even offline development no longer
hamper check-ins.
Organizations with remote offices, developers
working from home, or offshore development will quickly realize
the benefits of BitKeeper's fast, localized versioning. At the
same time, every organization, whether distributed or not, can
decrease the risk of check-in's that pollute global repositories
or that break the build for the entire organization.
Fast, lightweight synchronization
Synchronizations between repositories are fast because only
the delta in changesets (i.e. difference in metadata) is transferred over
the network. Other legacy SCM systems
need to traverse the entire directory tree to see what has changed.
Suppose Dave is happy with his new work and is ready to push his changesets
to the main repository. Amy can then pull Dave's changes from Main. Files that
were concurrently modified are automatically merged wherever possible using BitKeeper's
ProMerge technology (if manual merging is necessary, BitKeeper provides
advanced 3-way merge GUI tools).
Once Amy has merged, she can push her work to Main. A powerful feature
of BitKeeper is that all individual, incremental work is preserved with
a detailed audit trail of who did what. If Dave's work turned out to be bad,
good work from Amy (and from any other developer) that went into the merge
is retrievable. Other SCM solutions typically lose all of the incremental
work except that of the last person that merged and checked in.
Collaborating peer-to-peer
Unlike other SCM systems, BitKeeper enables developers to push and pull
changes peer-to-peer. This gives you the power to work collaboratively and
to leverage each others work without affecting unrelated groups. Organizations
implementing Scrum, Extreme Programming, or other agile development methods
can now encourage collaboration without anyone leaving a version control
environment. People's work is also more likely to be tested and peer reviewed,
improving software quality.
On-demand branching
BitKeeper enables a workflow that allows organizations to adaptively
divide and conquer projects according to customer priorities. Suppose
Dave's feature suddenly turns into a customer priority that requires
additional resources. Dave's workspace can be quickly cloned into
a staging area that additional developers can work against. Updates,
merges, and tests are still sandboxed within the group. BitKeeper's
advanced merge capabilities also make co-ordinating updates coming
down from Main and coming up from Dave's team easy to manage.
I'm ready to evaluate BitKeeper...