Subversion и Eclipse. Настройка и использование

Subversion LogoПолагаю, каждый программист знаком с системами контроля версий, которые просто необходимы при любой серьезной разработке программного обеспечения. Таких систем существует достаточно большое количество, но мне в силу ряда причин наиболее симпатична Subversion (svn).

Бытует мнение, что такие системы востребованы только группами разработчиков. Тем не менее, я считаю, что и при разработке "в одно лицо" использование единого svn-репозитория для исходников будет очень удобно и правильно. Особенно в случае наличия нескольких компьютеров (например, домашнего и рабочего). Не копировать же, в самом деле, исходники вручную между рабочими станциями.

В этой заметке речь пойдет о настройке svn-репозитория на Ubuntu Linux и использовании его в Eclipse.

Установка и настройка Subversion

Доступ к репозиториям достаточно удобно осуществлять по http-протоколу через Apache. Предполагается, что он уже установлен. Для начала необходимо установить Subversion (если он еще не установлен):

$ sudo apt-get install subversion

и модуль для Apache:

$ sudo apt-get install libapache2-svn

Далее добавляем группу subversion:

$ sudo addgroup subversion

И добавляем в нее нужных нам пользователей:

$ sudo adduser www-data subversion
$ sudo adduser user-1 subversion
$ sudo adduser user-2 subversion
$ sudo adduser user-3 subversion
...

Пользователь www-data в нашем случае должен быть добавлен обязательно, так как доступ предполагается с помощью Apache.

Теперь создаем папку для хранения svn-репозиториев:

$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo mkdir myproject
$ sudo chown -R www-data myproject
$ sudo chgrp -R subversion myproject
$ sudo chmod -R g+rws myproject

Как видно, дерево репозиториев создается в папке /home. Мне лично более логичным видится расположение, например, в /opt (у себя я так и сделал), но именно так рекомендуют делать на сайте Ubuntu. Впрочем, это не суть важно. Папка myproject здесь - это папка конкретного репозитория.

Создаем svn-репозиторий:

$ sudo svnadmin create /home/svn/myproject

Здесь есть маленький подводный камень. Дело в том, что svnadmin создает папки и файлы без прав записи для группы. В случае использования svn-протокола это не проблема, но нам необходим WebDAV-доступ посредством Apache. Поэтому еще раз выставляем права на myproject:

$ sudo chmod -R g+rws myproject

Добавляем следующую секцию в файл /etc/apache2/mods-available/dav_svn.conf:

<Location /svn/myproject>
   DAV svn
   SVNPath /home/svn/myproject
   AuthType Basic
   AuthName "myproject subversion repository"
   AuthUserFile /etc/subversion/passwd
   <LimitExcept GET PROPFIND OPTIONS REPORT>
      Require valid-user
   </LimitExcept>
</Location>

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

Добавляем пользователей, которые могут использовать репозиторий через WebDAV:

$ sudo htpasswd -c /etc/subversion/passwd user-1
$ sudo htpasswd /etc/subversion/passwd user-2
$ sudo htpasswd /etc/subversion/passwd user-3
...

Перезапускаем Apache:

$ sudo /etc/init.d/apache2 restart

Все готово. Можно протестировать репозиторий, открыв в браузере URL:

http://hostname/svn/myproject

Этот URL и будет адресом для доступа к репозиторию по WebDAV.

Подключение и использование svn-репозитория в Eclipse

Уже некоторое время я являюсь сторонником Eclipse как IDE для разработки приложений. Eclipse привлекает меня своей гибкостью, расширяемостью и кроссплатформенностью.

Адаптация Eclipse для работы с svn весьма проста. Для этого нужно выбрать пункт Help -> Software Updates -> Find and Install -> Search for new features to install. Далее создаем новый источник для плагина (New Remote Site) и в качестве URL указываем:

http://subclipse.tigris.org/update_1.2.x

Выбираем этот источник для обновления. В результате плагин для поддержки svn в Eclipse скачается и установится. Подробней об этом можно почитать здесь.

Собственно, все. Теперь на любом проекте можно кликнуть правой кнопкой мыши, выбрать Team -> Share Project, указать URL репозитория и использовать всю мощь системы контроля версий. Естественно, никто не мешает использовать любые другие средства для доступа к Subversion, благо соответствующих средств разработано предостаточно. Главное одно - все исходники теперь лежат в едином месте и нет хаоса в их версиях.

Комментарии

Re: Subversion и Eclipse. Настройка и использование

Гость аватар

