sunLoadingImage
whowedImag
decoration left 1
decoration left 2
transhome
transprojects
transgallery
transarticles
decoration rigth
English
Українська
Show/Hide search bar
black cat logo variable logo
[08 Лис 2012]

Основи використання SVN

Ви можете використовувати SVN (subversion) для керування різними версіями коду чи файлів таким чином, щоб над одним і тим самим проектом могло працювати багато людей. Або ви можете використовувати SVN для себе: для контролю розробки, слідкування за змінами і можливості відновлення попередніх версій проекту.

Зазвичай SVN сервер розміщається на віддаленому сервері, але якщо ви хочете використовувати SVN на вашому комп'ютері тільки для персональної розробки, тоді вам необхідно встановити локальний SVN сервер, такий як Apache subversion і клієнт до нього, наприклад, Tortoise SVN. Локальний SVN сервер не допоможе у разі поломки жорсткого диску та при колективній роботі над проектом, але може бути корисним для керування особистими "домашніми" проектами і в разі відсутності мережевого SVN сервера. Сервер Apache Subversion можна використовувати без Tortoise SVN клієнта, але в такому разі всі дії будуть проводитися через консоль (а команд є велика кількість). Клієнт Tortoise SVN дозволяє полегшити роботу з сервером через використання спеціалізованих діалогових вікон. Клієнт додасть індикатори стану для іконок файлів і папок, а також додаткові команди в контекстне меню.

