Subversion — это бесплатная система управления версиями с открытым исходным кодом. Subversion позволяет управлять файлами и каталогами, а так же сделанными в них изменениями во времени. Это позволяет восстановить более ранние версии данных, даёт возможность изучить историю всех изменений. Благодаря этому многие считают систему управления версиями своего рода «машиной времени».
Subversion может работать через сеть, что позволяет использовать её на разных компьютерах. В какой то степени, возможность большого количества людей не зависимо от их местоположения совместно работать над единым комплектом данных поощряет сотрудничество. Когда нет того ответственного звена цепи, того контролирующего элемента, который утверждает все изменения, работа становится более эффективной. При этом не нужно опасаться, что отказ от контролирующего элемента повлияет на качество, ведь благодаря сохранению истории изменений, даже если при изменении данных будут допущены ошибки, всегда можно сделать откат изменений к прежнему состоянию.
Некоторые системы управления версиями выступают также в качестве систем управления конфигурацией программного обеспечения (SCM[4]). Такие системы специально созданы для управления деревьями исходного кода и имеют множество особенностей, непосредственно относящихся к разработке программ: они понимают языки программирования и предоставляют инструменты для сборки программ. Subversion не является такой системой, она представляет собой систему общего назначения, которую можно использовать для управления любым набором файлов. Для Вас это будут исходники Ваших программ, а для кого-то другого это будет список продуктов или сведённое цифровое видео.
В начале 2000 года компания CollabNet, Inc. (http://www.collab.net) начала поиск людей для написания системы, способной заменить CVS. CollabNet предлагает комплекс программных средств для совместной работы, известный под названием CollabNet Enterprise Edition (CEE) [5], одним из составляющих которого является срество для управления версиями. В качестве такого средства в CEE использовалась CVS, хотя её недостатки были очевидны с самого начала, и для CollabNet было ясно, что рано или поздно придётся искать замену. К сожалению, CVS стала стандартом де-факто в мире открытого программного обеспечения, причём по той лишь причине, что ничего лучшего в то время не существовало, по крайней мере среди программ со свободной лицензией. И тогда CollabNet решила написать новую систему управления версиями с нуля, сохранив основные идеи CVS, но без ошибок и неудобств, присущих CVS.
В феврале 2000 года CollabNet связалась с автором книги Open Source Development with CVS [6] Карлом Фогелем [Karl Fogel] и предложила ему принять участие в этом новом проекте. Самое интересное то, что Карл как раз тогда уже обсуждал проект новой системы управления версиями со своим другом Джимом Блэнди [Jim Blandy]. Ещё в 1995 году они создали компанию Cyclic Software, которая занималась поддержкой пользователей CVS, и хотя позднее этот бизнес был продан, друзья продолжали использовать CVS в повседневной работе. Их разочарование в CVS привело Джима к обдумыванию улучшения принципов управления версиями. Впоследствии Джим не только придумал название «Subversion», но и разработал основные принципы устройства хранилища Subversion. Карл сразу согласился на предложение CollabNet, а работодатель Джима, RedHat Software, пожертвовал своим сотрудником для этого проекта, предоставив ему возможность работать над Subversion в течение неограниченного времени. CollabNet взяла на работу Карла и Бена Коллинза-Сассмана [Ben Collins-Sussman], и в мае началась работа по проектированию системы. Благодаря нескольким интуитивно точным шагам, предпринятых Брайаном Белендорфом [Brian Behlendorf] и Джейсоном Роббинсом [Jason Robbins] из CollabNet и Грегом Стайном, на тот момент независимым разработчиком, активно участвующим в создании спецификации WebDAV/DeltaV, вокруг Subversion быстро образовалось сообщество активных разработчиков.
Оказалось, что многие люди испытывали похожее чувство разочарования от CVS, и они с радостью приветствовали появившуюся, наконец, возможность изменить положение вещей.Стартовый коллектив разработчиков решил остановиться на достижении ряда простых целей. Они не собирались изобретать велосипед в подходах к управлению версиями, скорее им просто хотелось исправить CVS. Этот коллектив решил, что Subversion должна соответствовать CVS по набору возможностей, сохранить ту же самую модель разработки и избежать недостатков CVS. Хотя перед ними не стояла задача сделать систему, полностью идентичную CVS, было ясно, что Subverion должна быть похожа на CVS, чтобы любой пользователь CVS мог перейти на новую систему без особых затруднений.
И вот, 31 августа 2001 года, спустя четырнадцать месяцев с начала работы, команда прекратила использовать CVS и перешла на Subversion для управления версиями собственного исходного кода — Subversion стала «самодостаточной».
Хотя CollabNet стоит у истоков проекта и продолжает финансировать основную часть работы, оплачивая полный рабочий день нескольких ведущих разработчиков, Subversion развивается подобно большинству проектов с открытым исходным кодом, управляясь свободным и прозрачным набором правил, поощряющих меритократию. Лицензия CollabNet полностью соответствует принципам свободного программного обеспечения Debian — любой человек может устанавливать, изменять и распространять Subversion так, как ему заблагорассудится; для этого не требуется разрешения ни от CollabNet, ни от кого-либо ещё.
Обсуждать возможности Subversion удобнее всего в разрезе её улучшений по сравнению с CVS. Суть некоторых рассматриваемых здесь возможностей может быть не совсем понятна читателям, которые плохо знакомы с CVS. Если же вы совсем не имеете представления об управлении версиями, то вам лучше сначала прочитать главу 2, «Основные понятия», где даётся доступное введение в управление версиями.
Subversion предоставляет следующие возможности:
CVS следит только за историей отдельных файлов, тогда как Subversion использует «виртуальную» файловую систему с возможностями управления версиями, которая способна отслеживать изменения во времени целых структур каталогов. Под управление версиями попадают и файлы, и каталоги.
Каждый набор изменений либо попадает в хранилище целиком, либо не попадает туда вовсе. Это позволяет разработчикам создавать и фиксировать изменения логически оправданными кусками, предотвращая тем самым проблемы, которые могут возникать в тех случаях, когда только часть необходимых изменений помещается в хранилище успешно.
Каждый файл и каталог имеет собственный набор свойств, представленных в виде названия и значения. Вы можете создавать и сохранять любые необходимые пары названий свойств и их значений. Свойства файлов точно так же находятся под управлением версиями, как и их содержимое.
В Subversion используется абстракция доступа к хранилищу, что позволяет реализовывать самые разные сетевые механизмы доступа. Subversion может быть подключена к серверу HTTP Apache в виде модуля, что даёт ей огромное преимущество с точки зрения устойчивости работы и способности к взаимодействию, а также предоставляет прямой доступ к существующим возможностям этого сервера, включая установление личности, проверку прав доступа и сжатие информации при передаче. Кроме того, имеется лёгкий самостоятельный сервер Subversion, который использует собственный протокол взаимодействия с клиентами и может легко туннелировать данные через SSH.
Subversion обнаруживает различия между файлами с помощью специального бинарного алгоритма, который одинаково работает как с текстовыми, так и с бинарными файлами. Файлы записываются в хранилище в сжатом виде независимо от их типа, а различия между отдельными версиями могут передаваться по сети в обоих направлениях.
Плата за использование веток и меток не должна быть пропорциональна размеру проекта. Subversion создаёт ветки и метки путём простого копирования проекта, используя механизм, похожий на жёсткие ссылки в файловых системах. Благодаря этому, операции по созданию веток и меток занимают немного времени.
Subversion не имеет исторического багажа. Она реализована в виде набора динамических библиотек на языке C, API которых хорошо известен. Это делает Subversion чрезвычайно удобной для сопровождения системой, пригодной для взаимодействия с другими приложениями и языками программирования.
Общий взгляд на устройство Subversion показан на рисунке 1.1, «Архитектура Subversion».
Рисунок 1. Архитектура Subversion
На одной стороне схемы изображено хранилище Subversion, в котором хранится информация с версиями. На противоположной стороне показана программа-клиент Subversion, которая управляет локальными отражениями различных фрагментов этих данных (также называемыми «рабочими копиями»). Между этими сторонами проложены различные маршруты, проходящие через разные слои доступа к хранилищу[7]. Некоторые из этих маршрутов используют компьютерные сети и сетевые сервера, чтобы достичь хранилища, в то время как другие маршруты в сети не нуждаются и ведут к хранилищу напрямую.
Установленная Subversion имеет несколько компонентов. Ниже приводится краткий обзор того, что вы получаете. Не тревожьтесь, если краткие описания заставляют вас чесать затылок, в этой книге есть еще много страниц, посвященных облегчению вашего замешательства.
Клиент с интерфейсом командной строки.
Программа, показывающая состояние (в пределах ревизий существующих элементов) рабочей копии.
Инструмент прямого управления хранилищем Subversion.
Инструмент для создания, настройки или восстановления хранилища Subversion.
Программа для фильтрации дамповых потоков хранилища Subversion.
Подключаемый модуль для HTTP-сервера Apache, использующийся для предоставления сетевого доступа к вашему хранилищу.
Собственный отдельный сервер, запускаемый как процесс-демон и доступный посредством SSH; еще один способ для предоставления сетевого доступа к хранилищу.
Программа для последовательного зеркалирования одного хранилища в другое через сеть.
При условии корректно установленной Subversion вы готовы к старту. Следующие две главы описывают использование svn — CLI-клиента Subversion.
[4] Software Configuration Management
[5] Кроме того, еще существует CollabNet Team Edition (CTE), предназначенный в основном для небольших команд разработчиков.
[6] «Разработка программн с открытым исходным кодом с помощью CVS»
[7] Repository Access (RA) layers
Skip to main content Skip to search
Secondary menu
Home » Блоги » блог пользователя des00 » SVN для чайников. Часть I.
ВТ, 30/03/2010 — 07:22 — des00
Данный цикл статей посвящен введению в использование SVN, с точки зрения обычного пользователя. Статья была написана в помощь моим коллегам для быстрого освоения и использования SVN. Итак начнем с азов.
Данный материал был опубликован в журнале «Компоненты и технологии»
Subversion (SVN) — бесплатная система управления версиями с открытым исходным кодом. SVN позволяет управлять файлами и каталогами, а так же сделанными в них изменениями во времени. SVN предоставляет следующие возможности :
Работа с репозиторием SVN рассмотрена на основе программного обеспечения TortoiseSVN tortoisesvn.net/ версии 1.5.8 и программы сравнения файлов ExamDiff.
подробнее
Primary menu
blog | by Dr. Radut
Subversion (SVN) — это один из многих доступных сегодня вариантов управления версиями. Здесь мы предоставим исчерпывающий обзор того, что такое Subversion, что такое репозиторий SVN и почему вы должны использовать контроль версий с SVN.
Прочтите или перейдите к разделу, который вас больше всего интересует:
➡️ Простое переключение на Helix Core
SVN расшифровывается как Subversion. Итак, SVN и Subversion — это одно и то же. SVN используется для управления и отслеживания изменений кода и ресурсов в проектах.
Subversion используется для хранения текущих и прошлых версий проектов. Subversion — это централизованная система контроля версий с открытым исходным кодом. Он лицензирован под Apache. Это также называется версией программного обеспечения и системой управления версиями.
Subversion раньше была одной из самых популярных систем. Но популярность SVN падает. Однако в нем по-прежнему хранятся миллионы строк. Он даже продолжает активно поддерживаться, хотя и небольшим сообществом открытого исходного кода.
Переход с Subversion (SVN) на более совершенный инструмент
Многие команды перешли с Subversion (SVN) на Helix Core. Это связано с тем, что Helix Core обеспечивает большую скорость, масштабируемость и безопасность, чем SVN. Убедитесь сами, почему пользователи SVN переключаются. Попробуйте Helix Core бесплатно для 5 пользователей.
➡️ переключиться с SVN на Helix Core
Репозиторий SVN представляет собой набор файлов с полной историей изменений.
📘Связанный ресурс: Подробнее о репозиториях SVN
SVN фактически является централизованной системой контроля версий. Это отличается от распределенных систем, таких как Git.
Централизованное управление версиями означает, что история версий хранится на центральном сервере. Когда разработчик хочет внести изменения в определенные файлы, он загружает файлы с этого центрального сервера на свой компьютер. После внесения изменений разработчик отправляет измененные файлы обратно на центральный сервер.
Теперь, когда мы ответили на вопрос «Что такое SVN?» давайте углубимся в вопрос «Как работает Subversion?» Вот обзор того, как работает SVN.
Изначально SVN разрабатывался как интерфейс командной строки. Это означает, что вы должны открыть терминал и ввести текстовые команды.
Для работы Subversion установка SVN требует двух основных элементов:
Файлы на вашем компьютере называются рабочими файлами. Это файлы, в которых каждый пользователь вносит изменения. Затем пользователи фиксируют свои изменения на сервере SVN.
Каждый раз, когда пользователь фиксирует изменение, SVN управляет им и записывает его, создавая новую версию. Как и в большинстве вариантов контроля версий, пользователи обычно работают с самой последней версией. Но если нужна более старая версия, вы можете вернуться к более ранней версии.
Существует ряд широко используемых инструментов и клиентов Subversion. Например, TortoiseSVN — один из самых популярных инструментов Subversion.
Вы также можете использовать инструменты для размещения Subversion, такие как Helix TeamHub.
Популярен контроль версий с помощью SVN. Но правильный ли это выбор для вашей команды? Вот некоторые проблемы, с которыми вы столкнетесь при управлении версиями с помощью SVN.
Самая распространенная жалоба на SVN — это утомительная модель ветвления. Ветки позволяют вам работать над несколькими версиями вашего кода одновременно.
Что такое модель ветвления SVN? В Subversion ветки создаются как каталоги внутри сервера. Многим разработчикам не нравится такая структура каталогов. Но проблемы на этом не заканчиваются.
SVN версии 1.6 представила концепцию под названием конфликтов деревьев. Конфликты деревьев — это конфликты, вызванные изменениями в структуре каталогов, и они происходят часто. Поскольку SVN не позволяет вам фиксировать ваши изменения при конфликте дерева, это усложняет реализацию стратегии ветвления в SVN.
Для фиксации изменений Subversion требует подключения к центральному репозиторию.
Здесь хорошо бы повторить древнюю поговорку о контроле версий: «Коммитить раньше, коммитить часто».
Учитывая эту мудрость, использование SVN без подключения к центральному репозиторию бессмысленно. Например, если вы кодируете в автономном режиме — например, во время полетов — SVN не позволяет вам зафиксировать центральное репо, пока вы не восстановите соединение.
Если у вас несколько репозиториев, все становится сложнее.
Слияние — еще одна большая проблема, на которую часто жалуются разработчики SVN. Если вы работаете с историей, в которой вносится и фиксируется набор изменений, а затем вносится еще одно изменение (т. е. линейное) и фиксируется, слияние будет простым.
Ситуация усложняется, когда два или более разработчиков работают над одним и тем же кодом, и вам нужно объединиться. В этом случае SVN дает сбой, и разработчикам приходится разрешать конфликты вручную, на что тратятся часы времени разработчиков.
SVN сталкивается со многими проблемами. Так почему же SVN все еще используется? Есть 2 большие причины: стоимость и инерция.
Если вы переросли Subversion, у Perforce есть корпоративное программное обеспечение для управления версиями, которое позволяет вам масштабироваться без ограничений. Этот контроль версий — Helix Core.
Helix Core — это централизованный контроль версий со всеми преимуществами SVN без проблем.
Вы получите:
Helix Core идеально подходит для совместной работы, масштабируемости и гибкости. Попробуйте полную версию Helix Core. Это бесплатно для 5 пользователей и 20 рабочих мест.
➡️ перейти на Helix Core
Subversion — это место, где разработчики программного обеспечения могут создавать программный код, доступный каждому. позже они могут выполнять код по своему усмотрению, включая приложение для загрузки текущих версий или ревизий кода. Это сотрудничество между большими и меньшими сообществами позволяет создавать такие вещи, как инструменты, серверное программное обеспечение, плагины, утилиты, игры, а также такие огромные проекты, как операционные системы.
SVN (Subversion) — это бесплатный исходный код или система управления версиями с открытым исходным кодом. Это означает, что subversion обрабатывает каталоги и файлы и даже внесенные в них изменения. Это позволяет вам получить предыдущие версии вашей информации или оценить историю изменения ваших данных. В связи с этим многие люди считают VCS чем-то вроде машины времени.
Разрешения Subversion для использования отдельными лицами на отдельном компьютере могут работать в сети. На уровне, он может изменять и обрабатывать один и тот же набор данных из своих конкретных мест, что способствует сотрудничеству многих людей. Продвижение могло бы происходить дальше без единственного канала, через который должно происходить каждое изменение. Кроме того, из-за работы над версиями вам не нужно беспокоиться о компенсации за сбой канала. Если в данные внесено несколько неточных изменений, просто отмените изменение.
Некоторые VCS (системы контроля версий) являются дополнительными системами SCM (управление конфигурацией программного обеспечения). Системы специально настроены для обработки деревьев исходного кода и имеют несколько характеристик, характерных для разработки программного обеспечения. Например, это могут быть родные языки программирования или инструменты для разработки программного обеспечения. Это обычная система, которую можно использовать для обслуживания любого набора файлов. Эти файлы для вас могут быть исходным кодом, а для других они могут варьироваться от списка покупок до видео и так далее.
Subversion (SVN) использует центральную базу данных, которая включает в себя все, что управляется вашей версией файла, с полной историей. Базы данных также признаются репозиторием. Репозиторий обычно существует на файловом сервере, на котором работает серверная программа SVN, предоставляющая контент клиентам SVN, таким как TortoiseSVN, по запросу. В случае, если вы просто создаете резервную копию одной вещи, сделайте резервную копию своего репозитория, поскольку он является конечной основной копией всех данных.
Изначально создавался как интерфейс командной строки. Это означает, что вы откроете терминал и введете текстовые команды.
Ключевые аспекты, необходимые для работы установки Subversion (SVN), перечислены ниже:
Рабочими файлами называются локальные копии файлов на вашем компьютере. Каждый пользователь может использовать эти файлы для внесения изменений. Затем пользователи посвящают свои модификации серверу Subversion, также известному как репозиторий. Каждый раз, когда пользователь вносит изменения, subversion обрабатывает и регистрирует изменения в новом варианте. Как и почти все VCS, пользователи обычно работают с последней версией. Хотя требуется более старый вариант, так как вы можете вернуться к предыдущей версии.
В настоящее время существуют различные коммерческие системы управления версиями, такие как Git, которые несколько лет назад завоевали спрос на подрывную деятельность. Тем не менее, SVN все еще существует по двум причинам: затраты и инерция.
Подрывная деятельность выходит за рамки общепринятых границ архитектуры для обсуждения вопросов, затрагивающих насущные и долгосрочные проблемы социального, экономического и экологического здоровья. Удобные проекты церквей, жилых домов, многофункциональных сообществ, школ, общественных организаций и общественных мест позволяют вносить постепенные изменения в программу и используемое здание, которые будут актуализированы с течением времени.
Основные характеристики SVN:
Если вы планируете быстро меняющуюся среду с огромными возможностями повышения вашей профессиональной самодеятельности, ИТ-услуги Subversion — это то, что вам нужно. Subversion IT Services может определить для вас правильную карьеру.
ИТ-служба Subversion получает исключительные преимущества, карьерный рост и достойное вознаграждение. Предоставление вам наилучших возможностей, способность достичь стабильности в вашей жизни и устранение связей, которые мешают вам.
SVN использует модель межфайлового ветвления Perforce для выполнения ветвлений и тегирования. Филиал может быть отдельной линией развития. Тегирование указывает на назначение репозитория в определенный момент времени, чтобы его можно было легко получить в будущем. В SVN единственным отличием между тегами и ветвями является способ их использования.
Каждая версия во всех ветвях обрабатывает записи файла до периода времени копии, а также любые изменения, выполненные с тех пор.