Работа с 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 тем больше он мне нравится.
Ссылки по теме:
- Работа с Tortoise SVN. Часть 2
- Subversion на чужих серверах
- Использование Subversion для синхронизации документов дома и на работе черз флэшку
- Установка SVN Клиент+Сервер
Entry Filed under: Subversion, Управление проектом. Метки: инструменты, svn.
14 Comments Add your own
Leave a Comment
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
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. (Рекомендуемая структура репозитория описана в первой части.) В первой создаем настоящие [...]