Термінологія SVN
  • Репозиторій – папка, де зберігається база даних з усіма версіями проекту.
  • Робоча копія – папка, яка з'єднана з репозиторієм і використовується для розробки проекту.
  • Ревізія - версія проекту в репозиторії.
    Три кроки для початку роботи з SVN

    Перш за все, необхідно створити папку для усіх репозиторіїв, і в нії створити папку для репозиторія конкретного проекту. Далі, клікаємо правою клавішою миші по папці репозиторія проекту і вибираємо наступну дію: TortoiseSVN -> Create repository here. Тепер ця папка буде містити базу даних усіх версій проекту, усі версії коду та файлів (зображень і тд.). Також для створення нового репозиторія можна використати консольну команду: svnadmin create C:/repositories/repositoryForProject

    Коли репозиторій створений, необхідно заповнити його, а саме імпортувати проект до репозиторія. Імпорт проекту означає, що в репозиторій буде скопійована вся структура проекту. Дану дію можна провести з допомогою команди Import з контекстного меню (правивий клік по папці репозиторія). Скопійованій версії проекту буде призначений порядковий номер 1 (revision 1). Також імпорт проекту можна провести з допомогою консольної команди: svn import -m --force-log C:/project file:///C:/repositories/repositoryForProject

    Тепер необхідно обрати папку для розробки (папку, де буде розміщатися робоча версія проекту), наприклад, C:/projectDev. Спочатку ця папка є пустою, і в неї необхідно експортувати проект з репозиторія. Це можна зробити з допомогою команди контекстного меню SVN Checkout. В полі зі шляхом необхідно вказати шлях до репозиторія - file:///C:/repositories/repositoryForProject. Після того як буде натиснено кнопку ОК, проект з репозиторія буде скопійований у нову папку. Ця папка буде містити файли проекту, а також дані про зміни, які необхідні для SVN сервера. Робочих копій проекту може бути багато. Якщо над проектом працює багато розробників, то кожен з них буде мати свою робочу копію.

    Робота з SVN

    Репозиторій та робоча копія створені, і тепер можна приступати до розробки. Модифікації потрібно вносити в файли, які розміщені у робочій копії (C:/projectDev). Коли ви будете задоволені поточним станом модифікацій і захочете виділити їх як окрему версію, то необхідно повідомити сервер про необхідність занесення змін у базу даних. Це означає, що усі поточні зміни будуть збережені на сервері у формі нової ревізії. Створення нової ревізії відбувається через команду контекстного меню - Commit.

    Тепер уявімо, що над проектом працює багато людей. І хтось вислав на репозиторій свої модифікаї коду. Ці зміни не зявляються автоматично у вашій робочій копії. Для цього необхідно використати команду контекстного меню - Update. Після завершення оновлення, ваша робоча копія буде відповідати останній ревізії з репозиторія.

    При оновлені чи створенні нової ревізії можуть виникнути конфлікти. Конфлікт означає, що частина змін внесених вами перекривається зі змінами іншого користувача. Для кожного файлу з конфліктами необхідно виконати команду Edit Conflicts, переглянути і проаналізувати конфлікти, змінити код таким чином, щоб правильно враховувалися усі зміни і зберегти його. Якщо ви впевнені, що конфлікт є вирішеним, то використайне команду Resolve Conflict для зняття з файлу блокуючого стану.

    Є велика кількість інших корисних команд. Далі наведені деякі з них:

  • Diff - команда для файлів, яка показує зміни внесені вами після останього оновлення.
  • Diff with previous version - показує різницю між вашими змінами і попередніми ревізіями.
  • Add - додає нові файли та папки до робочої копії (і згодом до репозиторія).
  • Revert - скасування усіх модифікацій. Модифіковані файли будуть перенесені у корзину.
  • Revert to revision - відновити версію файла чи папки до вказаної ревізії.
  • Show log - для обраних файлів та папок показує список ревізій, де вони змінені.
  • Compare with base - показує локальні зміни.
  • Export - експорт робочої копії у іншу папку без збереження з'єднання з репозиторієм.
  • Ignore - заборона відсилання вибраних файлів у репозиторій.
  • RepoBrowser - відкрити переглядач структури репозиторія.
    Як працює SVN?

    Subversion в своєму ядрі є репозиторієм. Інформація зберігається як ієрархія папок та файлів. Репозиторій сам по собі є сервером, який запам'ятовує будь-які зміни в структурі та вмісті. В SVN робота може відбуватися по схемі: заблокувати дані - модифікувати дані - розблокувати дані. Коли файл заблокований одним користувачем, то ніхто інший не може вносити до нього зміни. Це приводить до затримок у розробці, так як двоє чи більше користувачів не можуть працювати одночасно. Але SVN в основному режимі використовує наступну схему роботу: копіювати дані з репозиторія - модифікувати дані - комбінувати дані і вислати до репозиторія. Така схема роботи може призвести до конфліктів між змінами багатьох користувачів, але зазвичай такі конфлікти дуже легко виправляються. Блокування варто використовувати тільки у випадку масштабних змін.

    Структура папок в репозиторії

    Репозиторії комерційних проектів мають дивну структуру папок: папки trunk, branches і tags. Вони мають наступне призначення:

  • /trunk - головна лінія розробки, зазвичай стабільна робоча release версія.
  • /branches - код, який містить основні зміни, але ще перебуває в розробці чи тестах. Згодом буде об'єднаний з папкою /trunk.
  • /tags - містить копії release версій.

    Але для "домашніх" проектів можна обійтися без цих папок.

    SVN в Qt

    Qt має вбудовану підтримку різних систем контролю версії. Subversion є серед них. Але все ж в більшості випадків легше користуватися TortoiseSVN.

    Перш за все, необхідно налаштувати Qt для роботи з сервером контролю версій. Запустіть Qt і перейдіть у Tools -> Options -> Version Control -> Subversion. Вкажіть шлях до файлу svn.exe (в папці з Subversion) і заповніть поля автентифікації.

    Тепер можна імпортувати ревізію з репозиторія, як новий проект. Виконайте наступні команди: File -> New Project ->Import Project -> Subversion Checkout. Оберіть репозиторій з якого необхідно створити проект, наприклад, file:///C:/repositories/repositoryForProject, а також папку для робочої копії.

    Різні SVN команди можна знайти тут: Tools -> subversion -> XXX.




  • Sun and Black Cat- Ігор Дихта (igor dykhta email) © 2007-2014