Найти тему

Системы управления версиями.

Что такое управление версиями и зачем оно вам нужно? Давайте разбираться.

Система управления версиями(СУВ) - это система, сохраняющая изменения в одном или нескольких файлах, чтобы их потом можно было вернуть к определенному состоянию. Например, для программистов это будут версии кода, к которым можно быстро вернуться. Для юристов, пригодится эта система, чтобы, например, быстро вернуться к определенной версии документа. Для музыкантов, версию аранжировки или мелодии. Для дизайнеров к определенному виду изображения или макета. Так же такие системы при потере каких-то файлов, помогают быстро все восстановить.

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

Для решения таких проблем придумали локальные СУВ. Такая система устанавливаются на ПК вместе с простой базой данных, в которой хранятся все нужные изменения данных. Одной из популярных таких СУВ является rcs. Принцип этой системы, заключается в работе с наборами патчей. Патч - это файл, который описывает какие изменения были внесены в файл. Благодаря им, можно пересоздать любой файл на любой момент времени, последовательно накладывая эти патчи на файл.

-2

Локальная система хорошо справляется со своими обязанностями, пока не возникнет необходимость сотрудничать с разработчиками за другими компьютерами. И тут пришлось придумать централизованные СУВ. Такие, как Subversion или Perforce. В таких системах есть центральный сервер, на котором хранятся все файлы, нужные для отслеживания. Клиенты получают копии файлов с этого сервера и уже работают с ними. Примерно, как на следующей схеме.

-3

В таких системах, есть масса преимуществ. Здесь, каждый знает, чем занимается. Такие системы легче администрировать и до недавнего времени, такие системы использовались повсеместно. Но как всегда, есть недостатки. Самый очевидный, это сервер. Любое выключение сервера, останавливает работу всех и никто не может сохранить свои версии файлов. Ну а если выходит из строя жесткий диск на таком сервере, то вы теряете, вообще, все. Ну кроме только что рабочих файлов, сохраненных на ПК.

И вот, чтобы избежать таких ситуаций, придумали распределенные системы версий, такие как Git, Bazaar или Darcs. Такие системы работают по следующей схеме.

-4

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

Заключение.

Вот такие виды систем управления версиями существуют в природе. Какую выбрать для своих проектов, выбирать стоит по вашим потребностям. Далее, наверное, хочу немного описать работу в Git. Хотя, давайте так. Спрошу у Вас, а надо ли писать про Git? Ответы, жду в коменнтах.

Ну и не забывайте подписываться здесь и в телеге.