Delphi і svn, digital-flame

Почитавши документацію по SVN в Delphi, спробував попрацювати з системою контролю версій з Delphi. У документації наводиться ось така порівняльна таблиця функціоналу TortoiseSVN і Delphi варіанти цього функціоналу. Спробуємо створити простий VCL проект і пройтися по цій таблиці.

Створення вихідного проекту

Отже, заведемо спеціальну папку для експериментів, наприклад DelphiSVN, в неї помістимо папку SourceFolder, в якій і збережемо наш початковий проект.

Delphi і svn, digital-flame

Імпорт в репозиторій на сервері VisualSVN

На першому кроці нам знадобиться імпортувати проект в репозиторій SVN. У доках, в таблиці, сказано, для імпорту потрібно зробити наступне

Система пропонує вибрати з Git, Mercury і Subversion

Delphi і svn, digital-flame

Delphi і svn, digital-flame

Зверніть увагу!

Ми імпортували 4 файлу, а в папці їх було 5. Якби ми робили імпорт з "черепахи", тобто з TortoiseSVN, то на сервер вирушило б всі 5 файлів. І в подальшому з цими файлами-примарами потрібно було б розбиратися в ручну. А так Delphi відправив тільки ті файли, які безпосередньо відносяться до проекту. Далі ми побачимо, що ці файли-примари збільшуються, з 1 до 3 в моєму експерименті.

До чого це? При роботі - имхо краще вибрати з чим переважно будемо працювати, або з Delphi, або з Черепахи, з усіма наслідками, що випливають. Якщо з Delphi, то вона сама знає які файли імпортувати, щоб потім не мучитися з синхронізацією, а якщо з Черепахи, то тоді потрібно розбиратися, що це за файли і як вони оновлюються. Тому що в моєму випадку, я спостерігав, що вони оновлювалися під час запуску програми, або закриття проекту і так далі.

У будь-якому випадку і той і інший підхід працюватимуть.

Repo-Browser або перевірка - чи все загрузилось нормально?

У таблиці документації зазначено наступне.

Do either of the following:

  • Project Manager | right-click a file | Browse Repository.
  • Project Manager | right-click a project | Browse Repository | choose either:
    • Subversion> Browse Repository> From Repository Root
    • Subversion> Browse Repository> From Project Directory

Що ж - нам потрібен не корінь Репозиторія, а директорія проекту в репозиторії, тоді вибираємо другий варіант.

Delphi і svn, digital-flame

Отримуємо наступну картину

Delphi і svn, digital-flame

Всі 4 файлу, які відправляли на сервер - знаходяться там. Хоча на локальному диску 6 файлів на даний момент - мабуть якісь додаткові файли. Мабуть менеджер імпорту щось врахував і завантажив тільки 4 файлу. Ну в загальному, подивимося, що далі буде.

Delphi і svn, digital-flame

Виділення робочої копії зі сховищ

У документації з цього приводу написано

Отже, закриємо поточний проект і відкриємо новий, який буде під контролем версій.

Delphi знову нас запитує про систему контролю версій - вибираємо SubVersion

Delphi і svn, digital-flame

Далі найцікавіше - нам потрібно вибрати шлях з якого Delphi завантажить файли проекту для контролю версій і шлях, в якому у нас буде перебувати робоча копія. Зробимо це в такий спосіб.

Delphi і svn, digital-flame

На початку посту ми створили спеціальну папку для експериментів DelphiSVN, в ній же створимо WorkFolder, в яку завантажимо файли з сервера.

Delphi благополучно завантажить файли і запитає який проект відкрити.

Delphi і svn, digital-flame

цікавий момент

Тут цікавий момент вийшов. І при імпорті на сервер з SourceFolder і при завантаженні в WorkFolder Delphi поставила їх на контроль - це можна побачити, якщо просто зайти в папку DelphiSVN - обидві папки підсвічені зеленим значком - означає, що синхронізація з сервером SVN виконана.

Збереження змін на сервер (Commit)

Зробимо якісь зміни, наприклад додамо ListBox і один рядок Line1

Delphi і svn, digital-flame

У документації написано наступне

Що ж, зробимо це ...

Delphi і svn, digital-flame

Delphi і svn, digital-flame

Delphi повернула нас до проекту.

У документації написано

Do either of the following:

Виберемо перший варіант.

Delphi і svn, digital-flame

Delphi і svn, digital-flame

У документації написано

Також кольором підсвічується - що додалося, а що поменшало. Зліва плюси і мінуси, я так розумію, в плюсі ​​те, що додалося, в мінусі - то, що було.

Delphi і svn, digital-flame

Подивимося на другий файл зі списку вище, Unit.dfm - тут також, Delphi дружелюбно нам підсвічує, що змінилося.

Delphi і svn, digital-flame

У документації це виглядає наступним чином

History tab | click (Annotate).
How To: Use the Annotation Feature.

Потрібно вибрати Юніт

Потім вибрати ревізію

І натиснути на анотацію

Delphi і svn, digital-flame

Delphi і svn, digital-flame

Якщо на сервері хтось щось поміняв, і нам потрібна конче свіжа копія, то робимо Update.


Delphi і svn, digital-flame

Update проекту в цілому

Delphi і svn, digital-flame

Ця операція відновлення пошкоджених або конфліктних файлів при невдалому Commit або Update. Тобто по суті це UPdate файлів з сервера, але мабуть з якимись специфічними моментами. Сам точно не знаю як це працює.

У документації написано наступне

Delphi і svn, digital-flame

У балці ця операція ніяк не відбивається.

відкат змін

У тій таблиці, по якій ми йшли відкат змін прямо не описаний, але тут нічого складного. Зайдемо в лог і зробимо Revert на тій ревізії до якої хочемо повернутися.

Delphi і svn, digital-flame

Delphi перепитає нас - в здоровому ми розумі?

Delphi і svn, digital-flame

Далі можливо випаде ось така помилка

Delphi і svn, digital-flame

Просить оновитися спочатку, що ж - зробимо це і повторимо Revert

Delphi і svn, digital-flame

Погодимося на перезавантаження і побачимо наступне

Delphi і svn, digital-flame

Після відкату - якщо нам дійсно потрібно це стан - потрібно зробити Commit - закріпити цей стан на сервері.

Delphi і svn, digital-flame

Ну і последее - дивимося лог

Delphi і svn, digital-flame

Загалом, ми виконали всі основні операції по роботі з клієнтом. З приводу командою роботи і моделі злиття - напишу в окремому пості.

Схожі статті