Вчора задумав спробувати використовувати нову можливість RAD Studio XE - попрацювати з Subversion. Переглянув ще раз офіційний ролик де розповідається про цю фиче, створив репозиторій на Google Code, простенький Delphi-проект і почав своє маленьке дослідження. В принципі, я не очікував побачити прямо так відразу в Delphi XE всі можливості роботи з CVS як, наприклад, в тому ж Eclipse, але, що вийшло то вийшло ...
Вносимо зміни в проект, додаємо нові функції і т.д. Відразу в очі кидається недоробленість в плані роботи з SVN Project Manager "a. Чому немає ніяких розпізнавальних знаків для файлів, які були змінені, не перебувають під контролем, ігноруються і т.д. Це дрібниця, але, по-моєму дуже значна. Можна пережити, коли проект невеликий, складається всього з декількох модулів - і так запам'ятаєш що і де міняв і чому. А якщо великий? Кожен раз відкривати вкладку history і дивитися зміни або копатися в логах Subversion? чи не зручно до остраху.
Наступний момент - додавання нових файлів під контроль. Тут начебто все в порядку. Розглянемо, наприклад, таку ситуацію: тільки починаєте працювати над проектом, вже намалювалася якась ніяка структура сховища, основні файли проекту вже знаходяться там і Вам заходелось додати, скажімо, папку addons в якій Ви плануєте зберігати модулі якихось сторонніх бібліотек, використовуваних в проекті. Створюємо нову директорію, закидаємо туди необхідні файли і в контекстному меню Project Manager "а вибираємо" Subversion -> Commit ". У вікні коммітов встановлюємо прапорець" Show unversioned files "і бачимо всі файли робочої копії, які не перебувають під контролем:
Наступний момент - робота з 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 (тьху-тьху-тьху) начебто нормально приймає всі параметри і показує відмінності між ревізіями і т.д.
Вибираємо, тиснемо "Show Diff" і ... вантажиться Beyond Compare. При цьому в налаштуваннях я вказав:
Пробував і навпаки - результат той же. А що б побачити свій власноруч налаштований вьювер в роботі необхідно відкрити файл, перейти на закладку History -> Difference, вибрати об'єкти для порівняння і натиснути кнопку "Show in Difference Viewer":
Ось тоді запрацює Ваш переглядач. У всіх інших випадках: через контекстне меню менеджера проектів, через головне меню "Edit -> Compare" - запускається Beyond Compare. Може хтось зміг від нього позбутися і нормально налаштувати свій переглядач для запуску з менеджера проектів?
Поки моя думка по роботі з зовнішніми Вьювер в Delphi XE - не допрацювали до логічного завершення. Якщо я налаштовую зовнішній переглядач і прошу щоб він був дефолтних і пріоритетним у порівнянні з усіма іншими - то він повинен бути таким завжди і скрізь. поки не зміню свої пріоритети в налаштуваннях.
Рухаємося далі. Перевіримо роботу з репозиторіями інших розробників. В якості експерименту спробував імпортувати проект VirtualTreeView з Google Code.
Тиснемо "Ok" і все працюємо чудово - робоча копія створюється без проблем:
Отже, які висновки я зробив для себе щодо роботи з Subversion в RAD Studio XE:
1. Чи буду я активно використовувати всі можливості, надані мені розробниками? Ні. Якщо дуже сильно потрібно впритул працювати з SVN - скористаюся TortoiseSVN + Code Merger. На крайній випадок можна зробити невеликий Commit або Update.
2. Чи розстроєний я нинішньою роботою з SVN в Delphi XE? Анітрохи. По-перше, я не очікував чогось схожого на TortoiseSVN або Eclipse відразу ж в першому релізі. Знову ж маркетинг і таке інше - тепер активно використовують SVN розробники будуть чекати нових версій - там же все повиправляв :). По-друге, мені, як власникові шалено непередбачуваного підключення до Інтернет, більше подобається робота з Git. Нехай в порівнянні з SVN перший час робота з Git здається чимось незбагненно складним і незрозумілим - з часом звикаєш. Я звик.