Изучать контроль версий и хорошо его изучать
С чего мне начать изучать системы контроля версий? В прошлом я использовал SVN, Team Foundation и Sourcesafe, но на самом деле я не чувствую, что полностью понимаю, и моя команда, похоже, тоже не понимает.
Какие моменты являются наиболее важными для освоения? Я понимаю, что это отличается от VCS к VCS, но ради этого вопроса мы можем предположить, что Subversion - это VCS, о которой я больше всего интересуюсь.
Кроме того, если вы можете, пожалуйста, порекомендуйте любые книги на эту тему, которые вы считаете полезными.
13 ответов
Статья в Википедии о Revision Control - отличное место для начала
Пытаясь научить моих коллег, я обнаружил, что его понимание слов в конце было отличным способом начать знакомить его с методами контроля исходного кода.
Не знаете что такое ветка? Иди узнай и как они работают:)
В системе контроля версий с Subversion есть бесплатная онлайн-книга о подрывной деятельности, в которой содержится бесценный справочник.
Я думаю, что наиболее важные моменты, которые нужно изучить в отношении систем контроля версий, следующие:
- ценность небольших, частых проверок / коммитов
- тегирование, ветвление и слияние
- откаты
- Решение конфликта
- Эксклюзивный и неисключительный контроль
- непрерывная интеграция
- Разработка на основе тестов и автоматизированные модульные тесты с системами контроля версий
- разветвление
Если вы ознакомились с этими основными понятиями, это почти все, что вам нужно знать для контроля исходного кода:)
Есть несколько бесплатных электронных книг на эту тему. Пытаться:
Контроль версий с 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, о которой упоминалось выше. Он доступен онлайн бесплатно или вы можете приобрести печатную версию.
Контроль версий на примере Эрика Синка хорош, и за ним легко следовать