Что такое управление версиями и зачем оно вам нужно? Давайте разбираться.
Система управления версиями(СУВ) - это система, сохраняющая изменения в одном или нескольких файлах, чтобы их потом можно было вернуть к определенному состоянию. Например, для программистов это будут версии кода, к которым можно быстро вернуться. Для юристов, пригодится эта система, чтобы, например, быстро вернуться к определенной версии документа. Для музыкантов, версию аранжировки или мелодии. Для дизайнеров к определенному виду изображения или макета. Так же такие системы при потере каких-то файлов, помогают быстро все восстановить.
Вы можете сказать, а почему бы просто не копировать файлы в другой каталог периодически. Некоторые так и делают, а некоторые даже дают имена каталогам с текущей датой. Но такой подход не всегда удобен. Можно забыть, что ты не в том каталоге и внести изменения там, где не надо.
Для решения таких проблем придумали локальные СУВ. Такая система устанавливаются на ПК вместе с простой базой данных, в которой хранятся все нужные изменения данных. Одной из популярных таких СУВ является rcs. Принцип этой системы, заключается в работе с наборами патчей. Патч - это файл, который описывает какие изменения были внесены в файл. Благодаря им, можно пересоздать любой файл на любой момент времени, последовательно накладывая эти патчи на файл.
Локальная система хорошо справляется со своими обязанностями, пока не возникнет необходимость сотрудничать с разработчиками за другими компьютерами. И тут пришлось придумать централизованные СУВ. Такие, как Subversion или Perforce. В таких системах есть центральный сервер, на котором хранятся все файлы, нужные для отслеживания. Клиенты получают копии файлов с этого сервера и уже работают с ними. Примерно, как на следующей схеме.
В таких системах, есть масса преимуществ. Здесь, каждый знает, чем занимается. Такие системы легче администрировать и до недавнего времени, такие системы использовались повсеместно. Но как всегда, есть недостатки. Самый очевидный, это сервер. Любое выключение сервера, останавливает работу всех и никто не может сохранить свои версии файлов. Ну а если выходит из строя жесткий диск на таком сервере, то вы теряете, вообще, все. Ну кроме только что рабочих файлов, сохраненных на ПК.
И вот, чтобы избежать таких ситуаций, придумали распределенные системы версий, такие как Git, Bazaar или Darcs. Такие системы работают по следующей схеме.
То есть каждый раз, когда клиент забирает свежую версию файлов, он забирает с собой полную копию данных. На сегодняшний день, это наверное самое эффективное использование таких систем. Во-первых в проекте можно одновременно вести несколько типов рабочих процессов. Во-вторых, если сервер вдруг накроется чем-то темным и волосатым, то можно будет восстановить работу из любого клиентского репозитория.
Заключение.
Вот такие виды систем управления версиями существуют в природе. Какую выбрать для своих проектов, выбирать стоит по вашим потребностям. Далее, наверное, хочу немного описать работу в Git. Хотя, давайте так. Спрошу у Вас, а надо ли писать про Git? Ответы, жду в коменнтах.
Ну и не забывайте подписываться здесь и в телеге.