Система контроля версий Mercurial tortoiseHg

TortoiseHgВ своем втором посте, я писала об инструментах, которые я использую при работе с версткой, где среди прочего указывала систему контроля версий Mercurial TortoiseHg. И сегодня, в связи с участившимися запросами по этой теме, я решила рассказать о ней более подробно.

Сразу хочу оговориться, что я использую далеко не все ее широкие возможности, потому что работаю с ней недавно, но если вы до этого не слышали о tortoisehg, или планируете начать ею пользоваться, вам должно быть интересно.

Для чего нужна система контроля версий?

Как подсказывает сам вопрос, система контроля версий нужна для хранения и контроля версий проекта над которым вы ведете работу. Если у вас возникнет вопрос для чего нужно хранить версии, то я могу объяснить.

  1.  Во-первых для того чтобы сберечь собственные нервы, потому что если вдруг что-то пойдет не так, или вы случайно испортите какие-либо файлы, всегда была возможность вернуться на предыдущий этап.
  2. Во-вторых чтобы сэкономить собственное время, просматривая какие именно изменения вносились в ваш проект другими людьми, в результате которых он перестал нормально работать
  3. В третьих чтобы иметь возможность вести одновременную работу над будущей системой, а затем быстро и безболезненно объединять все фрагменты в один проект.

Список можно еще немного продолжить, но я думаю не стоит, потому что выдвинутых аргументов должно быть вполне достаточно. Системы контроля версий бывают разные, в частности мне известны SVN и Mercurial. У каждой системы есть свои поклонники, мне пока не доводилось работать с SVN, поэтому мы сегодня поговорим о Mercurial, а точнее о графической оболочке к ней под названием TortoiseHg.

С чего начать?

Начать нужно с непосредственной установки TortoiseHg, скачать последнюю версию можно отсюда. Процесс установки я думаю ни у кого сложностей не вызовет, отдельно Меркуриал устанавливать не нужно, посколько он интегрирован в Tortoise. Вот и все, теперь у вас есть своя система контроля версий, и все ее широкие возможности, доступные всего лишь по правому клику мыши.

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

Правила работы разберем на примере. Допустим у нас есть обычный html-файл, хрянящийся в папке works. Для того чтобы следить за историей его изменений, нам нужно создать репозиторий, где эти изменения будут хранится. Для этого следует нажать правой кнопкой мыши на папке works, вызвав контекстное меню, и выполнить команду TortoiseHg – “Create a repository here”.

создание репозитория

После выполнения этой команды, внутри папки works, появится папка с именем .hg, в которой и будут храниться все отмеченные версии файлов. При этом следует заметить, что расположение самой папки works, не имеет никакого значения, репозиторий всегда будет создаваться внутри текущей папки.

Ну вот место для хранения версий есть, остается указать что именно мы будем хранить. Меркуриал, как нетрудно догадаться не хранит каждое ваше изменение, потому как это не удобно и не очень-то нужно. А хранить он будет то, что вы ему укажете.

Для того чтобы создать первую, начальную версию нашего проекта, снова вызовем контекстное меню на папке works и выполним команду TortoiseHg – “Commit”.

фиксирование текущей версии проекта

Следует заметить, что команда Commit, становится доступной из контекстного меню, только после создания репозитория. На экране должно появится окно следующего вида:

 

Здесь мы можем отметить все или конкретные файлы, по которым будем отслеживать изменения. И конечно же нужно ввести имя для сохраняемой версии. Поскольку мы отмечаем первую версию проекта, то так ее и назовем. Затем нажимаем кнопку Commit, и все наша первая версия проекта сохранена.

настройки сохранения версии

Хорошенько запомните комманду Commit (одно из значений в английском – фиксировать), поскольку она является основной при работе с Mercurial. То есть после того как вы внесли какие-либо серьезные изменения, или просто сделали очередной этап работы, зафиксируйте изменения, в виде следующей ветки проекта.

Внесение изменений

