Изучение управления версиями и хорошее его изучение

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

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

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

Ответов (13)

Решение

Статья в Википедии о контроле версий - отличное место для начала.

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

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

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

В разделе «Управление версиями с помощью Subversion » есть бесплатная онлайн-книга о подрывной деятельности, которая представляет собой бесценный справочник.

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

Управление версиями с помощью Subversion: Управление версиями с помощью Subversion

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

Я прочитал и рекомендую первое. Не читал «Контроль версий Subversion», но он выглядит довольно подробно.

Я нашел этот полезный HOWTO по управлению исходным кодом от Эрика Стокса.

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

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

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

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

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

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

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

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

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

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

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

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

Проверьте Mercurial . Quickstart и недоделки
также большая Шпаргалка от Dongwoo Ли (его сайт кажется вниз , так что я просмотрел его и загрузил на мой)

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

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

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

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

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

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

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

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

Прочтите это: Как развивается программное обеспечение

ИМХО, это ТАКАЯ книга : книга Берчука о паттернах SCM.