Как организовать хранение библиотек и хидеров от которых зависит наш проект?
И чтобы хранилась история, чтобы мы могли взять версию своей библиотеки за прошлый год и быстро ее собрать со всеми зависимостями. Сейчас используем сетевую папку просто.
В SVN есть такая штука, как svn:externals. В Git и Мercurial тоже наверняка есть, а вот в CVS вряд ли. 
Суть в том, что в вашем хранилище хранится ссылка на другое (внешнее) хранилище, и при развертывании рабочей копии клиент ходит по этим "символическим ссылкам" и рекурсивно по ним всё скачивает. В SVN подчиненные рабочие копии будут выглядеть как обычные, у них будет своя папка .svn.
Нужно только, чтобы внешнее хранилище было такого же типа, как и ваше. Скажем, SVN не сможет скачать из внешнего Git. Если вы качаете библиотеки не из хранилищ, а просто архив с сайта, заведите у себя отдельное хранилище для библиотек и складывайте туда все нужные версии.
Можно поступать по разному.
Использовать скрипт, с зависимостяти, или просто вставить это в Makefile отдельным таргетом, чтобы можно было вытащить все зависимости.
Или использовать submodules - https://git-scm.com/book/ru/v1/Инструменты-Git-Подмодули
И перейти с использования CVS и SVN на git или mercurial!