Теперь внесем несколько незначительных изменений в наш файл. Прежде чем мы зафиксируем следующий этап работы над нашим проектом, мы можем проследить какие именно изменения были внесены, после сохранения последней версии. Для этого, опять же из контекстного меню, нужно выполнить команду: TortoiseHg – “VisualDiff”. На экране отобразится следующее окошко:

сравнение внесенных изменений

 

Окно разделено на две области, левая область (как нетрудно догадаться) отображает прежний вариант файла, правая то что было изменено. Здесь можно внимательно проанализировать внесенные изменения, и если нужно отменить их, с помощью команды “Undo Changes”, доступной все по тому же контекстному меню. Здесь хорошо можно видеть, что мы добавили заголовок H1.

Если же все изменения вас устраивают, то можно смело выполнять команду “Commit”, и сохранять вторую версию нашего проекта. После этого можно посмотреть историю версий проекта, по команде TortoiseHg – “View Changelog”. 

просмотр всех рабочих версий

 

Здесь можно увидеть все отмеченные этапы разработки, список измененных файлов и внесенных в них изменений на каждом этапе. Этапы нумеруются с нуля.

И это еще не все

У tortoiseHg, есть множество других возможностей, таких как объединение нескольких веток разработки в одну, отслеживание состояния файлов, возможность создавать клон репозитория на флешке, для работы на разных компьютерах, синхронизация репозиториев и др.

А я сегодня рассказала о необходимом минимуме, который я считаю должен использовать каждый веб-разработчик. 


Posted

in

by

Comments

