Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Версионный контроль / Реферат_Версиоонный_контроль.doc
Скачиваний:
17
Добавлен:
01.05.2014
Размер:
110.59 Кб
Скачать

Введение в управление версиями

Ни один серьёзный проект сегодня не обходится без отслеживания истории своих изменений; очень полезно знать, что было день назад, что месяц назад, иметь возможность возвратить код к предыдущему более стабильному состоянию или по количеству сделанных за промежуток времени изменений оценить продуктивность работы. Практически все системы управления версиями основываются на механизме разниц (diffs) между файлами и применении этих изменений к файлам для их приведения к новой версии. Способ приложения изменений называется патчем (patch). Наиболее просто это применимо к текстовым файлам - документации, исходным текстам программ и т.п., хотя с некоторыми оговорками вполне можно использовать для бинарных файлов (собственно тексты по сути ведь бинарные данные). Структура и содержимое файла как правило не имеет значения - консистентность данных до и после применения патча является заботой разработчика (если быть точным, это не всегда так, но в нашем объяснении проще принять такую точку зрения). Далее под файлами мы будем подразумевать текстовые файлы.

Основная ценность патчей в том, что мы получаем относительно абстрактный набор инструкций для модификации одного файла в другой. Т.е. патч основанный на изменениях между старой и новой версиями файла можно применить к другому файлу и добиться в нём изменений аналогичных тем, что произведены в первом.

Как это работает? Допустим мы заменяем в тексте несколько вхождений слова "яблоки" на слово "апельсины", а "вишни" заменяем на "лимоны" и получаем новую версию файла - разница между текстами только в нескольких словах. Допустим также, у нас есть ещё одна модификация исходного документа, с какими-то иными отличиями, но всё с теми же "яблоками" и "вишнями", которые нам надо заменить нашими цитрусовыми. Очевидно в данном случае проще всего применить замену в текстовом редакторе, но поскольку наша цель продемонстрировать механизм работы патчей мы пойдём длинным путём - решим, что функции замены в редакторе у нас нет. Как будет сравнивать два больших похожих друг на друга документа человек? Поищет какие-нибудь ориентиры - номера страниц, заголовки или за их отсутствием какие-то приметные места в тексте - иначе говоря будет разбирать контекст и найдя похожие фразы в них заменять найденные слова. По аналогичному алгоритму действуют программы, автоматизирующие этот процесс - они определяют уникальный контекст в документе, обычно это какие-то части текста вокруг заменяемых слов (а в наиболее примитивном варианте - номера строк, где нужно произвести изменения). Затем при применении патча в другом документе ищется аналогичный контекст и если он найден, производится замена. Таким же способом производится добавление или удаление текста. Замена, вставка и удаление - мы получаем три необходимых операции для любых преобразований текста. Очевидно, что для полностью различных текстов, не имеющих общего контекста попытка применения таких изменений не будет удачной, но в реальной практике возникает потребность в изменении чем-то сходных текстов - разных версий документа или исходного текста программы. Тут перенос довольно значительных изменений вручную может быть чреват ошибками, автоматизация позволяет значительно ускорить процесс (гораздо значительней, чем может показаться на первый взгляд).

Возвращаемся к системам управления версиями (они же кратко VCS - от version control system). Основываясь на механизме изменений и патчей VCS хранит всю историю изменений документа или набора документов, позволяя получить патч и приложить его к другому документу или "откатиться" по истории к любой старой версии документа.

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

Хотя основное применение систем управления версиями - разработки программного обеспечения, ничего не мешает использовать их для любой деятельности связанной с написанием документации и вообще любых текстов (кто знает, может быть кто-нибудь из современных поэтов или писателей на самом деле хранит свои шедевры в домашнем репозитории subversion? - тогда потомки с интересом рассмотрят в будущем историю его творчества).

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

Такие системы наиболее широко применяются при разработке программного обеспечения, для хранения исходных кодов разрабатываемой программы. Однако, они могут с успехом применяться и в других областях, в которых ведётся работа с большим количеством непрерывно изменяющихся электронных документов, в частности, они всё чаще применяются в САПР, обычно, в составе систем управления данными об изделии (PDM). Управление версиями используется в инструментах конфигурационного управления (Software Configuration Management Tools).