Изучать контроль версий и хорошо его изучать

С чего мне начать изучать системы контроля версий? В прошлом я использовал SVN, Team Foundation и Sourcesafe, но на самом деле я не чувствую, что полностью понимаю, и моя команда, похоже, тоже не понимает.

Какие моменты являются наиболее важными для освоения? Я понимаю, что это отличается от VCS к VCS, но ради этого вопроса мы можем предположить, что Subversion - это VCS, о которой я больше всего интересуюсь.

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

13 ответов

Решение

Статья в Википедии о Revision Control - отличное место для начала

Ревизионный контроль

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

Не знаете что такое ветка? Иди узнай и как они работают:)

В системе контроля версий с Subversion есть бесплатная онлайн-книга о подрывной деятельности, в которой содержится бесценный справочник.

Я нашел этот полезный Source Control HOWTO от Эрика Раковины

Я думаю, что наиболее важные моменты, которые нужно изучить в отношении систем контроля версий, следующие:

  • ценность небольших, частых проверок / коммитов
  • тегирование, ветвление и слияние
  • откаты
  • Решение конфликта
  • Эксклюзивный и неисключительный контроль
  • непрерывная интеграция
  • Разработка на основе тестов и автоматизированные модульные тесты с системами контроля версий
  • разветвление

Если вы ознакомились с этими основными понятиями, это почти все, что вам нужно знать для контроля исходного кода:)

Есть несколько бесплатных электронных книг на эту тему. Пытаться:

Контроль версий с Subversion: Контроль версий с Subversion

Управление версиями Subversion (PDF): Управление версиями Subversion

Я прочитал и рекомендую первое. Не читал "Управление версиями Subversion", но это выглядит довольно подробно.

Я также, как и вы, никогда не чувствовал себя на 100% комфортно с SVN или SourceSafe.

Проверьте Mercurial. Быстрый старт и Шпаргалки
также отличная шпаргалка от DongWoo Lee (его сайт кажется неактивным, поэтому я отсканировал его и загрузил на свой)

С Mercurial все выглядело намного более гладким и простым, не уверен почему, потому что он не слишком отличается в командах от других.

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

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

Испытывая это явление со многими разработчиками в прошлом, я недавно написал краткий обзор того, что я считаю наилучшими методами контроля версий, в своем блоге.

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

В книге подрывной деятельности, которую упомянул Алекс, я особенно рекомендую главу 1, хотя она может быть на слишком низком уровне, если у вас уже есть некоторый опыт работы с Svn. Глава 4 подробно описывает ветвление и слияние, но оно довольно техническое.

Что мне очень помогло, так это руководство по ежедневному использованию в документации к TortoiseSVN; он охватывает наиболее важные операции в учебном стиле.

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

Но, конечно, я все еще учусь:)

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

ИМХО, лучшим сетевым ресурсом для управления конфигурацией будет проект ACME Брэда Эпплтона

Вы должны прочитать обо всех шаблонах SCM и шаблонах Anti. Все технические термины SCM хорошо определены на этом сайте, и есть много статей о методах ветвления, гибкой SCM и других важных вещах.

Это, вероятно, даст вам достаточно теоретических основ для работы с любым конкретным версией инструмента.

Что касается книги Subversion, то, вероятно, это будет официальная книга Subversion, о которой упоминалось выше. Он доступен онлайн бесплатно или вы можете приобрести печатную версию.

Проверьте GIT. Разговор об этом здесь.

ИМХО, это книга: книга Берзука о моделях СКМ

Контроль версий на примере Эрика Синка хорош, и за ним легко следовать

Другие вопросы по тегам