Версионность программного обеспечения как управлять

Обновлено: 28.06.2024

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

Необходимость систем контроля

Творческому работнику, разработчику инженерных систем или чиновнику не нужно объяснять практическую необходимость систем контроля версий. Иногда инженерное решение, обрабатываемая фотография или важное письмо правятся сотни раз, а потом возникает необходимость вернуться к состоянию файла, актуальному неделю назад. Команда Ctrl + Z (отменить действие) не всегда выручает в случае, когда правок было сделано много. Зная эту закономерность, приходится сохранять файлы после каждого существенного изменения с указанием даты сохранения, чтобы в случае необходимости вернуться к определенной развилке и продолжить работу в другом направлении.

Минусы ручного метода:

  • потребность в большом объеме места на диске;
  • неудобство работы с большим количеством версий, не идентифицированных должным образом.

Системы по контролю версий документов (СКВ) предлагают пользователю более комфортное решение. Под определением Version Control System, VCS или Revision Control System понимается программное обеспечение для облегчения работы с изменяющейся информацией. СКВ позволяет сохранить несколько вариантов одного и того же файла, информацию о том, кем и когда внесена правка, имеет другие полезные функции. Задача экономии места на диске решается благодаря использованию дельта-сжатия, механизма, при котором сохраняются не файл целиком, а только сделанные в нем изменения.

Сферы применения СКВ

Помимо решения прикладных задач конкретного пользователя, системы контроля версий документов широко используются в бизнесе и производстве.

Функциональные задачи, решаемые с использованием СКВ:

  • сохранение исходных кодов создаваемого продукта при разработке программного обеспечения;
  • сохранение информации о различных версиях разработки автомобиля, корабля, спутника в системах автоматизированного проектирования (САПР);
  • сохранение изменений программного продукта, создаваемого с использованием инструментов конфигурационного управления (Software Configuration Management Tools).

Модели работы СКВ

В стандартной ситуации в компании используется модель, когда все файлы с внесенными изменениями всех пользователей хранятся в едином централизованном хранилище на выделенном сервере. Установленное там программное обеспечение выполняет большинство функций по управлению вариантами файлов. Пользователю приходится обращаться к серверу с запросом о предоставлении необходимой версии, и ему предлагается для работы локальная копия сохраненного на определенный момент файла. Так работает большинство бесплатных программ, предлагающих пользователю применять репозиторий на своем сервере. Но внедряются и децентрализованные решения (p2p).

В модели централизованного управления работой с файлами создается локальное хранилище копий, по отношению к которому действуют следующие правила:

  • версия обновляется при помощи пиров (символических ссылок);
  • сеть децентрализована, в файлообмене может участвовать каждый пользователь, работающий над проектом;
  • синхронизация производится путем обмена патчами (наборами изменений), она помогает поддерживать слияние при сохранение промежуточных вариантов файлов.

В некоторых программных продуктах применяется метод дельта-компрессии, он позволяет сохранять только изменения между последовательными преобразованиями, это уменьшает объем сохраняемых данных. Ряд программных продуктов, например, ClearCase, объединяют два типа хранения, когда на сервере одновременно находятся и полные документы (для отдельных файлов или на определенный период времени для всех) и дельта-изменения. Этот метод позволяет полностью восстановить архив, если в репозитории произошел технический сбой.

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

Большинство программных продуктов, обеспечивающих контроль версий документов, имеют следующие функции:

  • создают дерево вариантов при котором от каждого существенного изменения сохраняются различные ветки переработанных файлов;
  • подробно записывают историю изменений – всегда можно понять, кем и когда изменен конкретный фрагмент файла;
  • предлагают пользователю оставлять комментарии к каждой новой версии документа;
  • контролируют права доступа, разрешая менять версию только лицам с требуемым объемом прав.

Как работать с СКВ

Работа выполняется по алгоритму:

  • извлечение. На компьютер пользователя загружается дерево версий, пользователь выбирает необходимую. Для нее создается рабочая копия, в которую вносятся изменения;
  • обновление рабочей копии. По мере работы с файлом создаются новые версии, прошедшие эволюционный путь развития от скопированной до текущего состояния. Это приводит к необходимости периодически запрашивать с сервера текущую рабочую копию;
  • фиксация изменений. Она может производиться или по мере закрытия сессии, или по завершении работы над проектом. В большинстве программ каждую фиксацию определяет пользователь, который счел необходимым сохранить версию после внесения определенных правок. Программа дает возможность записать комментарии, описывающие суть произведенных изменений;
  • ветвление. Если после какого-то изменения документ правится в двух направлениях или двумя пользователями, создается дерево вариантов. По результатам версии различных ветвей могут быть слиты в одну;
  • слияние.

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

Наиболее популярные решения

От пользователя часто не зависит, какую именно систему выберет администратор, но работа в разных программных решениях практически не различается.

При выборе программы нужно обращать внимание на:

  • быстродействие, скорость предоставления рабочей копии файла и объединения;
  • функциональность;
  • сложность для освоения пользователями.

Mercurial

Продукт позиционируется как кроссплатформенная распределенная система управления версиями, разработанная для эффективной работы с очень большими репозиториями кода с графической оболочкой TortoiseHg. Программа работает с ОС Windows, Linux и Mac OS X.

Преимуществом решения является наличие бесплатного хостинга репозиториев на сервере разработчика, что облегчает работу с приложением группе пользователей.

  • подробная документация;
  • легкость освоения.
  • нереализуемы нестандартные решения;
  • не предусмотрено слияние двух веток.

Система одновременных версий (CVS)

Присутствующий на рынке уже более 30 лет продукт популярен у разработчиков программного обеспечения. Он распространяется по открытой лицензии, позволяет запрашивать с сервера-репозитория нужную редакцию. Во избежание конфликта интересов используется модель дерева вариантов. Система создавалась для работы в среде Unix, современные модификации успешно работают со всеми популярными ОС. Есть более функциональная коммерческая версия CVSNT для Windows.

  • хорошо отработанный в течение десятилетий, надежный алгоритм;
  • открытый код.
  • в истории файла не отражаются его переименование или перемещение;
  • пиры (ссылки на файлы) не дают гарантию абсолютной безопасности информации;
  • открытый код ограничивает возможность работы с большим количеством веток версий.

Apache Subversion (SVN)

Программный продукт, разработанный с учетом исправления недочетов предыдущего. Обеспечивает возможность переноса данных из одной программы контроля версий документов в другую. Программа с открытым исходным кодом и распространяется на условиях лицензии Apache.
В программе реализован принцип атомарных операций, к финальной редакции применяются либо все согласованные изменения, либо ни одно из них. Это обеспечивает бесконечное дробление копий в результате незначительных правок.

  • не используются пир-ссылки;
  • доступны атомарные операции;
  • создание дерева версий файлов менее затратно.
  • невысокая скорость;
  • ошибки, связанные с переименованием файлов, из-за которых файл в новой редакции нельзя поместить в общее дерево документов.

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

Читайте также: