уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Вчера задумал попробовать использовать новую возможность RAD Studio XE – поработать с Subversion. Пересмотрел ещё раз официальный ролик где рассказывается об этой фиче, создал репозиторий на Google Code, простенький Delphi-проект и начал свое маленькое исследование. В принципе, я не ожидал увидеть прямо так сразу в Delphi XE все возможности работы с CVS как, например, в том же Eclipse, но, что получилось то получилось…


Так и не понял откуда берется вот такое окно:

true_svn

Хоть и удавалось поставить под контроль новый проект, но список “Files To Be Commited” так я ни разу и не увидел. Ну да бог с ним. Главное, что конечный результат достигается – проект становится под контроль.

Идем далее. Вносим изменения в проект, добавляем новые функции и т.д. Сразу в глаза бросается недоделанность в плане работы с SVN Project Manager’a. Почему нет никаких опознавательных знаков для файлов, которые были изменены, не находятся под контролем, игнорируются и т.д.? Это мелочь, но, по-моему очень значительная. Можно пережить, когда проект мелкий, состоит всего их нескольких модулей – и так запомнишь что и где менял и почему. А если крупный? Каждый раз открывать вкладку history и смотреть изменения или копаться в логах Subversion? Не удобно до жути.

Следующий момент – добавление новых файлов под контроль. Здесь вроде бы все в порядке. Рассмотрим, например, такую ситуацию: только начинаете работать над проектом, уже нарисовалась какая-никакая структура репозитория, основные файлы проекта уже находятся там и Вам заходелось добавить, скажем, папку addons в которой Вы планируете хранить модули каких-нибудь сторонних библиотек, используемых в проекте. Создаем новую директорию, закидываем туда необходимые файлы и в контекстном меню Project Manager’а выбираем “Subversion –> Commit”. В окне коммита устанавливаем флажок “Show unversioned files” и видим все файлы рабочей копии, которые не находятся под контролем:

unversioned

Далее добавляем ставим файлы под контроль, комментируем, коммиттим и т.д. в общем стандартный набор операций. Тут, как я уже сказал, все в порядке и работает нормально за одним небольшим исключением – когда в репозиторий отправляется много файлов IDE виснет наглухо. Видно, что в Messages вроде бы бегунок дёргается, т.е. что-то туда пишется, но IDE замирает и ничего делать кроме как ждать и ещё раз ждать не получается. Будем надеяться, что при первом Update RAD Studio эту часть доработают.

Следующий момент – работа с Diff Viewer’’ами. Так как я уже изрядно избалован пожизненной лицензией Code Merger’а, то, естественно, работа встроенного вьювера  “Beyond Compare” меня никак не устроила. Просматривать добавленные лишние пробелы и удаленные излишние коментарии как-то не порадовало. Тем более, что на мой взгляд, Code Merger самым наилучшим образом подходит под работу с pas и dfm-файлами. Благо в опциях Delphi XE предусмотрена настройка внешних вьюверов. Пробуем настроить.

Заходим в “Tools—>Options—> Difference Viewer” и добавляем новый внешний вьювер:

diff_viewers

Для настройки Code Merger в качестве внешнего вьювера ему необходимо в параметрах передать строку вида:

pas file1 file2 r rw

где pas – тип файлов для сравнения, file1 и file2 – имена файлов для сравнения, включая полный путь до них, r rw – доступ к файлам (r – чтение, rw – чтение и запись).

Окно добавление внешнего вьювера выглядит следующим образом:

add_new_viewer

Title – название вьювера, которое будет отображаться в списке.

Programm – полный путь до exe-файла вьювера

Working directory – рабочая директория. Заполняется автоматом на основе данных из поля Programm

Parameters – параметры командной строки.

В параметры допускается вставлять один или несколько макросов, доступных в списке Macros. Немного поэкспериментировав с макросами получилось обеспечить более-менее сносную работу Code Merger,используя строку параметров как показано на рисунке:

code_merger

После настройки необходимо перезапустить IDE и тогда Code Merger (тьфу-тьфу-тьфу) вроде бы нормально принимает все параметры и показывает различия между ревизиями и т.д.

Теперь пробуем просмотреть с помощью внешнего вьювера различия. Выбираем в Project Manager файл, вызываем контекстное меню и указываем “Compare –> History Compare”. Нам предлагаю выбрать что будем сравнивать сравнивать:

show_diff

Выбираем, жмем “Show Diff” и… грузится Beyond Compare. При этом в настройках я указал:

Preffered_viewer

