Что такое SVN?
- Введение в SVN
Введение в SVN
SVN (Subversion) — это бесплатный исходный код или VCS с открытым исходным кодом (система контроля версий). Это подразумевает, что Subversion обрабатывает каталоги и файлы, причем даже изменения, внесенные в них. Это позволяет вам получать предыдущие версии вашей информации или оценивать историю изменений ваших данных. В связи с этим многие считают, что VCS — это своего рода машина времени.
Subversion разрешает использовать физические лица на отдельном компьютере и может работать в сети. На уровне, он имеет возможность для многих людей изменять и обрабатывать аналогичный набор информации из своих конкретных мест способствует сотрудничеству. Продвижение могло произойти дальше без единого канала, через который должно происходить каждое изменение. Кроме того, в связи с тем, что работа является версионной, вам не нужно беспокоиться о том, что качество является компенсацией за отказ канала. В случае если несколько неточных изменений в данных просто отменить изменение.
Как работать с Tortoise SVN
Немногие VCS (системы контроля версий) являются системами SCM (управления конфигурацией программного обеспечения). Системы специально настроены для работы с деревьями исходного кода и имеют несколько характеристик, характерных для разработки программного обеспечения. Например, они могут быть родными языками программирования или предоставлять инструменты для разработки программного обеспечения. Это обычная система, которую можно использовать для поддержки каждого набора файлов. Эти файлы для вас могут быть исходным кодом, а для других он может варьироваться от списка покупок до видео и далее.
Определение SVN
Subversion — это место, где разработчики программного обеспечения могут создавать программный код, доступный каждому. позднее они могут выполнять код по своему усмотрению, включая приложение для загрузки текущих версий или версий кода. Это сотрудничество между большими и малыми сообществами позволяет использовать такие инструменты, как серверное программное обеспечение, плагины, утилиты, игры, а также такие масштабные проекты, как операционные системы.
Понимание SVN
Subversion (SVN) использует центральную базу данных, которая включает в себя все, чем управлялась ваша версия файла, с полной историей. Базы данных также признаются в качестве хранилища. Репозиторий обычно существует на файловом сервере, на котором работает программа сервера SVN, предоставляющая контент клиентам SVN, таким как TortoiseSVN, по запросу. В случае, если вы просто заархивируете одну вещь, сделайте резервную копию вашего хранилища, так как оно является окончательной главной копией всех данных.
Как это работает?
Он был изначально создан как интерфейс командной строки. Это означает, что вы откроете терминал и наберете текстовые команды.
Ключевые аспекты, необходимые для настройки Subversion (SVN) для работы, которые упомянуты ниже:
Что такое СИСТЕМА КОНТРОЛЯ ВЕРСИЙ? SVN или GIT?
- Сервер с каждой версией каждого исходного файла
- Сохраните копию на рабочем столе в качестве локальной копии файлов.
Рабочие файлы называются локальными копиями файлов на вашем компьютере. Эти файлы могут использоваться каждым пользователем для внесения изменений. Затем пользователи посвящают свои модификации серверу Subversion, так как он также известен как хранилище.
Каждый раз, когда пользователь вносит изменения, обрабатывает подрывную деятельность и регистрирует изменения в новом варианте. Такие, как в основном каждая VCS, пользователи обычно работают с последней версией. Хотя, более старый вариант необходим, поскольку вы можете вернуться к предыдущей версии.
Почему SVN используется?
В настоящее время существуют различные коммерческие системы контроля версий, такие как Git, которые завоевали спрос на Subversion несколько лет назад. Тем не менее, SVN все еще существует по двум причинам, а именно: расходы и инерция.
- Расход: это с открытым исходным кодом, что означает, что это бесплатно.
- Инерция: исключительно, это только огромный фундамент кода, который создан; может быть сложно переключать системы контроля версий. Subversion с 2004 года и компании, которые ее используют, содержат код миллионов строк. В случае, если вы отказались от использования выполнения subversion, есть организационная VCS, которая позволяет вам масштабировать без границ.
SVN Архитектура
Subversion простирается за пределы традиционных границ архитектуры, чтобы обсудить проблемы, затрагивающие насущные и долгосрочные сообщества социального, экономического и экологического здоровья. Управляемые проекты для церквей, жилья, общин смешанного использования, школ, общественных организаций и общественных мест позволяют постепенно реализовывать изменения в программах и зданиях, которые будут реализовываться с течением времени.
Преимущества СВН
Вот основные особенности SVN:
- Создание версий производится для папок, также содержащих отдельные файлы.
- Существует норма для копирования, удаления, добавления и переименования файлов и папок.
- Атрибуты файлов и папок регистрируются с течением времени, благодаря чему создается полная история.
- Разработчики могут спроектировать и посвятить модификации как самостоятельные единицы управления.
- Это просто для выполнения текущих сетевых функций.
- Двоичные и текстовые файлы сохраняются и управляются совместимым способом.
- Ветки и теги создаются эффективно и быстро.
- SVC прост в использовании различных языков программирования и языков программирования.
Как эта технология поможет вам в карьерном росте?
В случае, если вы планируете создать среду с быстрым темпом и огромной возможностью повысить ценность своего профессионального самосохранения, ИТ-услуги Subversion — это то, что вам нужно. ИТ-службы Subversion могут определить для вас правильную карьерную связь.
ИТ-услуги Subversion получают исключительные преимущества, карьерный рост и привлекательное вознаграждение. Предоставляя вам лучшие возможности, способность достичь стабильности в вашей жизни и устранить связи, которые удерживают вас.
Вывод
SVN использует модель от Perforce межфайлового ветвления для выполнения ветвей и тегов. Филиал может быть отдельной линией разработки. Пометка указывает на обозначение хранилища в определенный момент времени, чтобы его можно было просто получить в будущем. В SVN единственный контраст между тегами и ветвями, а также способ их использования.
Каждая версия во всей ветке обрабатывает записи файла за период времени копирования, кроме того, любые изменения, выполненные с тех пор. Любой может смешать модификации обратно между ветвями. В частности, SVN дает множество преимуществ в отношении качества или контроля, а также может определить эффективную стоимость перехода на промежуточный проект. При условии, что большая часть разработки Java с открытым исходным кодом использует Subversion, и вы можете быть уверены, что он станет надежным вариантом для большинства проектов.
Рекомендуемые статьи
Это было руководство к тому, что такое SVN. Здесь мы обсудили основные понятия, определения, работу и архитектуру с преимуществом SVN. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше —
- Как установить SVN
- Что такое PHP Array?
- Что такое Кафка?
- Что такое VBScript?
- Кафка Инструменты | Архитектура | Компоненты
Источник: ru.education-wiki.com
Настройка SVN
Здравствуй, уважаемый читатель блога LifeExample. При разработке любого более-менее крупного проекта невозможно обойтись без системы контроля версиями (SVN). Настройка SVN может загнать в тупик многих начинающих web разработчиков. Я до недавнего времени также пребывал в замешательстве и больших вопросах относительно установки и настройки SVN.
Дабы уберечь вас от изучения уймы полезной и бесполезной информации, доступной в интернете, я хочу показать вам, как выглядит настройка SVN по шагам, а также рассказать, что такое система контроля версий.
Что такое система контроля версий
Система контроля версий (по англ. Version Control System, сокращенно VCS) состоит из двух частей:
- Сервер, он же хранилище, он же репозиторий — где хранятся все файлы проекта, а также история их изменения.
- Клиент — программа для работы с хранилищем, каждый клиент имеет свою локальную копию файлов проекта, с которой работает разработчик.
VCS предназначена для упрощения совместной разработки проекта, несколькими и более программистами.
Многие начинающие программисты одиночки при написании кода, создают (backup) копии папок, с программой помечая их текущей датой, или порядковым номером.
Вспомните ваш процесс разработки, какого либо проекта. Я уверен, что выше описанная ситуация вам знакома. А сталкивались ли вы с ситуацией, когда вам нужно вернуться не к последней версии, а скажем к одной из сделанных месяц назад?
Проблема в том, что с таким подходом, мы не можем с уверенностью сказать, какие были произведены изменения спустя месяц, и что было сделано на момент создания копии проекта.
Благодаря системам контроля версий, можно не только быть всегда в курсе введенных изменений относительно любой сделанной ранее копии программы, но и вести разработку проекта в команде с другими программистами.
Если вы интересовались вакансиями web разработчиков, то не могли пропустить одного из требований к кандидатам, встречаемое теперь почти в каждом предложении.
Требования к Соискателю
Умение работать с SVN (либо аналогичной системой контроля версий)
Именно система контроля версий Subversion (SVN) применяется в большинстве организаций, поэтому я и расскажу сегодня о работе и настройке с SVN.
Настройка сервера (шаг 1)
Целью статьи является не только познакомить вас с системой контроля версий, но и дать возможность попрактиковаться с её использованием, поэтому сервер я предлагаю разместить локально. Поскольку не у всех есть возможность выделить под него отдельный хостинг.
Примечание! Разработчики не советую пользоваться локальной версией, в режиме работы команды. Локальная версия подходит только для ведения проекта одним программистом.
Чтобы самостоятельно настроить SVN server, можно скачать, одну из предлагаемых на официальном сайте , программ с SVN сервером в комплекте, или же ограничиться чистым SVN сервером и скачать Subversion 1.7.
Так, как статья рассчитана на новичков, и предполагает что, вы уважаемые читатели, совершенно не понимаете, как самостоятельно установить и настроить SVN, я покажу вам самый кротчайший путь, от неведения к действиям, с помощью популярной в области систем контроля версий программы TortoiseSVN.
TortoiseSVN — это бесплатный клиент для системы контроля версий Subversion, выполненный как расширение оболочки Windows. Вся прелесть программы заключается в том, что она не только является клиентом, но и может автоматически в несколько кликов мыши создать локальный SVN сервер, пригодный для работы.
Таким образом, чтобы настроить SVN сервер, первым делом нам нужно скачать и установить программу TortoiseSVN.
После инсталляции программы, в контекстном меню проводника должны появиться характерные для TortoiseSVN пункты меню.
Организуем хранилище наших проектов, для этого на диске С: создадим новый каталог с именем SVNrepository , откроем его, и щелкнув правой кнопки мыши, в контекстном меню выбирем TortoiseSVN->»Создать здесь хранилище» .
Каталог SVNrepository должен заполниться файлами вышеприведенной структуры, после чего можно считать, что мы завершили настройку SVN сервера и готовы к работе.
Установка клиента (Шаг 2)
Как это ни странно но, клиентское приложение мы уже установили, и можем благополучно пользоваться им. Запустить его привычным всем методом через кнопку пуск или с ярлыка на рабочем столе – не получится, поскольку оно уже успешно работает.
При установке инсталер TortoiseSVN создал соответствующие службы, которые теперь будут запускаться автоматически с запуском windows. Благодаря этим службам в контекстном меню проводника стали доступны новые пункты меню.
Собственно с их помощью, и будет происходить вся последующая работа с системой контроля версий. Такая полезная интеграция клиента SVN, прямо в проводник windows сократит до нуля, время на изучение интерфейса нового клиента, ведь в наше время все привыкли пользоваться мышкой и контекстным меню.
Настройка структуры хранилища (Шаг 3)
Закончив настройку составляющих SVN, сервера и клиента, я предлагаю немножко попрактиковаться, и посмотреть, как же все это должно выглядеть и работать.
В документации к данной программе разработчики советуют использовать в хранилище три определяющих каталога:
/trunk /branches /tags
В каталоге trunk расположим основной проект, над которым будем вести работу.
Каталог branches будет содержать последующие копии ответвлений проекта, или проще говоря – версий проэкта.
Не совсем ясным для меня осталось назначение папки tags для копий меток, пока в голове нет четкой картины, где бы она могла понадобиться.
Разработчики в руководстве упоминают о том, что любая организация – каталога, имеет право на существование, и определяется только требованиями конкретного проекта. Именно поэтому, я создам в репозитории (хранилище), всего два каталога.
/trunk /branches
В trunk я намерен хранить текущую реализацию проекта, а в branches все разрабатываемые в прошлом и в дальнейшем версии.
Т.е. формально я представляю себе репозиторий такого вида:
/trunk /release v2 /branches /release v1 /release v2 /release v3
Из этой структуры следует, что на момент разработки версии v3 в текущий момент успешно выпущена и поддерживается версия v2.
Чтобы создать каталоги в хранилище, нужно открыть контекстное меню папки SVNrepository и выбрать пункт TortoiseSVN->»Обозреватель хранилища» . Откроется окно для работы с хранилищем.
В котором с помощью все того же контекстного меню, можно будет создать необходимые каталоги.
Попутно добавим в /branches каталог /release v1 , в котором будут храниться версии первой разрабатываемой версии проекта.
Заметьте при создании или редактировании файлов и каталогов, мы можем оставлять комментарии, для упрощения дальнейшей навигации по хранилищу.
Основа для работы готова, закончена настройка SVN сервера под конкретный пример, теперь давайте начнем разрабатывать наш тестовый проект.
Создание рабочей копии (Шаг 4)
В папку branches/release v1 добавим файл ReadMe.txt нашего, пока не существующего, проекта. Соответственно, нужно изначально подготовить данный файл, и осилить написать туда пару строчек текста, зачем, расскажу позже.
Перенеся файл в репозитории, мы наконец-то можем возрадоваться началу процесса разработки проекта и контроля его версий. Теперь откройте любой каталог у себя на компьютере, в котором планируете создавать проект. Пусть это будет: C:/Project1 .
В контекстном меню выберите пункт «SVN извлечь», укажите в качестве URL хранилища, путь до папки с версией v1:
Подтвердите выбор, нажатием на кнопку «Ок», и наблюдайте ха процессом извлечения, новой рабочей копии из репозитория.
Обратите внимание, на папке проекта C:/Project1 появилась пиктограмма в виде зеленой галочки. Это означает, что все прошло успешно и рабочая копия полностью синхронизирована с хранилищем.
Изменение файлов проекта (Шаг 5)
Следующим шагом немного изменим, содержимое файла C:Project1ReadMe.txt , можете внести любые изменения, на свое усмотрение.
Как только мы сохраним изменения система SVN установит на файле пиктограмму восклицательного знака, означающую то что, данный файл в текущей рабочей копии был изменен. Такой же знак отличия получит и папка в которой находится редактируемый файл.
После завершения всех изменений, нужно выгрузить рабочую копию обратно в репозиторий, что бы она была зафиксирована, и получила возможность быть восстановленной в любое время.
Применение изменений файлов (Шаг 6)
В контекстном меню папки Project1 выберем пункт «SVN фиксировать», система предложит указать комментарии, перед тем как файлы будут загружены на сервер. Не ленитесь их заполнять, поскольку в последствии, они сыграют вам на руку при необходимости отката версий.
Кроме того в открывшемся окне, мы можем произвести сравнение файла с предыдущими его версиями. Если вы следовали моим советам, и изменяли строки ReadMe.txt , то сможете оценить прелесть работы встроенной в TortoiseSVN программы для стравнения текстовых файлов. Для этого выберите в контекстном меню, пункт «Cравнить с базой».
На первый взгляд может показаться сумбурно, и не понятно, но спустя некоторое время, вы оцените удобность работы данного приложения.
Подтвердив фиксацию, изменений, папка Project1 , вновь приобретет пиктограмму галочки, и вы сможете дальше работать с копией, а все изменения зафиксируются в хранилище, и в последствии, мы запросто сможем восстановить оду из копий измененных файлов.
Откат к предыдущей версии (Шаг 7)
Если спустя некоторое время, стало ясно, что все идет не так, и мы хотим вернуть файлу прежний вид, сделать это можно удобным способом. В контекстном меню файла C:Project1ReadMe.txt выберем пункт «Обновить до ревизии»
Заметьте что по умолчанию, система SVN предлагает обновиться до HEAD ревизии, т.е. до последней, но мы можем указать номер ревизии, к которой нужно откатить файл. Если номер не известен, можно использовать Журнал ревизий, и отметить именно ту версию, которая нас больше всего устраивает. Подтвердив выбор кнопкой «ОКhttp://lifeexample.ru/razrabotka-i-optimizacia-saita/nastroyka-svn.html» target=»_blank»]lifeexample.ru[/mask_link]
Subversion или SVN
С точки зрения пользователя хранилище Subversion представляет собой «двумерную» файловую систему. Объекты в хранилище (файлы и директории) идентифицируются двумя «координатами»: именем и номером ревизии. Другими словами, хранилище представляет собой массив мгновенных снимков (ревизий) дерева файлов и директорий, индексируемый номером ревизии. Каждый такой снимок — обычная (одномерная) файловая система.
Имена файлов
Имя объекта файловой системы в Subversion образуется по тем же правилам, что и в UNIX-подобных операционных системах: существует только одна корневая директория, элементы пути разделяются косой чертой («/»). Объектами файловой системы являются файлы и директории (а также символические ссылки, которые эмулируются из обычных файлов путём установки атрибута svn:special)
Номер ревизии используется в двух различных контекстах:
оперативной ревизии (англ. operative revision);
стержневой ревизии (англ. peg revision).
Ревизия называется оперативной, если она указывает ревизию или диапазон ревизий, к которому должна быть применена операция, например:
svn log -r 199:230 http://some.path
В данном примере выполняется команда svn log для диапазона ревизий 199:230, который и является диапазоном оперативных ревизий.
Однако указание только имени файла и оперативной ревизии иногда может неоднозначно указывать на объекты хранилища. Например, в ситуации, показанной на рис. 2, возникает неоднозначность при выполнении следующей команды:
svn log -r 29:33 http://some.path/bar.txt
Над объектами файловой системы в хранилище Subversion могут быть произведены перечисленные ниже операции[33] (см. рис. 1). В скобках указано краткое именование операции в обозначениях команды svn status.
Добавление (A). Добавление объекта в файловую систему. Добавленный объект не имеет истории ревизий. Пример на рисунке:
файл /main.c был добавлен в ревизии 27.
Модификация (M). Модификация объекта, например, изменение содержимого файла или изменение свойств файла или директории. Пример на рисунке:
файл /main.c был модифицирован в ревизии 28.
Удаление (D). Удаление файла из головной и последующих ревизий. При этом файл остаётся в предыдущих ревизиях. Пример на рисунке:
файл /main.c был удалён в ревизии 30.
Замена (R+). Имеет место в случае, когда в одной ревизии произведено и удаление объекта (D), и добавление с историей (A+) объекта с тем же самым именем. Хотя имя при операции замены остаётся неизменным, Subversion рассматривает объект до и после замены как два различных объекта с различными историями ревизий (история старого заканчивается в точке замены, история нового наследуется от источника копирования и продолжается далее). Пример на рисунке:
Рабочая копия
Рабочая копия — это созданная клиентской программой Subversion локальная копия части данных из хранилища, содержащая помимо собственно данных некоторую служебную информацию (скрытые директории с именем .svn). Служебная информация необходима для правильного функционирования рабочей копии; что-либо менять в служебных данных нельзя. Минимальной единицей данных, которую можно получить из хранилища как рабочую копию, является директория. Содержимое директории можно извлечь не полностью: например, можно исключить отдельные файлы или поддиректории. Однако извлечь из хранилища отдельный файл как рабочую копию невозможно.
Любая поддиректория рабочей копии Subversion 1.6 и более ранних версий также является полноценной рабочей копией, поскольку в каждой директории хранятся её служебные данные (каталоги .svn). Начиная с версии 1.7 в каждой рабочей копии присутствует только одна директория .svn в корне её каталога.
Рабочая копия является самодостаточной в том смысле, что Subversion не хранит каких-либо данных, относящихся к рабочей копии, вне её. Поэтому, имея одну рабочую копию, можно сделать ещё несколько копий простым копированием без затрат сетевого трафика.
В служебных директориях рабочей копии, помимо прочего, хранится так называемая чистая копия (англ. pristine copy) — файлы рабочей копии в неизменённом виде, как они были извлечены из хранилища (для svn это ревизия с именем BASE). Наличие чистой копии позволяет быстро и без обращения к хранилищу выполнять операции просмотра и отката локальных изменений. Однако размер рабочей копии на диске примерно в два раза больше (данные + чистая копия данных), чем размер самих данных. Такой подход обусловлен тем, что дисковые ресурсы дешевле и доступнее, чем ресурсы сети передачи данных.
Как правило, создание рабочей копии является первым и необходимым этапом для фиксации локальных изменений, поскольку зафиксировать в хранилище можно только изменения, сделанные в рабочей копии. Исключением являются операции, которые могут быть выполнены прямо в хранилище без создания рабочей копии.
Транзакции
Работа с хранилищем в Subversion организована в форме транзакций со свойствами атомарности и изоляции из набора свойств ACID. Таким образом система управления версиями гарантирует целостность, непротиворечивость и доступность хранилища в любой момент времени.
Атомарность фиксаций (англ. atomic commits) — изменения в нескольких файлах или директориях фиксируются единой транзакцией порождая при этом одну ревизию. В случае неудачной фиксации, при любом сбое или ошибке, система гарантирует, что хранилище не окажется в частично изменённом состоянии — в хранилище попадут либо все изменения, либо (при неудаче) — ни одного.
Изоляция гарантирует, что промежуточные состояния хранилища внутри транзакции не видны другим транзакциям и пользователям. Например, если один пользователь фиксирует одной транзакцией изменения в нескольких файлах, то другие пользователи не могут увидеть такого состояния хранилища, в котором часть файлов уже изменена, а часть — не изменена.
Данные свойства не гарантируются для рабочей копии Subversion — она, в отличие от хранилища, при сбое или прерывании может оказаться в промежуточном или заблокированном состоянии (то есть перед продолжением работы её потребуется восстановить командой svn cleanup или пересоздать заново).
Локальные и удалённые формы команд
Все команды клиента Subversion можно разделить на следующие группы:
модифицирующие рабочую копию;
модифицирующие хранилище;
модифицирующие и рабочую копию, и хранилище;
не модифицирующие ничего.
Ветвление
Ветвление является важным аспектом работы систем управления версиями, поскольку типичные приёмы[38] управления версиями (по крайней мере, при разработке программного обеспечения) включают в себя использование ветвей. Subversion обладает достаточно развитыми возможностями для ветвления и слияния (однако не поддерживает слияние переименованных файлов и директорий).
Настройка сервера
Настроить сервер — SVN репозитарий, довольно просто, в данном примере, директория, /home/svn/, должна существовать:
# svnadmin create —fs-type fsfs /home/svn/project1
Подключиться к репозитарию можно следующими способами:
file:// — Прямой доступ через файловую систему с помощью SVN клиента. В локальной файловой системе должны быть корректно настроены привилегии.
svn:// или svn+ssh:// — Удаленный доступ к SVN серверу (так-же по протоколу SSH). Требуются права в локальной файловой системе, порт по-умолчанию: 2690/tcp.
http:// Удаленный доступ через webdav, используя apache. Для данного метода не требуется наличие локальных пользователей.
Импорт и проверка существующего проекта через локальную файловую систему. В рабочую директорию заходить не обязательно, можно просто указать полный путь:
# svn import /project1/ file:///home/svn/project1/trunk -m ‘Initial import’
# svn checkout file:///home/svn/project1
Удаленный доступ по протоколу SSH
Удаленный доступ по протоколу SSH не требует каких-то доаолнительных настроек, просто замените file:// на svn+ssh/hostname. Например:
# svn checkout svn+ssh://hostname/home/svn/project1
Как и в случае локального доступа, пользователь должен иметь аккаунт, для доступа по протоколу SSH на сервер, и корректно настроенные права на чтение/запись. Данный метод может быть пригоден для небольших групп пользователей, пользователи входящие в группу, являются владельцами хранилища, например:
# groupadd subversion # groupmod -A user1 subversion # chown -R root:subversion /home/svn # chmod -R 770 /home/svn
Типичные SVN команды
# svn co http://host.url/svn/project1/trunk # Оформить заказ на последнюю версию
# Тэги и ветки создаются с помощью копирования
# svn mkdir http://host.url/svn/project1/tags/ # Создать директорию tags
# svn copy -m «Tag rc1 rel.» http://host.url/svn/project1/trunk
http://host.url/svn/project1/tags/1.0rc1
# svn status [—verbose] # Проверить состояние файлов в рабочей директории
# svn add src/file.h src/file.cpp # Добавить два файла
# svn commit -m ‘Added new class file’ # Передать изменения сообщением
# svn ls http://host.url/svn/project1/tags/ # Список всех тэгов
# svn move foo.c bar.c # Переместить (переименовать) файлы
# svn delete some_old_file # Удалить файлы
Рабочий цикл
Типичная итерация рабочего цикла с Subversion включает следующие этапы.
- Обновление рабочей копии из хранилища (svn update) или её создание (svn checkout).
- Изменение рабочей копии. Изменения директорий и информации о файлах производится средствами Subversion, в изменении же (содержимого) файлов Subversion никак не задействован — изменения производятся программами, предназначенными для этого (текстовые редакторы, средства разработки и т. п.):
- новые (ещё не зафиксированные в хранилище) файлы и директории нужно добавить (команда svn add), то есть передать под управление версиями;
- если файл или директорию в рабочей копии нужно удалить, переименовать, переместить или скопировать, необходимо использовать средства Subversion (svn mkdir, svn delete, svn move, svn copy);
- просмотр состояния рабочей копии и локальных (ещё не зафиксированных) изменений (svn info, svn status, svn diff);
- любые локальные изменения, если они признаны неудачными, можно откатить (svn revert).
Источник: businessarchitecture.ru
Управление хаосом или TortoiseSVN
Данная статья посвящена моему знакомству с клиентом TortoiseSVN под WIndows. В сети много информации на эту тему (в частности, отличнейшая документация на русском), но для себя я решил сделать небольшую шпаргалку, так как некоторые вещи даже после прочтения подробного мануала были не очевидны. Для начала, немного теории.
Что такое TortoiseSVN?
Это самый популярный клиент для управления версиями при разработке ПО. Вообще, SVN, согласно Википедии, это свободная централизованная система управления версиями, официально выпущенная в 2004 году компанией CollabNet. Версии в TortoiseSVN называются ревизиями. Можно в любой момент откатиться к любой из ревизий, посмотреть кто и какие изменения сделал, кто в команде больше всего работал над какими файлами работал и так далее.
Принцип простой – есть централизованное хранилище, в него импортируется проект (папка с файлами), из хранилища выделяется рабочая копия, автор как-то с ней работает, затем делает Commit и номер ревизии увеличивается на единицу. Можно откатиться к любой ревизии из хранилища.
Устанавливается как расширение проводника, а не как отдельная программа, и выглядит следующим образом.
Что такое ревизии?
Согласно документации, ревизии это серии массивов деревьев. Наш проект растет и эти деревья тоже.
Каждое дерево – это «снимок» состояния хранилища после каждой фиксации
Как работает TortoiseSVN?
TortoiseSVN не зависит от языка, на котором вы пишите. Он просто сравнивает файлы.
Если работает один разработчик – то центральным хранилищем можно сделать любую папку на HDD или сетевом диске, нужно просто выбрать папку и выбрать в контекстном меню Create Repository Here. И у нас создастся хранилище, в которое мы сможем импортировать наши проекты. Чуть позже посмотрим на примерах. Можно конечно и сервер поднять, например VisualSVN, и центральное хранилище сделать на нём, но об этом позже. Тут от целей и задач зависит.
Если разработчиков несколько и все они разбросаны по разным уголкам планеты, то тогда, конечно, лучше использовать клиент-серверную модель. Поднять сервер, например VisualSVN, настроить хранилище на нём и тогда Commit, сделанный одним разработчиком виден другим.
Общий принцип.
Импортируем наш проект в хранилище, в папку trunk. Trunk – это ствол дерева – основное направление развития нашего проекта.
Выделяем копию из хранилища. Работаем с ней, жмём Commit. Изменения сохраняются в центральном хранилище.
Модели слияния и блокировки
Модель слияния
При работе у нас появилась идея сделать какую-то фишку в проекте.
В хранилище создаем ветвь (branch) из папки trunk. Теперь у нас в хранилище 2 одинаковые копии проекта.
В рабочей копии переключаемся на файлы из branch. При этом над стволом команда тоже может работать в это время. Работаем с копиями – в копиях ствола и ветви появляются различия. Когда работа над ветвью закончена – проводим слияние. При необходимости разрешаем конфликты (когда разные разработчики меняли одну и ту же строку, когда менялась структура деревьев и так далее).
Продолжаем работать над стволом. Модель слияния позволяет работать нескольким разработчикам одновременно. Далее, мы посмотрим как технически работать с моделью слияния.
Модель блокировок
Блокируем файл или группу, с которым мы должны работать.
Никто не имеет доступа к нему, пока он не заблокирован.
После того как поработали с файлом – разблокируем его. Главное не забыть – в этом-то вся и проблема модели блокировок))) Ну и ещё одна проблема – все ждут друг друга.
Практика
Создание репозитория
Создадим на диске С: папку SVN, а внутри неё сделаем ещё одну папку, назовем её Repository. Теперь нажмем правой клавишей мыши на этой папке и в контекстном меню выберем Create Repository Here таким образом
Нажмём Create Folder Structure
А потом Start Repo Browser, в результате мы увидим вот такую структуру папок
trunk – это ствол дерева, основное развитие проекта, сюда поместим проект при первоначальном импорте в хранилище.
branches – это ответвления, когда у нас появится какая-то идея, мы всегда можем сделать ответвление – поработать с ним, и в конце сделать слияние с trunk, и удалить ненужные файлы из branch, так как изменения уже будут закреплены.
tags – это как фотографии, нам нужно зафиксировать состояние проекта на какой-то момент, например релиз 1.0, используем это в tags.
Чуть позже увидим как со всем этим расправляться технически.
Создание папки-источника
Чтобы далеко не ходить – создадим в папке SVN – другую папку, например MyProject (Source Folder)
Теперь внутри папки MyProject (Source Folder) создадим какую-нибудь структуру, например вот так
В текстовом файле напишем, произвольный текст, например вот так…
Импорт папки-источника в репозиторий
В принципе папка-источник у нас готова, теперь импортируем её в репозиторий.
Здесь обязательно подпишите комментарий, потом, когда таких транзакций будет миллион, и мы все их будем просматривать в логе – это очень сильно пригодится. А если будет миллион безликих транзакций, то считай и потерялись. Как видите – первоначальный импорт делаем в trunk.
Здесь, смотрите, я для примера взял просто file:///C:/SVN/Repository/trunk, но в реальной жизни у нас десятки проектов, и поэтому тут можете варьировать, либо file:///C:/SVN/Repository/Project1/trunk либо file:///C:/SVN/Repository/trunk/Project1 – на вкус и цвет как говорится. В документации советуют второй вариант.
Теперь если зайдем в Repo-Browser, то увидим следующую картину
Создание рабочей копии
Создадим папку MyWorkCopy
Делаем SVN Checkout
Далее выберем директорию из которой мы будем копировать файлы
И в результате получим вот такой результат
Обратите внимание – появился маленький зеленый значок! Он означает, что на данный момент рабочая копия синхронизирована с хранилищем. Если этого значка у Вас нет, то возможно стоит залезть в реестр и поправить приоритет в ShellIconOverlayIdentifiers. Здесь проблема в том,что в Windows число этих значков ограничено и нужно, чтобы Tortoise был на первом месте – тогда всё будет работать. Если не поможет – посмотрите ещё в сети – много статей на тему решения этой проблемы.
Работа с рабочей копией
Сделаем какие-то изменения в нашем файле, в нашей рабочей копии.
Закроем файл и посмотрим на него – иконка изменилась. Это означает, что файл не синхронизирован с хранилищем.
Как сделать синхронизацию? Очень просто.
Откроется диалог – обязательно подписываем комментарий к коммиту.
В результате изменения произошли. Ревизия получила номер 3.
Теперь значок снова зеленый – значит синхронизация прошла успешно.
Просмотр журнала и управление изменениями.
Теперь, к контекстном меню Tortoise на папке MyWorkFolder жмем ShowLog
И видим следующую картину.
Просмотр изменений
Посмотрим какие изменения мы внесли по сравнению с предыдущей версией, для этого зайдем в C:SVNMyWorkCopySomeFolder и в контекстном меню выберем следующее
И увидим примерно такую картину
Когда изменений в сроке не было, она не подсвечивается цветом, то есть мы будем видеть такую картинку
Откат к предыдущим изменениям
Идем в C:SVN, жмем правой кнопкой мыши на MyWorkCopy – жмем ShowLog
Далее выбираем ревизию и выбираем откат
Выплывет вот такое окно, в котором жмем Revert
После того как мы сделали откат – то увидим, что строки SomeChanges нет в файле SomeFile.txt И кроме того – мы сделали изменения в рабочей копии – и они не соответствую теперь хранилищу. Поэтому, чтобы закрепить эти изменения – нужно сделать Commit.
Делаем Commit изменений в хранилище – после чего получим зеленую галочку.
Просматривать лог и делать коммиты можно на разных уровнях. Можно на уровне файлов или папок – тут всё зависит от Ваших текущих задач.
Думаю данный пост завершить, так как он получился слишком длинным. В следующем посте хочу осветить правильный цикл слияния.
Мы изучили теорию – на минимальном уровне.
Мы разобрали как создать хранилище.
Мы создали рабочую копию из хранилища, сохранили изменения, посмотрели лог и откатились обратно. В принципе, это типичные действия для разработчиков.
Источник: digital-flame.ru
Системы управления версиями. Svn. Основные возможности.
Системы управления версиями. Svn. Архитектура. Компоненты.
Общий взгляд на устройство Subversion показан на рисунке. На одной стороне схемы изображено хранилище Subversion, в котором хранится информация с версиями. На противоположной стороне показана программа-клиент Subversion, которая управляет локальными отражениями различных фрагментов этих данных (также называемыми «рабочими копиями»).
Между этими сторонами проложены различные маршруты, проходящие через разные слои доступа к хранилищу. Некоторые из этих маршрутов используют компьютерные сети и сетевые сервера, чтобы достичь хранилища, в то время как другие маршруты в сети не нуждаются и ведут к хранилищу напрямую. Компоненты Subversion Установленная Subversion имеет определенное количество компонентов.
Ниже перечисленное — краткий обзор того, что вы получаете. Не тревожьтесь если краткие описания заставляют вас чесать затылок, в этой книге есть еще много страниц, посвященных облегчению этого беспорядка. svn CLI-клиент. svnversion Программа показывающая состояние (в пределах ревизий существующих элементов) рабочей копии. svnlook Инструмент для контроля Subversion хранилища.
svnadmin Инструмент для создания, настройки или восстановления Subversion хранилища. svndumpfilter Программа для фильтрации дамповых потоков Subversion хранилища. mod_dav_svn Подключаемый модуль для HTTP сервера Apache, использующийся для предоставления сетевого доступа к вашему хранилищу. svnserve Собственный отдельный сервер, запускается как процесс-демон и доступен посредством SSH; еще один способ для предоставления сетевого доступа к хранилищу.
Источник: studfile.net