In the beginning there was one developer and it was fine. Then someone decided to add a second developer to give the first one companionship and it was chaos.
I think every developer run at least once into the situation that someone else touched the same piece of sourcecode as he and faced the situation to merge the sourcecode. Sometimes possible and easy, sometimes impossible because 2 parties were working on the same module for months (for whatever reason causing this situation!). Lets ignore the organizational reason why more than 1 person does the same thing.
In the first company I ever worked in (15 years ago) we realized this is a problem and solved it manually by a simple homemade tool that locked (write-protect) certain source files on shared drive. Later we bought another 3rd party tool to do this job and finally we moved on to MS Sourcesafe in the late 90’s. It worked very well because we were only 3..5 developer sitting in the same physical location.
The next company I joined did the same, but bought a very expensive piece of SCM which did the same job for a considerable alrge number of developer at different sites. What happened ? The system was not very stable, at least from the moment we had no more fulltime admin, lot of downtimes happened and developer were not able to synch or commit changes. Individuals started to remove the write protection on their local sourcefiles and within of weeks there were numerous branches of sourcecode. And it was chaos.
Finally I decided to start development again and learn from previous mistakes. For SCM you have a selection of commercial and opensource products. To name 3 of them: CVS (link), Subversion (link) and Bazaar (link). You can download them and install them on your server (and potentially run into the trouble of administrating both hardware and software!). I came to the conclusion to buy this is a service from a reliable provider.
You might want to checkout this company (link)