Какие инструменты могут понадобится для реализации такой системы?
Вопрос скорее всего не совсем уместен. Вам могут перечислить инструменты, которые нужны для постройки дома, однако дом вам построить это не поможет. Но, чтобы не быть голословным, вам понадобятся:
1. Git server (Bitbucket, Gitlab, etc). Если работаете один или проект очень простой, то достаточно будет gitolite.
2. CI server (Bamboo, Jenkins, etc).
3. Любой язык программирования для написания pre-receive/post-receive хуков и задач для CI.
Правильно ли я представляю себе этот процесс?
Вне зависимости от того, будете ли вы работать один или в команде, с моей точки зрения процесс выглядит усложненным и надуманным. Я бы начал с простого процесса и усложнял бы его только по мере появления каких-то проблем. Если вы начнете со сложного, то вы сразу создадите себе проблемы. И будете создавать новые, решая старые.
Как я вижу простой процесс:
1. Возьмите одну ветку, которая будет стабильна, например, master.
2. Для каждой фичи создавайте отдельную ветку из стабильной. Например, ivan-news-block или ivan-search-bug-fix. Правила нейминга придумать можно любые.
3. Тестируйте код на своей виртуалке. Обычный vagrant + virtualbox. Если у вас добавляется второй разработчик, то он просто берет Vagrantfile и у него на машине появляется виртуалка с готовым окружением для работы. Зачем вам общий dev сервер?
4. Процессом деплоя управляет или CI сервер, или ansible/puppet, или самописные скрипты.
5. Когда ветка готова к релизу, то запускайте процесс деплоя на тестовый стенд, где вы можете показать это заказчику или кому-то еще. Там же CI может прогонять тесты.
6. Когда фича аппрувнута заказчиком или ПО задачи, то запускайте процесс деплоя на бой.
Как это реализовать?
Вопрос явно требует уточнения. Сейчас ваш вопрос звучит так: "Как нарисовать сову?".
Но что-то могу порекомендовать:
Начать надо с построения процесса с проделыванием всех действий вручную. Далее постепенно каждую ручную операцию переводить на автоматику. Не стоит сразу пытаться сделать какой-то идеальный механизм.