Пробовал и наоборот – результат тот же. А что бы увидеть свой собственноручно настроенный вьювер в работе необходимо открыть файл, перейти на закладку History –> Difference, выбрать объекты для сравнения и нажать кнопку “Show in Difference Viewer”:

history2

Вот тогда заработает Ваш вьювер. Во всех остальных случаях: через контекстное меню мэнеджера проектов, через главное меню “Edit –> Compare” – запускается Beyond Compare. Может кто-то смог от него избавиться и нормально настроить свой вьювер для запуска из мэнеджера проектов?

Пока мое мнение по работе с внешними вьюверами в Delphi XE – не доработана до логического завершения. Если я настраиваю внешний вьювер и прошу чтобы он был дефолтным и приоритетным по сравнению со всеми другими – то он должен быть таковым всегда и везде, пока не изменю свои приоритеты в настройках.  

Двигаемся дальше. Проверим работу с репозиториями других разработчиков. В качестве эксперимента попробовал импортировать проект VirtualTreeView из Google Code.

Выбираем в главном меню IDE “File –> Open From Version Control”. Нас проят указать адрес репозитория и путь до директории с рабочей копией. Указываем:

checkout

Жмем “Ok” и все работаем замечательно – рабочая копия создается без проблем:

Checkout2

Итак, какие выводы я сделал для себя касательно работы с Subversion в RAD Studio XE:

1. Буду ли я активно использовать все возможности, предоставленные мне разработчиками? Нет. Если очень сильно потребуется вплотную работать с SVN – воспользуюсь TortoiseSVN + Code Merger. На крайний случай можно сделать мелкий Commit или Update.

2. Расстроен ли я нынешней работой с SVN в Delphi XE? Нисколько. Во-первых, я не ожидал чего-то похожего на TortoiseSVN или Eclipse сразу же в первом релизе. Опять же маркетинг и всё такое – теперь активно использующие SVN разработчики будут ждать новых версий – там же всё поисправляют :). Во-вторых, мне, как обладателю безумно непредсказуемого подключения к Интернет, больше нравится работа с Git. Пусть по сравнению  с SVN первое время работа с Git кажется чем-то непостижимо сложным и непонятным – со временем привыкаешь. Я привык.

У кого ещё какие мысли по поводу Subversion в Delphi XE? Кто уже воспользовался на полную катушку новыми возможностями, какие ощущения?

Книжная полка

Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
купить книгу delphi на ЛитРес
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
купить книгу delphi на ЛитРес
0 0 голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
7 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Алексей Сухачёв
Алексей Сухачёв
11/10/2010 13:46

Спасибо!

Андрей Дуров
Андрей Дуров
12/10/2010 12:51

То что поддержка SVN сделана для галочки мне стало понятно ещё из официального видео. Пользоваться этой недоделкой тоже не планирую и это одна из причин по которой мне XE мало интересен, а жаль..

trsteep
trsteep
18/10/2010 02:24

уговорили надо будет потестить ;)

RomanVD
RomanVD
06/01/2011 19:10

>Так и не понял откуда берется вот такое окно…

Появляется =) Только по другому отформатировано — файлы не видно, надо раздвинуть среднее поле.

У меня другой вопрос — а почему в комплекте CollabNet клиента, который идет с Delphi XE, не идет svnadmin? Если я захочу сделать локальный репозиторий, мне все равно надо ставить и качать другую версию subversion?

Что подскажете?

Kovalery
Kovalery
27/01/2011 17:06

To RomanVD: >У меня другой вопрос – а почему в комплекте CollabNet клиента, который идет с Delphi XE, не идет >svnadmin? Если я захочу сделать локальный репозиторий, мне все равно надо ставить и качать другую >версию subversion? Ничего качать ненужно, если конечно не захочешь TortoiseSVN, например. На установочном диске есть CollabNet server в той же папке, что и клиент. Связка XE — SVN очень наглядно разжёвана здесь: http://www.drbob42.com/examines/examinD3.htm в т.ч. примеры с использованием стороннего софта. Для себя отметил пользу по сравнению с автобекапом в том, что автоматический локальный бекап сохраняет, только заданное количество версий, которые потом стираются при достижении установленного… Подробнее »

RomanVD
RomanVD
28/01/2011 04:16

To Kovalery:

По ссылка нахожу следующее:

Local Repository
… I will start with creating a local repository first. For this, I’m using TortoiseSVN, which you can download from http://tortoisesvn.tigris.org/ offering a Subversion client …

А мне надо понять как создать локальный репозиторий тем, что идет в комплекте с Delphi XE. Установочного диска у меня нет — электронная поставка, но которая поставила клиента CollabNet. И средств для создания локального репозитория в комплекте нет. Что делать?