Система управления версиями (version control system) хранит все изменения ваших файлов, позволяя вернуться к любой предыдущей версии всего проекта или его отдельных файлов. Вы можете просматривать изменения, сделанные в файлах в разное время, а при работе в команде система управления версиями позволяет легко вносить изменения в одни и те же файлы нескольким людям одновременно.
После того, как я начал пользоваться системой управления версиями в девяносто каком-то году, я уже не могу обходиться без этого инструмента: любое изменение исходного кода может привести к поломке сайта и вернуться к предыдущей рабочей версии без него будет непросто. Кроме того, часто возникает необходимость посмотреть, какие изменения были внесены в определенные файлы ранее.
Так как я почти всегда был виндузятником, мое знакомство с управлением версиями началось с Visual Source Safe. В свое время он предоставлял необходимые возможности, но на данный момент безнадежно устарел. Некоторое время назад ему на смену Microsoft выпустила Team Foundation Server (TFS) — довольно мощный и удобный инструмент, который хорошо интегрируется с Visual Studio и пользуется заслуженной популярностью у разработчиков.
Занимаясь своими разработками в одиночку, я некоторое время обходился возможностями Visual Source Safe (VSS). К сожалению, TFS довольно сложен в установке и настройке, поэтому я решил с ним не заморачиваться.
Возможно я бы и дальше пользовался VSS, но меня не устраивали в нем две вещи:
- репозиторий (файлы системы управления версиями) хранился на моем компьютере, таким образом в случае поломки диска я мог рассчитывать только на свои бэкапы (которые недостаточно регулярны)
- VSS хорошо интегрируется с Вижуал Студией, но при работе с другими редакторами им пользоваться неудобно
Вместе с тем, мне постоянно попадаются статьи про другие системы: svn, git, mercurial и другие. Они бесплатны сами по себе и есть даже хостинги, которые позволяют размещать на них ваши проекты тоже бесплатно.
SVN является аналогом VSS и TFS (все они работают с некоторым центральным репозиторием), а вот git и mercurial реализуют популярную сейчас идею распределенного репозитория. После небольшого исследования я выбрал для себя mercurial (просто по нему немного больше информации в Сети).
Не буду вдаваться в особенности распределенных систем управлениями версиями, а просто дам ссылку на отличное руководство для новичков по Mercurial от Джоэля Спольски, перевод которого был размещен на Хабре:
http://habrahabr.ru/blogs/development_tools/109428/
Ссылка ведет на шестую, заключительную часть руководства, в начале которого есть ссылки на предыдущие части — начинать надо, конечно, с первой части.
Для Visual Studio есть два плагина для работы с mercurial: HgSccPackage и VisualHG. Плюс, имеется TortoiseHg, который ставится в качестве Windows shell extension. Я поставил себе только HgSccPackage, а вне студии использую командную строку (это совсем несложно).
Наконец, в качестве хостинга репозитория я выбрал Bitbucket: для проектов, в которых участвует не более пяти пользователей оплата не требуется.
В итоге получается, что репозиторий хранится на Битбакете и моем компьютере. Если у меня полетит диск, то я смогу получить все свои файлы с Битбакета. Если, вдруг, закроется Битбакет, то у меня будет локальный репозиторий со всей историей изменений (который я могу потом перенести на другой хостинг). Профит!
А какими системами управления версиями пользуетесь вы?