Система контролю версій mercurial

Система контролю версій mercurial
Є три системи контролю версій (svn, mercurial, git).

Дмитро Афанасьєв про mercurial

Для меркуріала існує своя графічне середовище - Tortoise HG (торти).

При установці Tortoise HG (тобто досить встановити Тортілу) встановлюється і MercurialHg.

Створюємо тестові проект

Всі маніпуляції з репозитарием відбуваються за допомогою програми hg.

Створимо репозитарій в командному рядку:

- створити новий репозиторій в цій папці (реп-й можна визначити по наявності папки .hg).

Hg Workbench і TortoiseHg

Hg Workbench - це запуск основної графічної програми при роботі з репозитарием.

TortoiseHg - окремі команди для окремих операцій.

Додати існуючі файли в репозиторій:

- додаємо файли в реп-й; або через Тортілу: Tortoise HG - add files

Але дані файли ще в репозитарій не додав.

Додаємо файли в репозитарій (виконуємо commit / фіксація).

Після натискання на кнопку Commit (Фіксувати) вибрані файли заносяться в репозитарій.

Commit в командному рядку:

hg commit -m ""-u

(User name без лапок і разом з -u).

Наприклад, hg commit -m "commit hi"

Створимо нову гілку в проекті, де і будемо реалізовувати необхідний функціонал:

Наприклад, в гілці default буде вестися "текучка", а в новій гілці буде новий функціонал.

Потім ми об'єднаємо гілку default з новою гілкою (виконаємо merge).

Роботу над новим функціоналом починаємо в гілці default і під час коммітов створимо нову гілку.

Створюємо нову гілку через інтерфейс: натискаємо на кнопку branch: default (ім'я гілки) - open new branch (пишемо назву нової гілки) - create Branch.

Перемикаємо гілки (переходь назад на гілку default), але через командний рядок *:

hg up <название ветки> -C

up (скорочене від update; при перемиканні гілок з прапором -С все незакоміченние зміни будуть втрачені!

* В командний рядок через інтерфейс TortoiseHG можна перейти в такий спосіб: сховище (Repository) - термінал (terminal).

Переходять на інші гілки (за допомогою графічної оболонки):

Клік по гілці (останній гурток поточної гілки - права кнопка миші - update (оновити)). Цим ми перемкнемося на гілку new_branch. Таким чином ми перемикається між гілками.

Зауваження: Рекомендується регулярно заливати головну гілку на другорядну (тобто переключилися на гілку new_branch і заливаємо в неї default (основна гілка)). Чим частіше це робити, тим менше буде конфліктів.

Тобто, наприклад, заливаємо дані з гілки default (головна гілка) на другорядну гілку (new_branch), перебуваючи на гілці new_branch (поточна):

Останній гурток гілки default - права кнопка миші - merge with local (злити з локальною копією)

Правило: БУДЬ-ЯКА гілки ПРИ ОБ'ЄДНАННЯ (MERGE) заливатиме У ПОТОЧНУ гілки.

При конфліктах натискаємо по resolved (улагоджені). Вибираємо опцію Tool Resolve (Улагодити засобом (правильніше інструментом)) - вибираємо засіб (kdiff3noauto) - тристоронній порівняння неавтоматизоване.

Програма kdiff3noauto складається з 3-х вікон:

  • 1 вікно це базові зміни;
  • 2-е (центральне) вікно це поточні зміни;
  • 3 -е ця гілка, яку ми хочемо merge -ть з нашої поточної гілкою.
  • Нижнє вікно - результат.

Вибір вікон (а також потрібних даних) робимо за допомогою кнопок A. B. C. І в результуючому вікні з'являється ті зміни, які ми вибрали після натискання на вікна (A. B. C). За конфліктів переміщаємося за допомогою стрілок (верх, низ).

Стає активною кнопка save. Щоб з'явилася кнопка save повинен бути вибір (A. B. C) по всіх змін, за якими ми ходимо стрілкою верх / низ. Збереглися і виходимо.

Файли з розширенням .orig з'являються під час конфліктів і як би "про запас", на випадок якщо ви затерли щось важливе.

додаємо виключення - то що буде визначено у файлі hgignore НЕ буде відправлено при PUSH.

glob - означає, що далі будуть опису файлів і папок з масками використовувані в операційних системах ( "*", ".").

regexp - далі буде опис файлів з регулярними виразами.

# Ігноруємо папку tmp
tmp
# Ігноруємо файл (всі файли, в яких міститься ім'я
# Local)
config / * local * .ini

# Папці htdocs / upload / ігноруємо всі файли крім
# Файлів з розширенням jpg і png
htdocs / upload /.+? \. (. (Jpg | png)). +

Робота над проектом в команді

Система контролю версій mercurial

remote server bitbucket.org

Створив репозитарій на сайті bitbucket.org. Використовувати bitbucket.org набагато зручніше, ніж організовувати власний сервер і відкривати там репозиторій. Безкоштовного доступу зазвичай вистачає на невелику групу програмістів.

Отже, реєструємося на bitbucket.org і створюємо наш перший репозиторій.

Зробимо так, щоб дані нашого проекту потрапили в репозиторій. Тобто при push зміни повинні будуть відправлятися на bitbucket.org (на створений раніше репозиторій). Якщо у вас вже є локальний проект, то вибираємо (I have an existing project) і отримуємо інструкції, які ми повинні внести в наш проект, але, якщо налаштувати як по інструкції, то при кожному push буде вимагатися пароль і т.д. Тому налаштуємо (автоматизуємо: щоб при кліці на push в Hg Workbench дані відразу відправлялися на віддалений репозиторій і т.д.) наступним чином:

Нам буде потрібно файл hgrc (папка .hg)

І файл (знаходиться: користувачі - имя_пользователя -) mercurial.ini.

і вставляємо його в hgrc + вище додаємо директиву [paths].

У mercurial.ini додаємо:

  • bb.prefix - шлях до нашого сховища;
  • bb.username - ім'я користувача;
  • bb.password - пароль.

Далі відкриємо Hg Workbench нашого проекту. Вище ми налаштували автоматизацію для зв'язку нашого сховища з головним. Натискаємо PUSH. тим самим проштовхує все на віддалений сервер.

Система контролю версій mercurial

клонування сховища

Клонувати проект будемо з віддаленого сервера розташованого на bitbucket.org.

У bitbucket.org натискаємо на кнопку clone. Копіюємо посилання.

На папці (до якої клонуємо проект) викликаємо clone. потім в source (джерело) вказуємо шлях звідки клонуємо; в destination (призначення) вказуємо шлях куди клонуємо. Все копія проекту створена.

При створенні нової гілки і коміта, а потім проштовхуванні в віддалені репозиторій відбудеться помилка (255) -. У будь-якому випадку, щоб проштовхнути зміни створені на новій гілці в репозиторій необхідно в терміналі використовувати команду:

Hg Commit - це так звана фіксація, запам'ятовуємо зміни. (Або додаємо нові файли)

Hg Workbench - подивитися всі версії (ревізії)

Злити з локальної - merge

У будь-який момент можна відкотитися на будь-яку ревізію: вибираємо ревізію і оновити. Цим ми переходь в обрану ревізію і виділяється окрема гілка для вищих ревізій.

Схожі статті