Система контроля версий - Mercurial Hg
Version Control System (VCS),
Revision Control System (RCS)
Что такое система контроля версий и для чего она нужна?
Когда разработчик ведет относительно сложный проект, то в результате работы
у него скапливаются папки вида:
Project
Project_old
Project_old1
Project_01012013
Project_21012013
Project_copy
(и так далее)
Растут копии проектов, бэкапы и зачастую всё это никак не документировано.
В результате подобной практики рождается множество проблем:
Проблема 1
Спустя, предположим, пол года с даты 21.01.2013 программист может не помнить
какая была разница в функционале сайта (или программы) в папках
Project_01012013
Project_21012013
Бывают ситуации когда проект надо откатить до более ранней версии.
И тут начинаются проблемы - надо вспомнить в какой папке есть необходимый функционал
и еще нет того функционала который уже не нужен.
Вы можете сказать - "А надо документировать!"
Да, Надо Документировать! Я, например, когда работал без VCS и плодил кучу папок,
ничего не документировал! Так же как и большинство программистов...
Проблема 2
Если разработчик увольняется или по какой либо иной причине передает проект новому программисту.
Другому человеку будет очень сложно решать задачи связанные с версиями проекта.
С текущей версией он разберется, а что либо откатить или найти функционал который был
в ранних версиях, но которого нет в текущей версии, будет очень сложно.
Проблема 3
Если вы работаете над проектом не один, а командой разработчиков.
Часто получается так что надо править какой либо файл параллельно с товарищем по команде.
Вы можете сделат себе копию и добавить функционал по своей задаче.
Но в этот же самый момент ваш товарищ внесет свои изменения в оригинальный файл.
В лучшем случае вам потребуется руками переносить свои изменения.
А в худшем случае вы затрете изменения который внес ваш товарищ.
Проблема 4
Вам требуется в текущем проекте реализовать нечто сложное, например какую либо акцию на сайте.
И реализовывать вы будете её примерно две недели.
В этот момент вся ваша команда продолжает работу над проектом и регулярно выносит изменения на боевой сервер
(выкладывает новые версии сайта в интеренет).
Ваши изменения, пока вы не закончите полностью вашу задачу и не протестируете, не должны попасть на боевой сервер.
Тоесть мы получаем Проблему3 в огромном масштабе - у вас будут изменены множество файлов проекта и эти изменения будут конфликтовать
с изменениями вашей команды. Эта проблема уже тупиковая.
Все эти проблемы решают системы контроля версий.
Систему контоля версий следует применять даже если вы работаете один над проектом.
И однозначно применять если работаете в команде.
Наиболее популярные системы контроля версий на сегодняшний день это - Mercurial Hg, Git, SVN.
Мы с вами будем изучать Mercurial Hg
(Mercurial в переводе с англита - ртутный, ну а Hg - обозначение химического элемента ртути)
Сам меркуриал живет здесь - http://mercurial.selenic.com/
Скачав и установив меркуриал с оф сайта, вы получите функционал этой системы контроля версий в работе с командной строкой. В ряде случаев это удобно.
Но в большинстве случаев удобнее использовать визуальные средства для работы с меркуриалом. Так же это более удобнее для изучения и для понимания работы меркуриала
и системы контроля версий.
И в этом нам поможет замечательная программа Tortoise Hg (http://tortoisehg.bitbucket.org/).
Программа является свободнораспростроняемой и кроссплатформенной (тоесть
работает на Windows, Linux и MacOS)
Последнюю версию скачать можно тут http://tortoisehg.bitbucket.org/download/index.html
Скачайте и установите последнюю версию программы.
(Каких либо хитростей в установке нет. Единственное если у вас Windows 7 x64
установите галочку поддержки x86 систем. Без нее меркуриал может не интегрироваться в контекстное меню тоталкоммандера)