SVN. Небольшая шпаргалка о слиянии

Просмотрев  видео о слиянии, решил в краткой форме запомнить для себя как можно работать с SVN, при слиянии проектов в ветвь, и обратно, в дерево.

trunk > branches

after copying files from trunk to branch

-merge from trunk and commit

-do some changes

-commit, update

-merge from trunk and commit

trunk < branches

-merge from branch to trunk

-commit Continue reading

Posted in SVN

Delphi. SVN. Модель слияний

Данная статья про модель слияний и её применение в проекте Delphi. Из книги svn-book мы знаем следующее о слиянии.

1

В какой-то момент проект копируется и уходит в ветвь. Развитие идет параллельно в ветви и стволе. На рисунке это происходит в момент ревизии r341, далее авторы, в данном случае 2 автора продолжают работать с разными версиями, делают ревизии каждый в своей ветви, стволе. После чего происходит слияние с возможным разрешением конфликтов. Оно не указано на рисунке. Я могу, конечно, в чем-то ошибаться, поправьте меня, если это не так.

Это очень похоже на теорию множеств из математики. M0 на рисунке это тот код, над которым работают разработчики, каждый из них работает в своей ветви, кто-то в стволе. M1 и M2 соответственно это множества, которые изменяются разработчиками, они являются подмножествами M0, и при слиянии, если пересечения M1 и M2 не было, то всё сливается без проблем. А вот если пересечение есть – нужно в ручную править, выбирать тот или иной вариант из подмножеств, либо написать третий.

23

Попробуем такую штуку проделать в Delphi. Continue reading

Delphi и TrortoiseSVN. Ручная правка конфликтов

В данной статье посмотрим как в ручную править конфликты. В общем случае – система предложит готовые варианты из которых можно будет что-то выбрать. Но не стоит расслабляться. TortoiseSVN это программный интеллект, а не человеческий, и ему дано лишь только то, что дано. И если бездумно нажимать по клавишам – можно приплыть. Попробуем проиллюстрировать такой случай.

Создание проекта

Создадим проект VCL и импортируем его на сервер VisualSVN в директорию trunk.

Project1.exe > Add to Version Control > Subversion >

2 Continue reading

Delphi и SVN.

Почитав документацию по SVN в Delphi, попробовал поработать с системой контроля версий из Delphi. В документации приводится вот такая сравнительная таблица функционала TortoiseSVN и Delphi варианта этого функционала. Попробуем создать простой VCL проект и пройтись по этой таблице.

Создание исходного проекта

Итак, заведем специальную папку для экспериментов, например DelphiSVN, в неё поместим папку SourceFolder, в которой и сохраним наш первоначальный проект.

4


 

Импорт в репозиторий на сервере VisualSVN

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

Project Manager | right-click a project | Add to Version Control.

Система предлагает выбрать из Git, Mercury и Subversion

5

Выбираем Subversion. Continue reading

TortoiseSVN. Типичные операции. Commit / Update / Revert / Checkout

В данном посте решил закрепить для себя нюансы типичных операций при работе с системой контроля версий SVN из клиента Tortoise.

Commit и Update

Здесь всё работает без сбоев и особых нюансов я не заметил.

Commit жмем когда выделена рабочая копия и файл изменен после работы с ним. Просто жмем Commit и обновления уходят на сервер, в репозиторий.

Update – когда-что то изменили на сервере в репозитории и нужно обновить рабочую копию.

 

1 Continue reading

Posted in SVN

VisualSVN. Подключаем сервер

Этот HowTo посвящен подключению серверной части системы SVN. В предыдущих 2-х постах мы говорили об основах управления версиями и о правильном цикле слияния версий.  И, в принципе, для индивидуальной разработки – этого более чем достаточно!!! Но если у нас команда, члены которой разбросаны по миру и времени, то без сервера тут не обойтись.

Сейчас – один из последних штрихов – работа  с сервером системы SVN. В качестве сервера я выбрал Visual SVN Server – мне он понравился тем, что достаточно прост в установке и управлении, ну и поддерживается Microsoft. Скачать его можно здесь.

13

В данном HowTo поставим сервер на локальный компьютер и протестируем TortoiseSVN с ним. Всё тоже самое будет справедливо и при установке сервера на VPS. Например, на Azure. Continue reading

Posted in SVN

TortoiseSVN. Правильный цикл слияния

Данная статья является продолжением моего знакомства с TortoiseSVN и посвящена модели слияния. Посмотрим как это делать правильно так как в документации, на мой взгляд, об этом сказано недостаточно. Статья основана на личных экспериментах и статье с хабра с похожим названием.

Работа с проектом в TortoiseSVN похожа на дерево. Основная работа ведется в trunk – стволе дерева. Периодически у команды возникают идеи – версия из ствола (trunk), на момент появления идеи копируется в другую папку (branch \ idea1 или что-то подобное). Далее работа может вестись параллельно – в стволе и ветвях либо только в чем-то одном. Как только работа с ветвью закончена – происходит то самое слияние со стволом обратно. Все изменения добавляются в ствол – основную линию развития проекта.

Сосна

Напомню, в прошлой статье, в теории мы выяснили следующее. Continue reading

Управление хаосом или TortoiseSVN

Данная статья посвящена моему знакомству с клиентом TortoiseSVN под WIndows. В сети много информации на эту тему (в частности, отличнейшая документация на русском), но для себя я решил сделать небольшую шпаргалку, так как некоторые вещи даже после прочтения подробного мануала были не очевидны. Для начала, немного теории.

Что такое TortoiseSVN?

Это самый популярный клиент для управления версиями при разработке ПО. Вообще, SVN, согласно Википедии, это свободная централизованная система управления версиями, официально выпущенная в 2004 году компанией CollabNet. Версии в TortoiseSVN называются ревизиями. Можно в любой момент откатиться к любой из ревизий, посмотреть кто и какие изменения сделал, кто в команде больше всего работал над какими файлами работал и так далее.

Принцип простой – есть централизованное хранилище, в него импортируется проект (папка с файлами), из хранилища выделяется рабочая копия, автор как-то с ней работает, затем делает Commit и номер ревизии увеличивается на единицу. Можно откатиться к любой ревизии из хранилища.

Устанавливается как расширение проводника, а не как отдельная программа, и выглядит следующим образом.

1 Continue reading