14 responses to “Система контроля версий Mercurial tortoiseHg”

  1. ZVano Avatar
    ZVano

    Спасибо огромное за статью. Есть ли продолжение?
    Интересует полный цикл работы с Mercurial при помощи “tortoiseHG”. В интернете, к сожалению, такой информации не нашел.

    Задача:
    Возьмем абстрактную компанию, которая разрабатывает ПО.
    Есть несколько проектов, в каждом проекте несколько модулей (обособленные подпроекты, которые косвенно связаны с другими модулями).
    Есть несколько десятков программистов, которые ведут разработку. Часть из них работает удаленно.
    Работа ведется от релиза до релиза. Т.е. задания раздаются ведущим после выхода очередного релиза. Программисты выполняют задания и сдают работу ведущему, а он делает релиз. К файлам релиза(главная линия) имеет доступ на запись только ведущий, остальные могут читать.

    Как такое реализовать при помощи Mercurial? Очень прошу подтолкнуть в нужном направлении. Уже 2 недели бьюсь, не могу разобраться.
    Может есть русскоязычные форумы с веткой по “tortoiseHG”?
    Как правильно создавать и мержить ветки? У меня они линией не соединяются.
    Как делать коммит в указаную ветку? У меня изменения пишутся в ствол.
    Как использовать несколько репозиториев? Как создать “сервер” mercurial на винде с автозапуском? Как создать список пользователей и настроить права доступа?
    Как настроить понимание кирилических имен файлов в “tortoiseHG”? У меня при смене узла выгружаются файлы с именами-кракозябрами.

    1. dreamhelg Avatar
      dreamhelg

      Спасибо за ваш комментарий, если вам интересен Mercurial, я постараюсь написать более подробную статью о работе с ним.

  2. ZVano Avatar
    ZVano

    Очень интересен. Буду благодарен.
    Так сложилось, что у нас на офисе не используется контроль версий. В результате постоянно теряются\перезаписываются исходники (приходится по нескольку раз одно и тоже делать). Для себя я завел TurtoseSVN и в нем отображал свои изменения. Теперь же руководство поставило задачу “Оценить СКВ. Выбрать наилучшую. Разобраться, установить, обучить”. В результате склоняюсь к Mercurial (читал много статей по Git, Bazzar, Subversion).

    Нужно ли постить в блог другие вопросы, возникающие у новичка (то биш меня 🙂 )? Может, они помогут при написании статьи.

  3. dreamhelg Avatar
    dreamhelg

    Вы меня немного озадачили если честно, потому как я не сама не так давно им стала пользоваться, но я попробую написать статью, и постараюсь ответить в ней на вопросы интересующие вас.

    Русскоязычные источники информации по tortoiseHG, мне неизвестны, просто не возникало необходимости их искать, вам бы наверное стоило почитать вики по меркуриалу, но если с английским не справитесь, тогда ждите статьи)). Если есть еще вопросы, пришлите мне на почту.

  4. ZVano Avatar
    ZVano

    Ок. Спасибо.

  5. ZVano Avatar
    ZVano

    Для устранения “ломания” названий файлов в кирилице нужно настроить окружение консоли по-умолчанию.
    Для этого:
    зайти в каталог “Windows”, найти файл “_default.pif”.
    Щелкнуть правой, выбрать “Свойства” на закладке “Шрифт” выбрать то ли “Только растровые”, то ли “Только TrueType” (не помню уже).

    Для того, чтобы появилось ветвление, его сначала нужно создать 🙂
    Т.е. нужно откатиться до какой-либо старой ревизии, изменить в ней что-либо. Затем закоммитить. Образуется ветвление.
    Если не откатываться, то и ветвления нет – граф вырождается в линию.

  6. Дмитрий Avatar

    Странно, почему Mercurial? SVN гораздо больше документирован по-русски да и возможностей его с лихвой хватит на большинство проектов. Я конечно понимаю, что всё новое – интересно, но если вдруг что.. то даже спросить не у кого 🙂

    1. dreamhelg Avatar
      dreamhelg

      Я не работала с SVN, но слышала что главное преимущество меркуриала, в независимых репозиториях. Плюс простота в использовании. А так дело вкуса конечно же.

  7. netdog Avatar
    netdog

    а еще hg как бэ более бытрый
    и более надёжный. И судя по прочитанным огрызкам статей, у SVN есть свои косяки

  8. Igor_VG Avatar
    Igor_VG

    У SVN есть центральный репозиторий, если он накроется, то комитить не сможете и к тому же останетесь только со своей версией (история проекта накроется)!
    У меркурия каждый клон есть полная копия всего репозитория. Так что потерять всю историю проекта сложнее. Любой клон может использоваться для объединения версий проекта (назначить его общим). Т.е. если компьютер с расшареным репозиторием накрылся, можно использовать для слияния версий (веток) любой другой актуальный клон…
    Вот ссылка для новичков:
    http://habrahabr.ru/blogs/development_tools/108658/

  9. Igor_VG Avatar
    Igor_VG

    Благодарю Вас за эту статью и за статьи про Mercurial – у Вас здорово получается! От себя добавлю, для тех кто не знает, что SVN уже устарела и имеет смысл, только если вы работаете с секретными проектами. Вся история хранится в одном месте (центральный репозиторий), вы приходите на работу, получаете последнюю версию, вносите изменения, фиксируете их в центр. репозиторий (только в него)! Украсть сможете только тот материал, с которым работали, а не весь проект.
    Работа с ветками не предполагалась при создании SVN, так что для разрешения конфликтов на центральный репозиторий обычно садят человека, который регулирует – кому, когда и куда сливать свои изменения. Так что нередки случаи, когда вы не можете занести свои изменения (ждёте, пока это сделают другие работники), а также не можете получить чужие изменения.
    Такие версии как Mercurial позволяют группе разработать ветку проекта и проверить все её возможности, фиксируя изменения между своими репозиториями, и не парить мозги коллегам из других отделов! Особенно, если ветка загнется 🙂

  10. Dmitry Avatar
    Dmitry

    Недавно начал использовать эту VCS удобно, наглядно, довольно просто, разобрался за день. Связал ее с bitbucket.org очень удобно.

  11. Радик Avatar
    Радик

    Как обновить рабочую копию на компьютере? Знаю, что pull и потом update, но где в интерфейсе команда pull?

    1. Игорь Avatar
      Игорь

      Synchronize(значок с двумя зелеными стрелками).
      Затем в новом окне в строке сверху выбираем удалённый репозиторий.
      Затем pull (кнопка с зеленой стрелкой “сюда” и двумя желтыми бочками).

Leave a Reply to Радик Cancel reply

Your email address will not be published. Required fields are marked *