Mercurial

17
Mercurial – распределенная система управления версиями

Transcript of Mercurial

Page 1: Mercurial

Mercurial –распределенная система управления

версиями

Page 2: Mercurial

Системы управления версиями (VCS)

• Централизованные(CVS, SVN, VSS, TFS, Perforce, Vault, …)

• Распределенные (DVCS)(Git, Mercurial, Bazaar, …)

Page 3: Mercurial

Централизованные VCS

commit

update

Репозиторий Рабочая копия

update

\\Ann

\\Bob

\\Sources

Рабочая копия

Page 4: Mercurial

Распределенные VCS

Репозиторий Рабочая копия

commitupdate

commitupdate

commitupdate

pull

push

pull

\\Bob

\\Ann

push

\\Server ?

Page 5: Mercurial

Достоинства распределенных VCS

1. Можно продолжать работать, даже если нет возможности связаться с сервером (работа вне офиса, сервер недоступен…)

2. Разделение момента внесения кода в репозиторий и момента получения этого кода остальной командой

3. Положительные побочные эффекты: хорошая поддержка работы с ветвями

Page 6: Mercurial

Недостатки распределенных VCS

1. Более длительное обучение, смена мышления2. Теперь у вас теперь намного больше способов

прострелить себе ногу!!

Page 7: Mercurial

Mercurial

• Initial release: апрель 2005• Stable release: 2.0.1, декабрь 2011• Free под лицензией GNU GPL v2• Доступность на *nix, Windows, Mac OS• Доступность на Bitbucket, CodePlex, Google Code,

SourceForge, ...• Возможность конвертации репозиториев CVS, Subversion,

Perforce, Git, Bazaar…

• Интеграция с Visual Studio, NetBeans, Eclipse• GUI: TortoiseHg, MacHg

Page 8: Mercurial

Mercurial в деле

• Go programming language• Mozilla• NetBeans• OpenJDK• OpenOffice.org• Python• Symbian Platform• W3C• …

Page 9: Mercurial

Changeset. Набор изменений

• Является атомарной единицей истории в репозитории• Фиксируется в репозитории при выполнении commit• При push и pull между репозиториями пересылаются

фрагменты истории, т.е. наборы changeset’ов• Содержит:

1. Информацию об изменениях в файлах, но не конечные их версии

2. Имя автора, описание, время фиксации в репозитории3. Имя ветви разработки

Page 10: Mercurial

История изменений

0: c4daeac3e815

1: 0978b4a57360

2: e0c28f5e936c

3: 8f893b58f266

4: f74700da1dfc

5: a7260c887e12

6: 0c9b8a4d0ece

7: febd28ca9d94

Page 11: Mercurial

Расположение в файловой системе

Репозиторий

Рабочая копия

Sources

.hg

Core

Plugins

HowToBuild.txt

Page 12: Mercurial

Начало работы

• Справка: hg help• Создание репозитория: hg init• Статус рабочей копии: hg status• Включить в следующий commit информацию о

добавленных и удаленных файлах: hg addremove• Фиксация изменений: hg commit• Получение рабочей копии: hg update• Слияние: hg merge• История изменений: hg log

Page 13: Mercurial

Практика

Page 14: Mercurial

Работа в команде

• Клонирование репозитория: hg clone• Получение изменений: hg pull• Список изменений на получение: hg incoming• Отправка изменений: hg push• Список изменений на отправку: hg outgoing

Page 15: Mercurial

Практика

Page 16: Mercurial

Материалы для изучения

Официальный сайт:http://mercurial.selenic.com/

“Hg Init: a Mercurial tutorial” by Joel Spolsky:http://hginit.com/

“Mercurial: The Definitive Guide” by Bryan O'Sullivan:http://hgbook.red-bean.com/

Page 17: Mercurial

Спасибо за внимание

Автор: Максим ТереховE-mail: [email protected]