Очень часто при использовании Svn (или другой системы контроля версий) возникает проблема, когда программист фиксирует какие-то изменения и ломает сборку. Например, потому что:
- некоторые файлы были созданы, но не добавлены в систему контроля версий
- изменения были внесены в одну папку, но программист подумал, что это другая папка и зафиксировал ее
- файлы в нескольких подпапках были изменены, но зафиксирована только одна папка
- программист изменил какой-то код, но не скомпилировал его ("потому что это было так легко изменить!")
- и т.п.
Сломанный билд - это плохо - потерянное время, прерывание работы других людей, и было бы здорово этого избежать. Итак, я ищу какой-нибудь svn (git?) клиент\инструмент\плагин, у которого есть хук "перед фиксацией", где он может проверить несколько основных вещей, например:
- если папка содержит файлы какого-то типа (скажем, "cpp"), не находящиеся под контролем версий - показать предупреждение
- если папка содержит файл проекта (из VS или другой IDE), и этот файл проекта содержит некоторые ссылки на файлы, не находящиеся под контролем версий - показать предупреждение
- если папка содержит файл проекта и файлы какого-либо типа (снова скажем «cpp»), инструмент должен (опционально) попытаться создать этот файл, используя настройки из файла проекта, и показать предупреждение, если файл не компилируется
Я пытался найти такой инструмент - но безуспешно. Теперь у меня есть идея создать такой инструмент самостоятельно (с архитектурой на основе плагинов, чтобы можно было легко добавить поддержку новых типов проектов, типов файлов и типов контроля версий). Но прежде чем приступить к работе над этим инструментом, я хочу спросить - может я что-то упустил и такой инструмент уже существует?
Спасибо