Как избежать замещения файлов?
Самое простое — внедрить SVN в процесс.

Подготовить репозиторий и организовать минимальный процесс — один день работы одного человека сисадминской направленности мышления. Если надо, то еще один день на чтение документаций и эксперименты.

Если «проект» — это приложение/сайт и.т.п, то все современные IDE умеют работать с СВН через встроенные плагины, так что сложностей настройки быть не должно. Для остальных случаев есть TortoiseSVN (windows) или даже вполне тривиальная консоль. Соответственно, репозиторий должен быть доступен для всех участников (в инете, если проект распределенный).

Резко приучить работать с СВН можно просто прикрыв прочие пути шаринга файлов (SFTP,FTP, Samba, etc). Как показывает практика, если показать какие кнопочки жать, то даже самые тугие на изменения привычного процесса коллеги за 15 минут схватывают суть.

Важное уточнение: это именно вариант решения указанной в вопросе проблемы, в условиях незнания деталей, поэтому я не касаюсь вопросов ветвлений, менеджеров проекта, политик и прочего.
Если интересно, могу позже написать статью о внедрении СВН в условиях веб-проекта на 3 программиста.
mercurial как DCVS мне показался проще к понимаю.

Ну или в худшем случае это решается организационными способами.
При разработки для каждой участвующей стороны создается своя копия файла/сайта/проекта. И они работают только с ними.

Специально обученный человек™ ака менеджер проекта ведет основную ветку и принимает решение о выкладываении проекта на продакшн. Также можно вменить ему в обязанность вести эти ветки — создает, удаляет, сливать изменения. Конечно только в том случае, если кто-то из пользователей этого не умеет делать, что обычно актуально в случае сторонних сотрудников.