Для ПЕРСОНАЛЬНОГО использования в Windows можно поступить ещё проще:
1) Ставим TortoiseSVN
2) Создаём на диске папку W:\SVN (ну или как кому нравится), в ней для каждого проекта — свою папку, например, MyProject.
3) С помощью контекстного меню Проводника (туда добавит пункты упомянутая выше TortoiseSVN) создаём в папке файловый репозиторий (не требует наличия SVN-сервера!)
4) Далее используем этот файловый репозиторий: file:///W:/SVN/MyProject. Опять же — все операции через контекстное меню Проводника с TortoiseSVN.

Удобно и просто. :-)

Re: Subversion и Eclipse. Настройка и использование

SolarWind аватар

Спасибо за рецепт. :-) Тоже может кому-то полезно будет.
Мой вариант мне нравится тем, что репозитории находятся дома на линуксовой машине, а я с работы уже цепляюсь эклипсом. Конечно, в этом случае требуется постоянно включенная машина, но она у меня и так работает постоянно...

Re: Subversion и Eclipse. Настройка и использование

Гость аватар

Да, кстати, вы спросите: «А Eclipse?». :-)

Пробовал я описанный плагин. Мне не понравился, т.к. в дереве проекта отображает кучу лишней (повторю: для меня) информации. Т.е. весь день работая над проектом в Eclipse — мне НЕ НУЖНО знать о версии и состоянии файлов, и лишние иконки и пояснения мне мешают. Мне SVN нужен 1-2 раза в день, когда я делаю коммит, и в это время в Проводнике я всё вижу. :-)

Но это лишь МОЁ предпочтение, тем более — с учётом того, что я один работаю над проектом.

Re: Subversion и Eclipse. Настройка и использование

SolarWind аватар

Да, это действительно дело вкуса. Меня, в принципе, не напрягает.

Re: Subversion и Eclipse. Настройка и использование

Гость аватар

Эта дополнительная информация легко отключается\настраивается в настройках плагина

Re: Subversion и Eclipse. Настройка и использование

Гость аватар

«сеции» — опечатка?

Re: Subversion и Eclipse. Настройка и использование

SolarWind аватар

Ага, точно. Исправил, спасибо.

Re: Subversion и Eclipse. Настройка и использование

Гость аватар

Вот, блин, счастливые... svn'ом пользуетесь. а у нас на работе ms sourcesafe... :-(

Re: Subversion и Eclipse. Настройка и использование

SolarWind аватар

А кто сказал, что мне это по работе надо? ;-) На работе у нас тоже sourcesafe...

Re: Subversion и Eclipse. Настройка и использование

Гость аватар

Товарищ, а ведь Subversion уже пользуются всё меньше и меньше. Большинство проектов переходят на распределённые системы контроля версий (Git, Mercury, Bazaar).

Re: Subversion и Eclipse. Настройка и использование

SolarWind аватар

Позволю себе не согласиться. Крупные проекты типа Firefox и ядра Linux - да, переходят. Но svn, тем не менее, живее всех живых, на нем огромное количество проектов. Кроме того, я не вижу большого смысла ставить что-то особо продвинутое для тех целей, которые описаны в статье. Subversion здесь - более чем достаточно.

Re: Subversion и Eclipse. Настройка и использование

Гость аватар

Проекты используют Subversion либо исторически, либо потому что не все FOSS-хостинги перешли на него.

А про мелких разработчиков, так наоборот, для личной разработки лучше использовать распределённый контроль версий — потому что не надо запускать сервер, не будет отдельно файлов депозитария и рабочей копии. Контроль версий будет храниться сразу в папке рабочей версии. Да и, например, Mercurial имеет такой же интерфейс, как и Subversion.

Какой смысле использовать централизованные контроли версий, если распределённые имеет все те же плюсы, но больше?

Re: Subversion и Eclipse. Настройка и использование

SolarWind аватар

Убедил, речистый. :-) Я посмотрю на системы, про которые ты говорил, может понравится.
С другой стороны, svn видится мне как раз тем старым конем, который борозды не испортит. Он много лет полностью устраивал огромное количество разработчиков, многих устраивает и сейчас. Мои потребности так точно покрывает.

Re: Subversion и Eclipse. Настройка и использование

Гость аватар

Например, всё что здесь написано про Веб репозитарий реализуется на Mercurial гораздо проще, так как не надо добавлять модуль к Apache — веб-доступ работает через CGI.

Re: Subversion и Eclipse. Настройка и использование

Гость аватар

Милая штука, сам использую ее, хотя у меня девелопмент проходит на одной машине, но так удобно ориентироваться в ревизиях (при помощи Трака). Из клиентов предпочитаю консольный svn, что во многом связано с препочтением vim в качестве среды разработки.

Все думаю попробывать git, что-то на него многие мигрировали, говорят что он много лучше.

Re: Subversion и Eclipse. Настройка и использование

