Работа с Tortoise SVN. Часть 1

21.10.2006

После покупки аккаунта на hosted-projects.com я начал разбираться c Tortoise SVN. Для Subversion существует несколько клиентов, но я решил начать с этого, потому что когда то пользоваться Tortoise CVS.

В этой заметке я собрал несколько типовых задач, возникающих при работе с Subversion и Tortoise SVN. Поскольку я перешел на subversion после MS VSS, то многие моменты были для меня непривычными.

Структура репозитория

Здесь я почти повторю документацию по subversion, просто расскажу своими словами.

При создании репозитория можно воспользоывться рекомендациями из документации по 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:\projects\myproject. Внутри 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 тем больше он мне нравится.

Ссылки по теме:

Technorati tags: ,

Entry Filed under: Subversion, Управление проектом. Метки: , .

14 Comments Add your own

  • 1. Алексей Гороб&hellip  |  11.01.2007 at 10:13

    Пожалуйста, я рад что пригодилось! :) Еще планирую исследовать SVN который предлагает Google и описать, как делать слияние конфликтующих файлов

    Ответить
  • 2. Vitaly  |  15.10.2007 at 12:32

    Статья хорошая, но был бы безумно рад послушать как настраивается репозиторий на одной машине, и его пользуют через сеть/интернет другие :)

    Ответить
  • 3. Николай  |  16.10.2007 at 11:58

    Возможно немного не в тему вопрос…
    А можно ли в SVN сделать checkout одного файла в указанный каталог?
    Или это никому, кроме меня, не нужно?

    Ответить
  • 4. Алексей  |  31.10.2007 at 05:56

    То: Николай,
    Можно попробовать такой вариант: сделать бранч нужного файла, это бранч использовать в другом каталоге, а при необходимости “вернуть” файл в основную ветку делать merge.
    Получится то что вы хотите, но чуть больше действий придется делать.

    Ответить
  • 5. Rinat Abdullin  |  18.11.2007 at 08:51

    Hosted-projects – хороший очень ресурс. Сам его использую.

    Насчет локов на документы не согласен. TortoiseSVN позволяет natively (используется revision механизм из Office) делать diff по doc, xls, ppt файлам. Doc еще и merge поддерживают.

    Ответить
  • 6. Алексей  |  18.11.2007 at 09:26

    To: Rinat Abdullin
    А можно подробнее про механизм из Office? Ведь файлы офиса вроде бинарные (даже в офисе 2007 это XML в архиве).

    Ответить
  • 7. Rinat Abdullin  |  14.12.2007 at 23:48

    Два документа просто сравниваются силами Microsoft Office (через Merge & Review). Попробуй сам – увидишь))

    Ответить
  • 8. Дмитрий  |  30.01.2008 at 12:18

    To: Vitaly
    Репозиторий настраивается очень просто. Собственно репозиторий представляет из себя обычную папку, где Subversion хранит всю информацию в своем формате. Для того, чтобы создать новый репозиторий, создайте пустую папку (например MyRepository) и в контекстном меню для нее выберите “TortoiseSVN” | “Create repository here…”. В появившемся диалоговом окне оставть все как есть (по умолчанию выбрана опция “Native filesystem (FSFS)”), и нажмите OK. После этого в указанной папке будут созданы необходимые служебные файлы нового репозитория и ему будет присвоена ревизия 0. Дальше работа происходит описанным выше способом. При обращении к репозиторию в первый раз для указания пути к нему воспользуйтесь кнопкой “…” и укажите на папку, которую вы создавали на первом шаге. В следующий раз вы сможете просто найти нужный вам путь в выпадающем списке.

    Ответить
  • 9. Дмитрий  |  30.01.2008 at 12:35

    To: Vitaly
    Для того, чтобы репозиторием можно было пользоваться с других машин, нужно обеспечить доступ с этих машин к директории, в которой хранится этот репозиторий. Если речь идет о локальной сети под управлением Microsoft Windows, то для этого достаточно просто дать общий доступ к директории репозитория или одной из родительских директорий.

    Ответить
  • 10. Установка и н&hellip  |  05.09.2008 at 06:53

    [...] SVN, подробнее прочитать о его использовании можно на http://outsourcing.wordpress.com/2006/10/21/working-with-tortoise-svn-part1/ Всем удачи в настройке, если возникли проблемы – логи в [...]

    Ответить
  • 11. Установка и н&hellip  |  11.11.2008 at 07:50

    [...] На последок рекомендую почитать интересную серию статей Работа с Tortoise SVN. [...]

    Ответить
  • 12. Nano Tips » Уст&hellip  |  11.11.2008 at 08:46

    [...] На последок рекомендую почитать интересную серию статей Работа с Tortoise SVN. [...]

    Ответить
  • 13. Ортоблог -  |  08.01.2009 at 11:04

    [...] Очень часто при разработке любого проекта, да и вообще при работе над каким-либо документом приходится задумываться: “А что будет если я изменю эти файлы?. Как вернуть обратно изменения, если мне они не понравятся?”. Приходится изучать специальные инструменты, например svn. Небольшая ссылка для начала работы [...]

    Ответить
  • 14. Pirau Vladislav Blog &raq&hellip  |  30.06.2009 at 13:24

    [...] в репозитории создавать две папки braches и tags. (Рекомендуемая структура репозитория описана в первой части.) В первой создаем настоящие [...]

    Ответить

Leave a Comment

Required

Required, hidden

Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackback this post  |  Subscribe to the comments via RSS Feed


Рубрики

Google Custom Search Engine

Мой GCE по ASP.NET блогам
Все желающие могут добавлять в него блоги и сайты по asp.net и вебпрограммной тематике

Свежие записи

Продуктивность и time management

IT outsourcing sites

Meta

Облако

Top Clicks

RSS Некоторые посты из блогов, которые я читаю

Страницы

 

Октябрь 2006
Пн Вт Ср Чт Пт Сб Вс
« Авг   Янв »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Архивы