Контроль версий

Что это и зачем оно мне?

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

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

А если разработку ведет один человек? В web'е часто разработкой сайта занимается один человек, но даже здесь удобнее пользоваться контролем версий.

Как я пользуюсь системой контроля версий.

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

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

По коммитам можно достаточно быстро найти файл где я когда то вносил какие то полезные или наоборот правки. Даже если это было несколько лет назад.

Также контроль версий позволяет удобно отловить изменения в проекте. Например, если, вы разрабатывали проект, потом его поддерживал другой разработчик, а затем проект вернулся к вам. Даже если другой разработчик не пользовался контролем версий. По этому же принципу можно отследить действия вирусной активности или злоумышленника.

Кроме того контроль версий упрощает выгрузку изменений на боевой сервер. Можно либо, выгрузить только измененные, в определенной ревизии, файлы (сохраняя структуру папок). А затем любым привычным способом залить их на сервер. Либо можно на боевом сервере развернуть Mercurial, и отправлять изменения сразу туда, затем в нужный момент зайти на сервер и выполнить команду


hg up

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

ВАЖНО!!! Если вы развернули на боевом сервере Mercurial, проследите, чтобы доступ из-вне к директории .hg был закрыт. Для этого, если сервер, apache, положите в директорию .hg файл .htaccess со следующим содержанием:


Deny From All

Полезные команды

Основные команды я дублировать не буду, для начинающих рекомендую обратится за инструкцией на хабр: Hg Init: Часть 2. Основы Mercurial

Для проталкивания коммита на сервер через ssh тоннель нужно использовать адрес вида


ssh://USERNAME@SERVERNAME/PATH, 

например:


ssh://max22@max22.ru//home/site/max22/public_html

Работа Mercurial с репозиториями Git

Для работы Mercurial с репозиториями Git используется плагин Hg-Git. Он входит в стандартную поставку Mercurial. Чтобы его включить, нужно в рабочей среде TortoiseHg пройти по меню Файл->Настройки->Глобальные настройки->Расширения, и отметить галочкой hggit.

Все! Теперь в путях до сервера добавляйте git и вперед! Например:


hg clone git://github.com/schacon/munger.git
hg push git+ssh://git@github.com/schacon/hg-git.git

Оставить комментарий:

Представьтесь пожалуйста:
Электронная почта:
Электронный адрес не публикуются
Текст сообщения:
Для подсветки кода, оборачивайте ваш код в теги <code></code>
Введите 5 цифр с картинки:

Рекомендую:

Поддержать проект:

бесполезная кнопка, которую еще никто не нажал:)
Нажали! Кнопку нажали уже 7 человек!!! Спасибо, очень мотивирует!