В этой статье пойдет речь о Subversion (SVN). Статья ориентирована на людей, которые либо впервые услышали об этом, либо слышали часто, но толком не представляют что же это такое и какие преимущества оно дает. Одним словом для новичков.
Итак, как вы могли бы прочитать в wikipedia, Subversion - это свободная централизованная система управления версиями. Subversion часто называют «SVN», по названию клиентской программы.
А теперь человеческим языком.
Subversion - это такое приложение, которое позволяет:
- Хранить столько копий кода разрабатываемой программы, сколько было изменений
- Вернуться к любой из сохраненных копий кода вашей программы в любой момент
- Без проблем одновременно работать над одним файлом нескольким разработчикам
- Сравнивать разные копии кода вашего приложения
- Развивать несколько веток кода продукта одновременно
- Легко и быстро копировать изменения из одной ветки в другую
- Просматривать кто из разработчиков какую строку файла менял
Правда здесь приведены не все возможности, а только те которые позволят новичку начать понимать суть.
Теперь о том как это работает. Чтобы полноценно и комфортно работать нужно 2 вещи.
- Центральный репозиторий на сервере, где установлен Subversion
- SVN-клиент у каждого из разработчиков
Как настроить первое было рассказано в статье Создание и настройка SVN-репозитория в Linux. В результате такой операции мы получаем хранилище нашего кода с настроенным доступом к нему.
Теперь поговорим о второй части. Для Linux очень удобным SVN-клиентом является subclipse (Можно сказать что это полный Linux-аналог TortoiseSVN). Это plugin для eclipse, который добавляет этой IDE функции работы с Subversion. Давайте рассмотрим для начала установку subclipse. Этот процесс будет показан на скринах. Так будет нагляднее. Внизу под каждым изображением будет появляться надпись, которая поясняет каждый шаг. Так же внизу есть стрелки для перехода к следующему и предыдущему шагам. Итак, кликните по первой миниатюре и откроется увеличенное изображение. Загрузка изображения может занять некоторое время (зависит от скорости вашего интернета).
Установка subclipse и Checkout
Теперь познакомимся с основными действиями, которые вам надо будет делать каждый день при работе с с SVN. Список основных действий следует далее.
- Checkout - получение локальной рабочей копии файлов, имеющихся на сервере
- Commit - сохранение, внесенных вами изменений
- Update - обновление файлов вашей рабочей копии до версий имеющихся на сервере
- ShowHistory - просмотр списка изменений для файла или группы файлов
- Compare - визуальное сравнение двух версий одного файла
Подчеркну, что это только базовые возможности Subversion. А так возможностей куда как больше.
Давайте чуть подробнее рассмотрим каждую из перечисленных возможностей.
Checkout. Первым делом чтобы начать работу с некоторым кодом вам необходимо получить локальную копию кода на вашу машину из центрального хранилища (репозитория). Далее изменения вы будете вносить именно в вашу рабочую копию. Все остальные перечисленные действия (кроме может быть Compare) делаются только при наличии CheckOut.
Commit. Когда вы изменили код (добавили какую-нибудь возможность или исправили ошибку), вы можете сохранить свои изменения в центральный репозиторий и ваши изменения станут доступны так же другим участникам команды. Очень важно делать комментарий к изменениям в диалоговом окне subclipse (или другого вашего клиента). Эти комментарии будут храниться в истории версий. По комментариям другой член команды должен легко понять для чего делались эти изменения.
Update. Другие члены команды делают Update для своей локальной копии и получают ваши изменения. При этом если вы работали в одном файле, то ваши изменения и изменения того члена команды, который делал их до того как решил сделать Update будут объединены (merge). Это очень удобно. Однако это так лишь если вы изменяли разные строки (например исправляли разные функции или просто проблемы находящиеся на разных строках). Если же вы в некоторых местах меняли одинаковые строки, то вы получите ситуацию “Конфликт версий”. Это означает, что вам будет предложено визуально сравнить две версии файла, исправить вручную код в местах конфликта и пометить конфликт как “разрешенный” (исправленный). При визуальном сравнении ваш клиент (subclipse в данном случае) выделит места конфликта цветом. Так что вам легко будет разрешить конфликт.
ShowHistory. Для любого файла или группы файлов (объединенной каталогом) вы можете посмотреть историю изменений. Вы можете для каждой версии видеть комментарий, который был оставлен при операции Commit. Вы можете посмотреть какие файлы еще участвовали в любом Commit’е.
Compare. Так же как и при разрешении конфликта вы можете с помощью этой функции сравнивать визуально две версии одного файла (или просто два файла). При этом цветом будут выделены места, которые отличаются.
Теперь вы можете так же посмотреть все эти операции на скринах. Кликайте по первому, чтобы открыть увеличенную копию изображения. Пояснения к каждому скрину по прежнему находятся внизу.
Мы рассмотрели как делается Checkout выше вместе с установкой subclipse (последние несколько скринов).
Теперь давайте рассмотрим как начать работу с кодом. Нам следует создать проект. Просматривать такие скрины вы уже умеете.
Создание проекта
Теперь рассмотрим две наиболее часто применяемые операции. Это Commit и Update.
Commit
Update
Вот мы и рассмотрели бегло основные особенности Subversion и более детально наиболее часто используемые. Есть еще такие замечательные вещи как создание и работа с ветками (branch, tag) и копирование изменений из одной версии в другую (merge). Об этом я могу рассказать в других статьях. Мне будут интересны ваши отзывы, потому что по ним можно понять о чем бы вы хотели прочитать на страницах блога и помогло ли вам то, что вы прочитали.
Tags: SVN, Инструменты
А для Windows он не подходит?
ЗЫ Капча - зло
Subclipse - это расширение к eclipse. Подходит и для Windows
Да я знаю, просто написано так, будто в Linux больше нет других SVN клиентов. и Subclipse это linux-альтернатива.
Можно сказать что это полный Linux-аналог TortoiseSVN
Есть и другие. Просто Subclipse по функциям повторяет TortoiseSVN и похоже разрабатывается одним и тем же коллективом.. Многие считают, что TortoiseSVN это лучший SVN-клиент для Windows. Те кто хотят того же удобства и в Linux могут получить все это с данным plugin для Eclipse.
У блога уклон на Linux. Поэтому про инструменты Windows часто либо не говорится либо говорится во вторую очередь.
Расскажи как в Eclipse с ветками работать: создавать, сливать. Ковыряюсь уже давно, а разобраться не могу
В принципе точно так же как в TortoiseSVN. Там аналогичные пункты меню есть.