SVN для чайников. Часть I.

Данный цикл статей посвящен введению в использование SVN, с точки зрения обычного пользователя. Статья была написана в помощь моим коллегам для быстрого освоения и использования SVN. Итак начнем с азов.

Данный материал был опубликован в журнале "Компоненты и технологии"

Введение

Subversion (SVN) — бесплатная система управления версиями с открытым исходным кодом. SVN позволяет управлять файлами и каталогами, а так же сделанными в них изменениями во времени. SVN предоставляет следующие возможности :

  1. Контроль изменений каталогов. SVN использует «виртуальную» файловую систему с возможностями управления версиями, которая способна отслеживать изменения во времени целых структур каталогов
  2. Настоящая история версий. SVN делает возможным добавление, удаление, копирование и переименование как файлов, так и каталогов. При этом каждый вновь добавленный файл начинает жизнь с чистого листа, сохраняя собственную историю изменений
  3. Атомарная фиксация изменений. Каждый набор изменений либо попадает в хранилище целиком, либо не попадает туда вовсе. Т.е. если при фиксации изменений проекта произошла ошибка при обработке файла, то изменения всего проекта не будут зафиксированы
  4. Метаданные с версиями. Каждый файл и каталог имеет собственный набор свойств, представленных в виде названия и значения. Вы можете создавать и сохранять любые необходимые пары названий свойств и их значений. Свойства файлов точно так же находятся под управлением версиями, как  их содержимое
  5. Единый способ работы с данными. SVN обнаруживает различия между файлами с помощью специального бинарного алгоритма, который одинаково работает как с текстовыми, так и с бинарными файлами. Файлы записываются в хранилище в сжатом виде независимо от их типа, а различия между отдельными версиями могут передаваться по сети в обоих направлениях
  6. Эффективные ветки и метки. SVN создаёт ветки и метки путём простого копирования проекта, используя механизм, похожий на жёсткие ссылки в файловых системах. Благодаря этому, операции по созданию веток и меток занимают немного времени.


Список основных терминов

  1. Репозиторий (repository) — централизованное хранилище исходных кодов, рабочих материалов и документации. Любое количество клиентов подключается к хранилищу и читает или записывает эти файлы
  2. Рабочая копия/working copy (WC) — обычное дерево каталогов на компьютере, содержащие набор файлов для работы над проектом. Изменения в рабочей копии не доступны для других пользователей репозитория, до тех пор пока они не будут зафиксированы.
  3. Trunk — основное направление разработки
  4. Branch (''Ветка'') - направление разработки, которое существует независимо от другого направления, но имеет с ним общую историю. Ветка всегда берет начало как копия чего-либо и движется от этой точки, создавая свою собственную историю
  5. Tag (''Метка'') — выделенная явно, через создание отдельной папки версия файлов проекта в определенный момент времени.
  6. Revision — номер ревизии репозитория, в пределах репозитория номер ревизии уникальная величина
  7. Checkout – команда, которая выполняет начальное получение проекта из репозитория в WC.
  8. Commit – команда, которая выполняет фиксацию изменений файлов проекта в WC в Репозиторий.
  9. Update – команда, которая выполняет обновление файлов проекта в WC из репозитория
  10. Revert – команда, которая выполняет отмену любых изменений в файлах проекта в WC на основе номера ревизии репозитория.
  11. Merge – команда, которая выполняет слияние файлов из разных веток проекта и помещает результат слияния в WC.
  12. Conflict – ситуация, возникающая при фиксации изменений, когда одни и те же файлы изменяли несколько разработчиков.
  13. Resolve – набор правил по разрешению возникающих конфликтов.
  14. Import – команда, для быстрого копирования дерева файлов в Репозиторий.
  15. Export – команда, для экспорта проекта, отличается от checkout тем, что не создает в папках проекта служебную информацию.
  16. Switch – команда, которая выполняет переключение WC на другую ветку разработки.
  17. Create, Add, Delete, Copy, Move, Rename – команды для управления файлами и папками в репозитории или WC.

Программное обеспечение

Работа с репозиторием SVN рассмотрена на основе программного обеспечения TortoiseSVN tortoisesvn.net/ версии 1.5.8 и программы сравнения файлов ExamDiff.

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

re: error

Решил поставить данную систему, посмотреть, как работает.

После установки создал папку test, зашел в нее и запустил repository browser.

При попытке создать репозиторий ругается - unable to open an ra_local session URL и unable to open repository "file:///C:/test/1.txt"

des00 аватар

сначала нужно сделать

сначала нужно сделать репозиторий. для этого нужно создать папку репозитория на диске и в ней запустить команду Create Repository Here. Только потом можно запускать браузер репозитория с указанием пути до локального репозитория.

Уточните пожалуйста...

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

Так как все же лучше осуществлять перемещение папок и файлов? В рабочей копии или средствами репозитория?

SVN уже труп давно,

SVN уже труп давно, используёте git и будет вам щастье!

des00 аватар

Вы абсолютно правы. Но во

Вы абсолютно правы. Но во первых : 

Суть данных статей не сказать "делай так", а показать "как можно делать". Все это идет в контексте планирования проекта и постановки задач. А это можно показывать на любой системе контроля версий. Мне git избыточен. А на вкус и цвет все фломастеры разные 

А если я например хочу чтобы

А если я например хочу чтобы эта папка больше не была репозиторием как это сделать?

des00 аватар

Непонятно какая папка. В SVN

Непонятно какая папка.

В SVN репозиторий либо есть, либо его нет. Если вам папка репозитория не нужна, то просто удалите ее. Но понимайте последствия.

Если вы хотите вывести рабочую копию из под контроля SVN сделайте export

Очень полезная статья

Спасибо за статью. Все очень понятно и доходчиво )

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Syntax highlight code surrounded by the {syntaxhighlighter SPEC}...{/syntaxhighlighter} tags, where SPEC is a Syntaxhighlighter options string or "class="OPTIONS" title="the title".
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <p> <span> <s> <strike> <div> <h1> <h2> <h3> <h4> <h5> <h6> <img> <map> <area> <hr> <br> <br /> <ul> <ol> <li> <dl> <dt> <dd> <table> <caption> <tbody> <tr> <td> <em> <b> <u> <i> <strong> <del> <ins> <sub> <sup> <quote> <blockquote> <pre> <address> <code> <cite> <embed> <object> <param> <strike>
  • Использовать как разделитель страниц.

Подробнее о форматировании