I have used CVS, Subversion, git, and a few commercial packages. I just migrated my personal VCS from CVS to git (I thought it was going to be more difficult than what it actually was, I should have done it long ago).
I would recommend git. Based upon what you are looking for.
I am a noob without much experience in version control systems
git may have a longer learning curve, especially if you have experience with a previous VCS. Without having been exposed to a previous VCS, your learning curve maybe be shorter.
The best way to learn git is download the book Pro Git by Scott Chacon (for free), create a test repository (
mkdir <project name>; cd <project name>; git init), and hack away at it. There is really is no effort to create a repository and don't worry about screwing something up in a test repository, as each repository is independent. A repository can be easily removed (
cd <project name>; rm -rf .git).
Several files will be plain text files but there will be some Libre-Office files
There is no differentiation with git on file types (ASCII vs binary), however ASCII files are optimal for seeing diffs and merging conflicts.
Be easy to set-up, run and maintain
git can be configured in a number of ways, it all depends upon what your needs are. For starters, a one many show, all you have to do is install git (
sudo apt-get install --install-recommends git-core) and create a repository (shown above). If you work across a number of machines, you can set up git over ssh (it is in the book). Even better, as your needs expand you don't loose what you have done already.
Have easy to understand configuration options (what directories to track, for how long, how frequently the changes should be captured, etc.)
You can have one big repository or break them down to individual projects or down to single files. Again create a git repository and play around with it, see what works and does not.
Ideally have a GUI front also
There are many git guis that specialize in many different tasks. However learning git from the command line is highly recommended. To get started you only need to learn a few commands (
git pull). Also the command line helps you with tasks you need to do. For example:
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
# modified: systems/ion/setup.txt
# modified: systems/dogstar/teardown.txt
# modified: applications/help.html
# modified: applications/readme.txt
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
no changes added to commit (use "git add" and/or "git commit -a")
If you are more comfortable with a GUI, SmartGit is newbie friendly.
Be able to recover deleted files
Yes, git can recover any version of any file as long as it has been committed.
What is the best/ most widely used tool that will be suitable for me?
git is widely used. As far as the best goes, it is among the best, if not the best. But being the best, is more of a personal opinion and is also based upon the situation.