Система контроля версий mercurial
Есть три системы контроля версий (svn, mercurial, git).
Дмитрий Афанасьев о mercurial
Для меркуриала существует своя графическая среда - Tortoise HG (тортила).
При установке Tortoise HG (то есть достаточно установить тортилу) устанавливается и MercurialHg.
Создаем тестовые проект
Все манипуляции с репозитарием происходят при помощи программы hg
.
Создадим репозитарий в командной строке:
hg init
- создать новый репозиторий в текущей папке (реп-й можно определить по наличии папки .hg
).
Hg Workbench и TortoiseHg
Hg Workbench - это запуск основной графической программы при работе с репозитарием.
TortoiseHg - отдельные команды для отдельных операций.
Добавить существующие файлы в репозиторий:
hg status
- просмотр статуса репозитария (
знак ?
- говорит о том, что файлы репозиторию неизвестны;
M
- modify);
hg add
- добавляем файлы в реп-й; или через тортилу: Tortoise HG - add files
Но данные файлы еще в репозитарий не добавились.
Добавляем файлы в репозитарий (выполняем commit
/ фиксация).
После нажатия на кнопку Commit (Фиксировать) выбранные файлы заносятся в репозитарий.
Commit в командной строке:
hg commit –m "<description>" -u<user name>
(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
добавляем исключения - то что будет определено в файле hgignore
не будет отправлено при PUSH
.
glob
- означает, что далее будут описания файлов и папок с масками используемые в операционных системах ("*
","?
").
regexp
- далее будет описание файлов с регулярными выражениями.
Например:
syntax: glob
# игнорируем папку tmp
tmp
# игнорируем файл (все файлы, в которых содержится имя
# local)
config/*local*.ini
syntax: regexp
# папке htdocs/upload/ игнорируем все файлы кроме
# файлов с расширением jpg и png
htdocs/upload/.+?\. (? ! (jpg|png)) . +
Работа над проектом в команде

remote server bitbucket.org
Создал репозитарий на сайте bitbucket.org. Использовать bitbucket.org гораздо удобнее, чем организовывать собственный сервер и открывать там репозиторий. Бесплатного доступа обычно хватает на небольшую группу программистов.
— Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта.
— Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы).
— SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание.
SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение
Итак, регистрируемся на bitbucket.org и создаем наш первый репозиторий.
Сделаем так, чтобы данные нашего проекта попали в репозиторий. То есть при push
изменения должны будут отправляться на bitbucket.org (на созданный ранее репозиторий). Если у вас уже есть локальный проект, то выбираем (I have an existing project
) и получаем инструкции, которые мы должны внести в наш проект, но, если настроить как по инструкции, то при каждом push
будет требоваться пароль и т.д. Поэтому настроим (автоматизируем: чтобы при клике на push
в Hg Workbench данные сразу отправлялись на удаленный репозиторий и т.д.) следующим образом:
Нам потребуется файл hgrc
(папка .hg
)
И файл (находится: пользователи – имя_пользователя – ) mercurial.ini
.
В hgrc
добавляем (Копируем адрес нашего реп-я):
[paths]
default = https://denzlll@bitbucket.org/denzlll/test_repo_mer
и вставляем его в hgrc
+ выше добавляем директиву [paths]
.
В mercurial.ini
добавляем:
[auth]
bb.prefix = https://denzlll@bitbucket.org/denzlll/test_repo_mer
bb.username = denzlll
bb.password = 10198211kost
, где
bb.prefix
– путь к нашему репозиторию;bb.username
- имя пользователя;bb.password
– пароль.
Далее откроем Hg Workbench
нашего проекта. Выше мы настроили автоматизацию для связи нашего репозитория с главным. Нажимаем PUSH
, тем самым проталкиваем все на удаленный сервер.

Клонирование репозитория
Клонировать проект будем с удаленного сервера расположенного на bitbucket.org.
В bitbucket.org кликаем по кнопке clone
. Копируем ссылку.
На папке (в которую клонируем проект) вызываем clone
, затем в source
(источник) указываем путь откуда клонируем; в destination
(назначение) указываем путь куда клонируем. Все копия проекта создана.
При создании новой ветки и комита, а затем проталкивании в удаленные репозиторий произойдет ошибка (255) - ?. В любом случае, чтобы протолкнуть изменения созданные на новой ветке в репозиторий необходимо в терминале использовать команду:
hg pus -f
разное
Hg Commit - это так называемая фиксация, запоминаем изменения. (или добавляем новые файлы)
Hg Workbench - посмотреть все версии (ревизии)
Слить с локальной - merge
В любой момент можно откатиться на какую-либо ревизию: выбираем ревизию и обновить. Этим мы переходи в выбранную ревизию и выделяется отдельная ветка для вышестоящих ревизий.
Комментарии к статье
Чайник учит чайников, при этом сам путается в основах местами. Найс рофлишь!
скорее шляпа тот , кто пользуется этой шнягой в 2017
Ахахха, респектосище за Бойку и Чамберса))