Home

Tags

Mercurial (hg), основы

2010-02-28 mercurial hg

Mercurial - кроссплатформенная распределённая система управления версиями, разработанная для эффективной работы с очень большими репозиториями кода.

Основные команды

Создание репозитария
hg init projlocal

Создание локальной копии репозитария
hg clone https://user@bitbucket.org/user/proj proj

Клонирование локального репозитария
hg clone proj proj2

Теперь можно работать и в proj и в proj2, для репозитария proj2 партерским будет proj, а для proj - https://[email protected]/user/proj

Узнать текущую ревизию (и родительские ревизии если текущая не слита) можно командой
hg tip

Суммарная информация о рабочей директории
hg summary

Наличие (двух) разошедшихся веток можно посмотреть командой
hg heads

Допустим мы находимся сейчас в proj2, и нужно узнать нет ли изменений от основного партнерского репозитария proj и для него:
hg incoming
hg outgoing

Состояние текущего репозитария
hg st
или hg status

Добавить файлы в репозитарий
hg add # добавляет все не версионные файлы
hg add some.file # выборочно 

Зафиксировать изменения в локальном репозитарии
hg ci -m "message"
или hg ci

Принять изменения от родителя (создает 2-ю ветку если текущий репозитарий изменялся)
hg pull

Отправить изменения родителю (создает 2-ю ветку у родителя если родитель изменялся)
hg push
или hg push repname
repname - партнерский репозитарий, можно прописать в файле .hg/hgrc, раздел paths.


Что-б изменения появились в текущем репозитарии, после получения данных от партнерского репозитария, нужно выполнить
hg up
hg update

Слить 2 ветки
hg merge

Если появились коллизии, их нужно разрулить (например коллизии в файле file.name, мы его поправляем) и выполнить
hg resolve -m file.name
флаг -m помечает файл как "разруленый"

Получить diff (отличия)
hg diff -r 123
Выводит изменения прошедшие от релиза 123 до текущего.

Игнорирование файлов

Для этого нужно в текущей папке создать файл .hgignore
# обычный синтаксис
syntax: glob
*.pyc
*~
# синтаксис регепсов
syntax: regexp
^\.pc/

http сервер

Запуск http сервера на 8000 порту
hg serve -p 8000

Что-б делать push могли все нужно записать в файл .hg/hgrc
[web]
push_ssl = false
allow_push = *

Разное

Mercurial может работать с различными типами протоколов http, https, ssh
hg clone proj ssh://exemple.com/proj