Представьте себе программное обеспечение, которое создает контрольные точки в вашей работе и позволяет вам вернуться к этим контрольным точкам, когда вы хотите. По сути, это означает, что вы снова вернетесь к своей работе. Вернувшись к такой контрольной точке, вы также можете отклониться от первоначального выбранного вами пути. Это именно то, что системы контроля версий делают для вас!
При использовании контроля версий основной код присутствует в одном центральном хранилище или распределяется по многим хранилищам. У каждого, кто работает над кодом, есть локальная копия того, над чем он работает в своей локальной или удаленной системе. Эта локальная копия может быть файлом, некоторыми файлами и каталогами или целым хранилищем, в зависимости от программного обеспечения. Программное обеспечение системы контроля версий помогает в управлении этим кодом. Помимо этого, непрограммисты могут также использовать такое программное обеспечение, например, для управления документами .
В этом посте я предложу краткий обзор опций программного обеспечения для контроля версий , которые в настоящее время имеются в нашем распоряжении. Программное обеспечение для контроля версий в целом разделено на две категории — централизованное и распределенное. Централизованные системы имеют единую центральную копию кода на сервере, и разработчики вносят изменения только в эту центральную копию. В распределенных системах у каждого пользователя есть копия кода с полной историей проекта.
Гит
Git, которая является распределенной системой контроля версий, является, пожалуй, самой популярной системой контроля версий на сегодняшний день. Он был разработан Линусом Торвальдсом для решения проблемы скорости в существующих системах контроля версий. Широкий круг организаций по всему миру предпочитают, чтобы Git управлял своим кодом, поскольку Git предоставляет огромный набор функций.
С появлением популярных сайтов, таких как GitHub, GitLab и BitBucket, проверка кода с использованием git стала очень простой . Вот почему новые организации предпочитают Git другим.
Известные интернет-гиганты, которые используют Git для контроля версий, это Twitter и Quora . На самом деле, работа с открытым исходным кодом Twitter на GitHub . По состоянию на март 2014 года их проект Bootstrap является самым популярным репозиторием на GitHub с около 67 000 звезд и более 24 000 вилок!
Если вам интересна философия разработки Git, вот видео о техническом выступлении Линуса Торвальдса в Google по Git . Он говорит о проблемах с CVS и SVN и о том, как Git решает их.
Если вы новичок в Git, вы можете попробовать этот урок для начинающих .
Subversion (SVN)
Subversion была создана как альтернатива CVS (Concurrent Versions System), которая существует уже около трех десятилетий. Таким образом, Subversion предлагает лучшие возможности CVS с некоторыми улучшениями. Subversion делает акцент на централизованном коде, тогда как другие популярные системы контроля версий сегодня «децентрализованы» (или распространяются).
Хотя Subversion преодолевает некоторые недостатки CVS, у нее есть свои недостатки. Subversion часто оказывается медленной и не имеет определенных функций своих коллег. Например, в ветвлении Subversion отсутствуют многие функции по сравнению с Git или Mercurial.
С Subversion ветви создаются централизованно, а не на вашем локальном компьютере, что означает, что не может быть двух ветвей с одинаковым именем. Как объясняет Линус в своем выступлении, связанном выше, также могут быть ветки от «test1» до «test5000», что очень усложняет понимание! Subversion также осуществляет странное переименование файлов . Он создает копию файла или каталога с новым именем и удаляет тот, который связан со старым именем.
В последние годы многие популярные организации с открытым исходным кодом, такие как Rails и PHP , перешли от Subversion к Git.
Зачем вам сегодня использовать Subversion поверх Git или Mercurial, если крупные организации уходят от него? Subversion позволяет вам ограничить доступ к определенным каталогам для определенных пользователей, используя авторизацию на основе пути . Та же структура возможна и в Git, но вам придется разделить ваш основной репозиторий на множество меньших и ограничить доступ к одному из необходимых меньших репозиториев. Это делает весь процесс немного сложным.
Для ознакомления с Subversion вы можете воспользоваться этой бесплатной книгой , доступной онлайн в формате HTML или в формате PDF.
ртутный
Mercurial, как и Git, является бесплатной и распространяемой системой с открытым исходным кодом. Основными задачами Mercurials являются высокая производительность, масштабируемость, а также расширенные возможности ветвления и слияния. У него есть преимущества, аналогичные Git, но есть и некоторые недостатки .
Хотя все началось примерно в то же время, что и Git, в настоящее время Git имеет преимущество. Одна организация, которая перешла с сервера Subversion (с зеркалом Git) на Mercurial, — это Facebook . Основной причиной, по которой они выбрали Mercurial вместо Git, является чистый модульный код Python Mercurial, который было легче расширять. В результате инженеры Facebook активно участвуют в Mercurial.
Если вы предпочитаете Mercurial, а не Git, вы можете разместить свой код в BitBucket .
Для учебника для начинающих по Mercurial, вы можете проверить Hg Init .
Известные упоминания
Хотя мы рассмотрели самые популярные системы контроля версий, таких систем довольно много . Одним из них, как уже упоминалось, является CVS (Concurrent Versions System) , которая существует с 80-х годов. Он широко использовался до появления Subversion и Git. CVS позволяла пользователям регистрировать свои изменения в порядке поступления заявок и позволяла обрабатывать и редактировать только последнюю версию кода. Это означало, что вам нужно было сначала зафиксировать свой код, если вы не хотите включать изменения всех остальных!
Следует упомянуть еще одну систему контроля версий — Perforce . Это коммерческая система контроля версий, используемая такими компаниями, как NVIDIA и Ubisoft . Perforce также имеет плагин Git для интеграции с вашими существующими репозиториями Git.
Еще один вариант — базар . Как и Git и Mercurial, Bazaar является распределенной системой контроля версий и продвигается под лозунгом «контроль версий для людей». Если вы заинтересованы, вы можете проверить их хорошо написанную документацию .
Вывод
Как видно из этого списка , у вас есть много вариантов, когда речь идет о системах контроля версий. То, что вы решите использовать, в значительной степени зависит от ваших требований и, в определенной степени, от вашего вкуса. Как правило, люди выбирают систему, с которой у них уже есть некоторый опыт. И я должен отметить, что многие другие сервисы, такие как Google Docs, предоставляют базовый контроль версий, и вы должны рассмотреть более простой сервис, подобный этому, если ваши потребности минимальны.
Если у вас есть опыт работы с альтернативными вариантами контроля версий, сообщите нам об этом в комментариях.