Codeville
Codeville is a distributed version control system. It began with a novel idea
for a merge algorithm and has grown from there. It is designed to be easy to
use and scale from small personal projects to very large distributed ones. If
you'd like to know why there is a need for new merge algorithms, consider what
the lead monotone developer
has to say
Current Status
- Simple and robust merge algorithm with proven effectiveness
- Well stressed branching and merging with no restrictions
- Simple user interface
- Almost trivial to use for personal projects without running a server
- Keeps client/server model for those familiar with non-distributed systems
- Transparently extends the client/server model to the distributed case, repositories are all referred to by URL
- Simpler branching and merging than CVS, it "just works"
- Basic set of commands with rich functionality
- File name wildcard '...' can be used instead of futzing with the unix 'find' command
- Good performance, even on very large projects
- Strong authentication
- SRP authentication means you will not expose your password to remote servers by accident
- HMAC codes to protect against connection hijacking
- agent so you don't have to type your password all the time
- Disconnected operation
- History browsing and diffing
- Changeset creation for later commit
- Powerful diffing and history browsing commands
- Immutable and verifiable history
- Extensive use of hashes including all of the following
- Internal identifiers for files and directories
- File deltas
- Change numbers
- File and directory renaming which correctly handles all (and there are plenty) corner cases and conflicts
- Cross platform, runs on all major platforms
- Released as open source
That being said, there are still a few things missing. See the
todo list for things which are missing and ways
you can contribute.
CONTACT
There is a mailing list at devel at codeville dot org. You can also try the irc channel #codeville on irc.freenode.net.
NEWS
12/25/2005: Version 0.1.14 is out!
New in this release:
- Allow specifying files by id for several commands
- Quoting of CDVDIFF on Windows to allow diff programs with spaces
- Quick hack to preserve execute permissions during update
- Preserve ownership of the password file when using 'cdvpasswd'
- Partial subcommand matching, things like 'cdv di' and 'cdv up' now work
- 'cdvserver' exits immediately after initialization when given -i
- Make 'cdvserver' shut down cleanly on various signals
- Force all comments to be encoded in utf8 (automatically converts from local encoding)
- 'diff.py' works as a standalone program
- 'commit' accepts -M or --message-file to read commit message from a file
- Big optimization to 'annotate'
- fixed: delete bugs due to internal ambiguities
- fixed: infinite loop when there were blank lines in the commit message
- fixed: better cleanup when CDVDIFF fails
- fixed: better detection of problems with CDVDIFF
- fixed: 'revert' and 'construct' only worked from the root
- fixed: cdv-agent died with EINTR
- fixed: glob module removed files which don't exist from the command line (Windows only)
- fixed: '...' expansion (Windows only)
- fixed: 'cdvserver' would accept history with implicit merges
- fixed: 'history' traceback when using -c
- fixed: 'history' traceback, especially obvious when working serverless
Current items being worked on for the next release and later are:
- binary support
- big improvements to the latency of the network protocol
- CPU and memory improvements
- changes to the merge algorithm so that we can prove things about its behaviour
older news
— Bram and Ross