Mercurial+Bitbucket. QuickStart

Итак, продолжение (интро, она же первая часть тут) серии по совместному использованию РСКВ Mercurial и хостинга «кода» BitBucket. Кавычки использованы не случайно. Функциональность рассчитана на файлы абсолютно любого типа. К тому же, после недавнего изменения тарифных планов, на Bitbucket сняли ограничение на число репозиториев (приватных в том числе) и их размер. Ограничения остались — 5 человек на доступ в бесплатном аккаунте. Но это вполне нормально, большая команда вполне способна оформить и платный аккаунт, тем более расценки копеечные. А для одиночки и/или небольшой команды Bitbucket просто находка. Тот же github на бесплатном аккаунте не даёт приватные репозитории, а сохранить только для себя немного кода иногда надо.

Итак начнём quickstart на примере хранения нескольких html- и css-файлов:
0. Установка, собственно, mercurial с http://mercurial.selenic.com
Это консольная утилита под все распространённые операционки. Кстати, один из немногих представителей софта, где консольная версия удобнее GUI. Есть, конечно, всякие TortoiseHG и куча плагинов под разные IDE, но юзабилити там особенное. My way для РСКВ это повесить на хоткеи нужные наборы консольных команд, вызываемых из Notepad++ или SublimeText.
1. Создание с нуля или клонирование существующего репозитория
Практика показала, что создание пустого репозитория сразу на Bitbucket и потом командой
hg clone http://bitbucket.org/saudade/stuff stuff
клонирование к себе на ПК проще, чем инициализация с помощью «hg init» и указывание разного барахла настроек в файле .hgrc. Итак, команда набирается в консоли: собственно hg clone, адрес удалённого репозитория (не обязательно bitbucket, конечно) и директория, где будет репозиторий. В указанной папке окажутся все файлы проекта. В данном примере это несколько html- и css-файлов плюс каталог .hg, в котором mercurial хранит всё, что ему надо для работоспособности репозитория.
2. Теперь начинается сама работа/программирование/etc. Стандартное добавление, изменение, удаление. Синтаксис вполне понятен:
hg add filename
hg remove filename
hg rename old_name new_name

3. Через какое-то время можно будет зафиксировать результаты в изменяемых файлах. (Исправили баг к софту, над которым работаете, дописали главу в вашей нетленке или просто закончили применять фильтры к редактируемому изображению). Это называется коммит. Синтаксис:
hg commit -m "What I`ve done"
Параметр «-m» указывает, что к коммитам пишутся комментарии. Их потом можно прочитать в changeset`ах. В них кратко или не очень можно объяснить, чего вы наворотили. Изменения запишутся в локальный репозиторий. Если передумали, можно откатиться на предыдущую ревизию (hg rollback)
4. Теперь можно «запушить» изменения в удалённый репозиторий (тот самый много раз упоминающийся bitbucket):
hg push http://bitbucket.org/saudade/stuff
или
hg push http://User:Pass@bitbucket.org/saudade/stuff
В первом случае при каждом пуше надо набирать логин и пароль от аккаунта bitbucket (среди всего прочего, на bitbucket есть и поддержка openID), во втором — нет. Один раз настроенная команда просто работает.

Update: На самом деле, при пуше совсем не обязательно каждый раз вводить урл. Он запоминается внутри файла .hg/.hgrc как default path. И достаточно команды «hg push».
Также, несмотря на дисклеймер к прошлому посту, для Notepad++, в ST2, в bat-файл или куда удобней можно повесить такое:
cd stuff
hg commit -m "What I`ve done"
hg push http://User:Pass@bitbucket.org/saudade/stuff

Это коммит и сразу пуш в один клик.

Несколько общих слов для чего вообще заморачиваться с РСКВ, а не просто тупо кидать файлы в dropbox:
— Наличие резервной копии. «А-а-а! Комп взорвался. Ну и что? Одной командой clone я получаю всё, что долгие месяцы/годы складывал в РСКВ»
— Этой же командой clone можно быстро сделать «песочницу» (просто тупо ещё один реп рядом). Что-то проверить и склеить с основным. Хотя, для того чтобы не заниматься таким идиотизмом и придумали ветвление, теги, букмарки и прочее.
— Этой же командой clone, а в последствии
cd stuff
hg pull http://bitbucket.org/saudade/stuff (или просто hg pull, см. выше про default path)
hg update

люди могут быстро получать все нужные файлы или обновления, без всякого «ты вот по этой ссылке возьми кусочек, потом вот тут посмотри и вот отсюда ещё загрузи».
— Версионность и история. «Я написал что-то там полгода назад. А потом стёр/заменил. Откачусь-ка к тем изменениям.»
— Sharing всякого стаффа. «Посмотри вот тут и скажи что-нибудь».
— Ну и классические принципы использования РСКВ — merge и т.п.
P.S. Практика показала, что для таких ОСей как windows, лучше воздержаться от создания репозитория на диске D, лучше C, ибо CMD не особо любит команду «cd d:/». Конечно, через тот же Notepad++ можно провести команды для коммитов и пушей, да и «hg clone» проходит даже через саму CMD, но… P.S. на то и P.S.

Advertisements

One response to “Mercurial+Bitbucket. QuickStart

  1. Уведомление: Mercurial+Bitbucket. Интро « Reflection Of A Life, v3·

Обсуждение закрыто.