Right now programmers think of source code control as integrating packets of code, but why not make those packets smaller and integrate continuously?
I would say DVCS are already basically doing this now, not because they are decentralised, but because commiting is so much quicker.. With git I commit far more often than with SVN.. It also makes it simple to commit "chunks" or specific of code (using git add -i
or git gui
), and is generally much more focused on tracking lines of code, rather than complete files (as "traditional" VCS' like Subversion)
Also, the way git inherently works means, as you said, "the changes would be saved as 'not checked in' of course".. When you commit, the changes are local, then you push them to the remote machine with a separate command.. You could commit every time you save, then rebase them into a single commit if you wished.
As for a tool that does "continuous version control", you could do this quite simply with a shell script, something like..
while [ 1 ]; do
git add -a && git commit -m "Autocommit at $(date)";
sleep 10;
done
There is a script, CACM (github), which does something similar
[CACM] watches a specific directory, and commits all the changes to a standalone Git repository.
To use just do:
cacm --repo dir_of_git_repo --watch dir_to_watch
I'm not sure why you'd want to do so.. I find one of the most useful things about using a VCS is the diff of what I've changed (since the last commit). It seems like having constant/automated commits would just be noise..
Also, the "e" Text Editor has an interesting feature, it visualises the undo history, with branching. There is a blog-post on it with screenshots.