Введение
Что такое конфигурационное управление
Задача управления конфигурацией (configuration management) некоторой системы является типичной для инженерной деятельности. Под конфигурацией понимается состав элементов системы и взаимное их расположение. Конфигурацией можно управлять, отслеживая ее состояние и контролируя целостность изменений конфигурации, а также фиксируя эти изменения в документации.
Можно заметить, что конфигурационное управление в описанном виде представляется достаточно рутинной работой. К счастью, инструменты и подходы, разработанные для конфигурационного управления ПО (software configuration management), позволили автоматизировать многие задачи. Это, в частности, касается популярного инструмента git, который сегодня используется не только программистами, но даже некоторыми художниками и писателями для управления конфигурацией своих творений. Далее под конфигурационным управлением будет пониматься именно конфигурационное управление ПО.
Конфигурационное управление является частью программной инженерии, поэтому к нему применима следующая цитата:
«Программная инженерия – это то, что происходит с программированием при добавлении времени и других программистов» (Russ Cox).
Тематика книги
В этой книге конфигурационное управление трактуется более широко, чем в приведенных выше формальных определениях. Тематика книги в некоторой степени пересекаются с заслуживающими внимания материалами из [1] и [2].
Рассматриваемые далее темы:
- Командная строка.
- Менеджеры пакетов.
- Системы управления версиями.
- Конфигурационные языки.
- Системы автоматизации сборки.
- Виртуальные машины.
- Документация как код.
На рис. 1 приведен граф зависимостей глав книги. Читатель может выбрать собственный порядок изложения тем, не нарушая зависимостей между ними.
Часто можно наблюдать этаких «сапожников без сапог» – программистов, которые решают задачи конечных пользователей, но не занимаются автоматизацией собственных рутинных задач. Поэтому выбор тем книги обусловлен общей целью – стремлением к автоматизации процессов, связанных с разработкой ПО. Акцент на сиюминутных технологиях и инструментах может привести к чрезвычайно быстрому устареванию материала. По этой причине основное внимание в книге уделено общим подходам, алгоритмам и использованию проверенных временем инструментов с открытым кодом.