Subversion в Delphi XE. Впечатления после одного дня работы.Источник: webdelphiru
Вчера задумал попробовать использовать новую возможность RAD Studio XE - поработать с Subversion. Пересмотрел ещё раз официальный ролик где рассказывается об этой фиче, создал репозиторий на Google Code, простенький Delphi-проект и начал свое маленькое исследование. В принципе, я не ожидал увидеть прямо так сразу в Delphi XE все возможности работы с CVS как, например, в том же Eclipse, но, что получилось то получилось… Итак, начнем пожалуй с официального видео от Embarcadero: Обратите внимание на момент, когда создается новые проект и ставится под контроль CVS, создается проект, содержащий пустую форму, далее в Project Manager вызывается контекстное меню и выбирается пункт "Add to Version Control" после чего проект сохраняется в папку с интересным названием и судя по видео должно появится новое окно в котором показаны файлы, встающие под контроль и кнопка "Import". Далее выбираем репозиторий и ставим проект под контроль. Вносим изменения в проект, добавляем новые функции и т.д. Сразу в глаза бросается недоделанность в плане работы с SVN Project Manager"a. Почему нет никаких опознавательных знаков для файлов, которые были изменены, не находятся под контролем, игнорируются и т.д.? Это мелочь, но, по-моему очень значительная. Можно пережить, когда проект мелкий, состоит всего их нескольких модулей - и так запомнишь что и где менял и почему. А если крупный? Каждый раз открывать вкладку history и смотреть изменения или копаться в логах Subversion? Не удобно до жути. Следующий момент - добавление новых файлов под контроль. Здесь вроде бы все в порядке. Рассмотрим, например, такую ситуацию: только начинаете работать над проектом, уже нарисовалась какая-никакая структура репозитория, основные файлы проекта уже находятся там и Вам заходелось добавить, скажем, папку addons в которой Вы планируете хранить модули каких-нибудь сторонних библиотек, используемых в проекте. Создаем новую директорию, закидываем туда необходимые файлы и в контекстном меню Project Manager"а выбираем "Subversion -> Commit". В окне коммита устанавливаем флажок "Show unversioned files" и видим все файлы рабочей копии, которые не находятся под контролем: Далее добавляем ставим файлы под контроль, комментируем, коммиттим и т.д. в общем стандартный набор операций. Тут, как я уже сказал, все в порядке и работает нормально за одним небольшим исключением - когда в репозиторий отправляется много файлов IDE виснет наглухо. Видно, что в Messages вроде бы бегунок дёргается, т.е. что-то туда пишется, но IDE замирает и ничего делать кроме как ждать и ещё раз ждать не получается. Будем надеяться, что при первом Update RAD Studio эту часть доработают. Следующий момент - работа с Diff Viewer""ами. Так как я уже изрядно избалован пожизненной лицензией Code Merger"а, то, естественно, работа встроенного вьювера "Beyond Compare" меня никак не устроила. Просматривать добавленные лишние пробелы и удаленные излишние коментарии как-то не порадовало. Тем более, что на мой взгляд, Code Merger самым наилучшим образом подходит под работу с pas и dfm-файлами. Благо в опциях Delphi XE предусмотрена настройка внешних вьюверов. Пробуем настроить. Заходим в "Tools-->Options-> Difference Viewer" и добавляем новый внешний вьювер: Для настройки Code Merger в качестве внешнего вьювера ему необходимо в параметрах передать строку вида: pas file1 file2 r rw где pas - тип файлов для сравнения, file1 и file2 - имена файлов для сравнения, включая полный путь до них, r rw - доступ к файлам (r - чтение, rw - чтение и запись). Окно добавление внешнего вьювера выглядит следующим образом: Title - название вьювера, которое будет отображаться в списке. Programm - полный путь до exe-файла вьювера Working directory - рабочая директория. Заполняется автоматом на основе данных из поля Programm Parameters - параметры командной строки. В параметры допускается вставлять один или несколько макросов, доступных в списке Macros. Немного поэкспериментировав с макросами получилось обеспечить более-менее сносную работу Code Merger,используя строку параметров как показано на рисунке: После настройки необходимо перезапустить IDE и тогда Code Merger (тьфу-тьфу-тьфу) вроде бы нормально принимает все параметры и показывает различия между ревизиями и т.д. Теперь пробуем просмотреть с помощью внешнего вьювера различия. Выбираем в Project Manager файл, вызываем контекстное меню и указываем "Compare -> History Compare". Нам предлагаю выбрать что будем сравнивать сравнивать: Выбираем, жмем "Show Diff" и… грузится Beyond Compare. При этом в настройках я указал: Пробовал и наоборот - результат тот же. А что бы увидеть свой собственноручно настроенный вьювер в работе необходимо открыть файл, перейти на закладку History -> Difference, выбрать объекты для сравнения и нажать кнопку "Show in Difference Viewer": Вот тогда заработает Ваш вьювер. Во всех остальных случаях: через контекстное меню мэнеджера проектов, через главное меню "Edit -> Compare" - запускается Beyond Compare. Может кто-то смог от него избавиться и нормально настроить свой вьювер для запуска из мэнеджера проектов? Пока мое мнение по работе с внешними вьюверами в Delphi XE - не доработана до логического завершения. Если я настраиваю внешний вьювер и прошу чтобы он был дефолтным и приоритетным по сравнению со всеми другими - то он должен быть таковым всегда и везде, пока не изменю свои приоритеты в настройках . Двигаемся дальше. Проверим работу с репозиториями других разработчиков. В качестве эксперимента попробовал импортировать проект VirtualTreeView из Google Code. Выбираем в главном меню IDE "File -> Open From Version Control". Нас проят указать адрес репозитория и путь до директории с рабочей копией. Указываем: Жмем "Ok" и все работаем замечательно - рабочая копия создается без проблем: Итак, какие выводы я сделал для себя касательно работы с Subversion в RAD Studio XE:1. Буду ли я активно использовать все возможности, предоставленные мне разработчиками? Нет. Если очень сильно потребуется вплотную работать с SVN - воспользуюсь TortoiseSVN + Code Merger. На крайний случай можно сделать мелкий Commit или Update. 2. Расстроен ли я нынешней работой с SVN в Delphi XE? Нисколько. Во-первых, я не ожидал чего-то похожего на TortoiseSVN или Eclipse сразу же в первом релизе. Опять же маркетинг и всё такое - теперь активно использующие SVN разработчики будут ждать новых версий - там же всё поисправляют :). Во-вторых, мне, как обладателю безумно непредсказуемого подключения к Интернет, больше нравится работа с Git. Пусть по сравнению с SVN первое время работа с Git кажется чем-то непостижимо сложным и непонятным - со временем привыкаешь. Я привык. |