Гость аватар

Моё мнение такое: CVS для своих локальных проектов (один девелопер) -- всегда можно залезть в репозитарий и ручками подправить какую-то бяку, или просмотреть наглядно, что как где храниться и всё такое.

Более серьёзные проекты -- SVN, как система, которая лишена проблем CVS (меня лично бесит, когда при переносе файла история теряется, когда один работаешь над маленькими проектиками -- это не так страшно, но когда много людей, да файлов... ой)

С Git и еже с ними не работал, но хотел бы почитать, посмотреть. Потрогать...

По поводу самой статьи. Думаю, можно подымать и под убунтой локальный репозитарий на диске, не через DAV. Просто создать репозитарий локально и заимпортить его в Eclipse.

По поводу Subclipse. На работе я был вынужден от него отказаться, поскольку он не смог пробиться через корпоративный прокси наружу, к, собственно, репозитарию. Поэтому поставил Subversive http://www.eclipse.org/subversive/ Помучался, зато заработало через proxy.

Re: Subversion и Eclipse. Настройка и использование

Гость аватар

Для одного разработчика как раз лучше Git\Mercurial — не надо отдельного репозитария.

Re: Subversion и Eclipse. Настройка и использование

SolarWind аватар

>Думаю, можно подымать и под убунтой локальный репозитарий на диске, не через DAV. Просто создать
>репозитарий локально и заимпортить его в Eclipse.

Да, локальный можно, конечно. Кстати, если настраивать так, как я описал, локальный доступ тоже, конечно, работает. Просто мне было важно, чтобы репозитарий был доступен еще и удаленно. Я цепляюсь к нему удаленно с работы.

Re: Subversion и Eclipse. Настройка и использование

Гость аватар

А почему выбран плагин Eclipse "Nigris"?
Я пользуюсь Subversive с набором коннекторов. У меня есть ряд нареканий к работе этой связки. Она гораздо менее удобна чем встроенная в IDE Idea svn система. Расскажи подробнее о том, что ты применил и почему? Сравнивал с чем-нить?

Re: Subversion и Eclipse. Настройка и использование

SolarWind аватар

Честно говоря, ни с чем не сравнивал. Мне была просто важна интеграция с эклипсом и это было первое, что я нагуглил. Свою задачу этот плагин выполняет, меня результат как-то сразу удовлетворил, поэтому я и не искал альтернатив. Хотя тут уже в каментах говорили, что subversive может работать через прокси. Для многих это действительно может быть актуально. Но мне, опять же, это было не важно.

Re: Subversion и Eclipse. Настройка и использование

Гость аватар

Как ограничить доступ пользователям на конкретные папки в Репозитории?

Re: Subversion и Eclipse. Настройка и использование

Гость аватар

А разве нету проблемы с поднятием в эклипсе проекта, "Чекаутного" черепашкой в проводнике (либо просто консольной утилитой svn)?
- У меня вот, например, Эклипс хочет работать (в смысле Svn-функционал) только с проектами, чекаутными непосредственно самой Эклипсой (точнее - Subclips-ой)...

Re: Subversion и Eclipse. Настройка и использование

Гость аватар

У меня были. Мне приходиться каждый раз проект создавать если меняется хост :(
Сабверсив кривовато написан :(

Re: Subversion и Eclipse. Настройка и использование

Гость аватар

Спасибо автору за такой полезный пост.
Но есть такой вопрос: зачем отдельному разработчику поднимать SVN и апачи (как в рецепте), а не использовать тот же git?

Хорошо бы сделать небольшое сравнение между ними. Я бы прочёл с удовольствием. Несмотря на то, что использую CVS, всегда готов посмотреть на что-то распределённое :-)

Re: Subversion и Eclipse. Настройка и использование

SolarWind аватар

Я, честно говоря, git в глаза не видел. ;-) Мне просто нужна была система контроля версий и я поставил subversion, потому что он на слуху. git я тоже хочу посмотреть. Посмотрю, может и напишу про него тоже.

Re: Subversion и Eclipse. Настройка и использование

Гость аватар

Сравнений SVN и Git множество в Сети и вывод всегда практически один и тот же — SVN лучше только количеством уже написанных утилит. Git содержит все возможности SVN и ещё больше.

Pingback

Гость аватар

[...] моей прошлой статье. Некоторое время назад я написал заметку по настройке системы контроля версий Subversion в Linux, а [...]

Pingback

Гость аватар

[...] http://www.solargate.ru/subversion-i-eclipse-nastroyka-i-ispolzovanie Теги: soft, Ubuntu, Программы Linux, Ubuntu, Программы, [...]

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу. If you have a Gravatar account, used to display your avatar.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Enter the characters shown in the image.