Работаем с программой Tortoise SVN


(голосов: 2)
Инструкция по рработе с программой Tortoise SVN

Структура репозитория
При создании репозитория можно воспользоывться рекомендациями из документации по Tortoise SVN или сделать по своему.

Рецепт из документации.
Создаются 3 корневые папки: trunk (ствол), branches (ветки) и tags. В каталоге trunk хранится исходный код приложения. Он всегда поддерживается в рабочем состоянии и представляет собой последнюю стабильную версию приложения. Если в какой то момент необходимо начать работу над второй версией, то создается branch в папке branches и разработчики могут спокойно модифицировать копию в branches, не опасаясь, что основная версия будет затронута. Когда наступает момент выпуска второй версии, выполняется слияние ее с основной версией, в результате в trunk мы получаем вторую версию в качестве основной.

Если вы разрабатываете программный продукт или веб сайт, что впринципе одно и тоже, то способ, рекомендованный в справке очень удобный.

Упрощенный подход
Если вы работаете с документами, где не планируются эксперименты и поддержание дополнительных ветвей, то стуктуру репозитория можно упростить до двух папок: documents и tags. Вместо documents можно написать, что угодно, это ваша рабочая папка. А вот tags есть смысл оставить, потому что, наверное, в любой работе возникает необходимость зафиксировать состояние всего репозитория.

И наконец третий вариант сокращается до одной рабочей папки, если идея с tags вам ненравится. Тем более, что добавить папку tags можно и позже.

Подробнее о tags во второй части.
Создание репозитория
Создание репозитория начинается с создания корневых папок описанных выше. Для этого создаем временный каталог c:svntemp и в нем создаем нужную структуру репозитория, например папки trunk, branches и tags.

Теперь открываем контекстное меню для каталога svntemp (стоя на каталоге svntemp, но НЕ внутри него) и выбираем команду import. В появившемся диалоге вводим путь к репозиторию, например
https://mydomain.com/svn/myproject/ 
. В результате в репозитории создаются папки вложенные в svntemp но сам svntemp не создается в репозитории.

Затем с:svntemp можно удалить и перейти в каталог, в котором планируем работать. Например,
d:projectsmyproject
. Внутри myproject выбираем команду Check out, в результате в каталоге myproject появляются наши папки trunk, branches, tags и служебная папка .svn. Служебная папка – скрытая, поэтому если у вас отключен показ скрытых файлов, то вы ее не увидите.

И лишь теперь в каталог trunk можно скопировать рабочие файлы и выполнить команду add.
Используйте lock при работе с изображениями и файлами Word и Excel

Правило простое: при работе с любыми бинарными файлами необходимо использовать блокирование (locking). Этот режим включен по умолчанию в MS VSS и привычен пользователям этой системы. В ней любой check out блокирует файл от изменения другими пользователями. Поскольку Subversion по умолчанию позволяет работать с файлом нескольким людям одновременно, блокировать файл необходимо явно командой «Get lock…» в контекстном меню.

Блокирование бинарных файлов в Subversion обязательно, потому что Subversion не может выполнить слияние двух модифицированных бинарных файлов. Человеку для этого также необходимо приложить усилия, и зачастую работа бывает потеряна.
При импорте папки добавляется содержимое, но не сама папка

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

Например папка doc, а внутри нее папка artworks. При импорте папка artworks попадет в репозиторий. А чтобы при этом появилась папка doc необходимо ее написать вручную в пути репозитория в диалоге импорта.

Т.е. просто указать путь к SVN репозиторию с добавлением папки doc. Если корень репозитория
http://myserver/svn/
то пишем
http://myserver/svn/doc


Импорт файлов в репозиторий не связывает их с репозиторием
В MS VSS после операции add можно выполнять check out в тот же локальный каталог, из которого они были импортированы.

В Subversion импорт файлов и папок лишь добавляет их в репозиторий. Но после этого для работы с этими файлами необходимо сделать check out. При этом check out в этот же каталог невозможен – Subversion не позволяет переписать неверсионные файлы данными из репозитория. Это значит, что check out необходимо делать в другой каталог или удалить локальные файлы после импорта и выполнить check out в тот же каталог.
Впечатления

Не зря говорят: «Первое впечатление – обманчиво». Когда я посмотрел на Totoise SVN то подумал, что придется привыкать к чему то неудобному. Но чем больше я пользуюсь Subversion тем больше он мне нравится.

Tag это вовсе и не tag, а branch
Об этом хорошо написано в документации. Просто поясню в двух словах. При помощи tag или label (для MS VSS) можно пометить срез репозитория на текущий момент. Это позволяет позже получить состояние репозитория на момент создания тэга. Это удобно если надо «зафиксировать» очередной выпуск продукта, чтобы при необходимости можно было вернуться к нему. Надо сказать из MS VSS, CVS и Subversion, последний наиболее точно фиксирует состояние репозитория.

Но в Subversion нет выделенного понятия Tag. Вместо этого можно создать Branch, потому что он также фиксирует состояния репозитория, и все последующие изменения в репозитории не затрагивают branch.

Branch практически не увеличивает размер репозитория, потому что использует лишь ссылки.

Единственное, для того чтобы отличить branch который тэг от настоящего branch рекомендуется в репозитории создавать две папки braches и tags. (Рекомендуемая структура репозитория описана в первой части.) В первой создаем настоящие ветки для внесения новой функциональности, а во второй ветки-тэги.

Хранение в репозитории части проекта
Иногда необходимо хранить в репозитории только часть проекта. Например, я работаю в рамках CMS системы, которую не хочу класть в репозиторий для каждого проекта, а хочу хранить лишь те файлы, которые добавил.

Добавление в репозиторий части проекта
В принципе речь пойдет об импорте и check out только нужных каталогов.

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

1. Мы добавляем локальную папку
d:projectsproject1themesmytheme
, в репозиторий.
Для этого делаем import с сохранением структуры каталогов.
Становимся на папку mytheme
Выбираем impot. И, ВНИМАНИЕ, в диалоговом окне в URL репозитория обязательно добавляем каталог mytheme, иначе добавится содержимое mytheme но сам каталог не появится в репозитории.

Не стесняйтесь дописать нужные каталоги в URL репозитория в диалоге импорта. Несуществующие каталоги создадуться в репозитории автоматически.

2. Теперь, чтобы продолжить работать с файлами, которые мы импортировали, необходимо сделать checkout. В части 1 я писал, что checkout невозможно сделать в каталог из которого делался import в репозиторий. Потому что subversion не позволяет переписать неверсионные файлы файлами из репозитория.

Для этого необходимо удалить локальную папку mytheme, и, находясь в каталоге themes сделать checkout.

Обратите внимание, что во время chekout, в диалоговом окне, путь должен оканчиваться themes и не должен содержать каталог mytheme. Иначе возьмуться только файлы из mytheme, а сам каталог mytheme не создастся локально.

Можно продолжать работать.

Скачать программу можно тут - TortoiseSVN

Теги: Инструкция, Tortoise SVN



Социальные сети и закладки


Поделиться новостью «Работаем с программой Tortoise SVN» или рекомендовать своим друзьям :

Прямая ссылка:
BB-code ссылка:
Html ссылка:


Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.