I was planning for some time now to write my thought about those tools, and perhaps provide some recommendations which are based on my personal experience.
In the meanwhile, as I was doing some research about the topic, I found a really nice book about SCM, which I want to quote:
Our universities often don't teach people how to do source control. We graduate with Computer Science degrees. We know more than we'll ever need to know about discrete math, artificial intelligence and the design of virtual memory systems. But many of us enter the workforce with no knowledge of how to use any of the basic tools of software development, including bug-tracking, unit testing, code coverage, source control, or even IDEs.
Our employers don't teach people how to do source control. In fact, many employers provide their developers with no training at all.
SCM tool vendors don't teach people how to do source control. We provide documentation on our products, but the help and the manuals usually amount to simple explanations of the program's menus and dialogs. We sort of assume that our customers come to us with a basic background.
I think this says it all about the lack of human knowledge about source-control and the importance of it. I recall how once a graduate of a popular programming course told me that the experience given in that course, when it comes to source-control, is worth much more than the knowledge provided in the entire CS degree.
And for those who think that bug-tracking systems are meant for bugs only - here's a correction: I was using such systems even when I was an Oracle Applications DBA, in order to manage the workflow required to get a patch installed, tested and moved-to-production.
Possibilities are endless, and the long term benefits of having such systems in place are priceless.
Not managing your code (sources, scripts, documentation, configuration) and bugs yet? Go and start doing so now.