Система контроля версий — какая лучше?

Существует множество систем контроля версий файлов. Какая из них лучше? Что выбрать — GIT или Subversion?

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

Системы контроля версий используются не только программистами. Фактически, они будут полезны каждому, кто хотел бы иметь возможность при необходимости вернуться и просмотреть более раннюю версию документа или файла, который был изменен. По сути, популярный Dropbox — это система контроля версий файлов.

В этой статье я перечислю основные отличия системы контроля версий GIT от более консервативного и привычного многим Subversion.

GIT сохраняет локально полную копию репозитория. Subversion хранит историю изменений на сервере

В Subversion репозиторий хранится на сервере — на компьютере сохранены только последние версии файлов. GIT сохраняет на вашем компьютере полную версию всей истории изменений.

Это различие принципиально меняет возможности по работе с документами.

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

Система контроля версий позволяет сравнивать и восстанавливать только те изменения, которые были сохранены в ней. Subversion требует для сохранения (коммита) в репозиторий измененного файла доступа к серверу по сети. GIT может сохранить новую версию файла в любой момент.

Благодаря наличию файлов локально GIT быстрее

Это действительно так — в большинстве операций, которые вы будете выполнять, GIT окажется быстрее, поскольку все происходит локально на вашем компьютере. Конечно, когда вы будете загружать изменения в репозитории на удаленный сервер, это потребует времени. (А держать систему контроля версий только на своем компьютере не очень разумно — особенно при наличии бесплатных хостингов для систем контроля версий). Но коммиты новых версий файлов, сравнение и просмотр изменений происходят практически моментально.

GIT хранит «слепки» файлов в сжатом виде. Subversion хранит изменения в файлах

Это является принципиальным отличием для пользователя — поскольку получаемый результат идентичен.

GIT обеспечивает целостность файлов

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

С GIT очень сложно потерять данные

Поскольку все изменения фактически сохраняются на вашем компьютере, а все изменения GIT на практике только добавляет к репозиторию, очень сложно что-то потерять. Если вы сохранили измененный файл в репозиторий, то его всегда можно будет восстановить к текущему состоянию. А если вы сохранили репозиторий на удаленный сервер командой git push, то вероятность потерять файл стремится к нулю.

Откровенно мне очень понравился GIT. Использование этой системы снимает некоторые ограничения, которые сложно реализовать, используя Subversion. Например, хранение одного репозитория на разных серверах можно, но сложно реализовать, а в GIT это стандартная функциональность. С другой стороны, использование Subverison в некоторых ситуациях может оказаться проще. А любая система контроля версий — это очень значительное улучшение по сравнению с ее отсутствием.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *