Mercurial (hg), основы
2010-02-28
mercurial
hg
Mercurial - кроссплатформенная распределённая система управления версиями, разработанная для эффективной работы с очень большими репозиториями кода.
Основные команды
Создание репозитария
Создание локальной копии репозитария
hg clone https://user@bitbucket.org/user/proj proj
Клонирование локального репозитария
Теперь можно работать и в proj и в proj2, для репозитария proj2 партерским будет proj, а для proj - https://
[email protected]/user/proj
Узнать текущую ревизию (и родительские ревизии если текущая не слита) можно командой
Суммарная информация о рабочей директории
Наличие (двух) разошедшихся веток можно посмотреть командой
Допустим мы находимся сейчас в proj2, и нужно узнать нет ли изменений от основного партнерского репозитария proj и для него:
Состояние текущего репозитария
Добавить файлы в репозитарий
hg add # добавляет все не версионные файлы
hg add some.file # выборочно
Зафиксировать изменения в локальном репозитарии
hg ci -m "message"
или hg ci
Принять изменения от родителя (создает 2-ю ветку если текущий репозитарий изменялся)
Отправить изменения родителю (создает 2-ю ветку у родителя если родитель изменялся)
hg push
или hg push repname
repname - партнерский репозитарий, можно прописать в файле
.hg/hgrc, раздел paths.
Что-б изменения появились в текущем репозитарии, после получения данных от партнерского репозитария, нужно выполнить
Слить 2 ветки
Если появились коллизии, их нужно разрулить (например коллизии в файле file.name, мы его поправляем) и выполнить
флаг
-m помечает файл как "разруленый"
Получить diff (отличия)
Выводит изменения прошедшие от релиза 123 до текущего.
Игнорирование файлов
Для этого нужно в текущей папке создать файл
.hgignore
# обычный синтаксис
syntax: glob
*.pyc
*~
# синтаксис регепсов
syntax: regexp
^\.pc/
http сервер
Запуск http сервера на 8000 порту
Что-б делать push могли все нужно записать в файл
.hg/hgrc
[web]
push_ssl = false
allow_push = *
Разное
Mercurial может работать с различными типами протоколов http, https, ssh
hg clone proj ssh://exemple.com/proj