Mercurial
Key features:
- Distributed VCS
- Free, open source
- Plugin scripts are easy to write---can be written in Python or as shell scripts
- There are many plugin scripts already freely available
- Lots of documentation available, including this book (highly recommended)
With regard to the use of non-text files, there is a bigfiles extensionlast versions of Mercurial (>=2.0) provide the largefile extension by default:
largefiles solves this problem by adding a centralized client-server layer on top of Mercurial: largefiles live in a central store out on the network somewhere, and you only fetch the ones that you need when you need them.
There are other extensions providing similar solutions like the http://mercurial.selenic.com/wiki/BigfilesExtensionbigfiles extension ) which lets you store your assets in the same Mercurial repo, but only fetch the binaries you need when you need them.
I am not aware of any issues with regard to large projects beyond those related to having large binary files. The Python project is a large project and uses Mercurial.
Joel Spolsky has written a mini-tutorial on using Mercurial at Subversion Re-education