Mercurial
Transcript of Mercurial
Mercurial –распределенная система управления
версиями
Системы управления версиями (VCS)
• Централизованные(CVS, SVN, VSS, TFS, Perforce, Vault, …)
• Распределенные (DVCS)(Git, Mercurial, Bazaar, …)
Централизованные VCS
commit
update
Репозиторий Рабочая копия
update
\\Ann
\\Bob
\\Sources
Рабочая копия
Распределенные VCS
Репозиторий Рабочая копия
commitupdate
commitupdate
commitupdate
pull
push
pull
\\Bob
\\Ann
push
\\Server ?
Достоинства распределенных VCS
1. Можно продолжать работать, даже если нет возможности связаться с сервером (работа вне офиса, сервер недоступен…)
2. Разделение момента внесения кода в репозиторий и момента получения этого кода остальной командой
3. Положительные побочные эффекты: хорошая поддержка работы с ветвями
Недостатки распределенных VCS
1. Более длительное обучение, смена мышления2. Теперь у вас теперь намного больше способов
прострелить себе ногу!!
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
Mercurial в деле
• Go programming language• Mozilla• NetBeans• OpenJDK• OpenOffice.org• Python• Symbian Platform• W3C• …
Changeset. Набор изменений
• Является атомарной единицей истории в репозитории• Фиксируется в репозитории при выполнении commit• При push и pull между репозиториями пересылаются
фрагменты истории, т.е. наборы changeset’ов• Содержит:
1. Информацию об изменениях в файлах, но не конечные их версии
2. Имя автора, описание, время фиксации в репозитории3. Имя ветви разработки
История изменений
0: c4daeac3e815
1: 0978b4a57360
2: e0c28f5e936c
3: 8f893b58f266
4: f74700da1dfc
5: a7260c887e12
6: 0c9b8a4d0ece
7: febd28ca9d94
Расположение в файловой системе
Репозиторий
Рабочая копия
Sources
.hg
Core
Plugins
HowToBuild.txt
Начало работы
• Справка: hg help• Создание репозитория: hg init• Статус рабочей копии: hg status• Включить в следующий commit информацию о
добавленных и удаленных файлах: hg addremove• Фиксация изменений: hg commit• Получение рабочей копии: hg update• Слияние: hg merge• История изменений: hg log
Практика
Работа в команде
• Клонирование репозитория: hg clone• Получение изменений: hg pull• Список изменений на получение: hg incoming• Отправка изменений: hg push• Список изменений на отправку: hg outgoing
Практика
Материалы для изучения
Официальный сайт: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/
Спасибо за внимание
Автор: Максим ТереховE-mail: [email protected]