Personally, I like MKS. It appears to be built on rcs so its underpinings are very similar to cvs and svn, and the client is a nice full-featured cross-platform ui, with personalizable context (popup) menus. There is a built-in graphical view of project and member (file) branching and merging. And contrary to one of the earlier comments, as long as you create project 'checkpoints' to snapshot the state of the project (i.e. per build), you can compare two checkpoints and see what files have changed between them, or create a build sandbox of any checkpoint, or create a new "developer branch" for prod support on an old version.
Our technique is to use a "floating" label called "prod" or "test" that we move to the desired checkpoint, so the prod or test environment build script automatically knows which checkpoint to grab. The only problem is that it has to be a complete delete/rebuild process instead of 'update', because the sandboxes are locked to a particular checkpoint version number.
You can run the java-based gui on linux with no problems, but your server (windows or unix) would dictate file name case-sensitivity. I believe you can choose lock-change-unlock or change-merge paradigms per project.