Subversion
Или «Как не сломать мозг при управлении несколькими программистами». Что такое Subversion?
«Коротенько, но о самом гнусном.»
-к/ф. «Кромешная тьма»
Википедия поясняет нам что:
Subversion(также известная как «SVN») —свободная централизованная система управления версиями, официально выпущенная в 2004 году компанией CollabNet Inc.
Система управления версиями (от англ. Version Control System, VCS или Revision Control System) —программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости, возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение и многое другое.
Теперь представим такую ситуацию:
Работают 2 (или более) программистов над игрой/сайтом. Один работает над одним модулем, другой над другим. Все у них хорошо и они весело обмениваются кодом с изменениями. Но вот один из них для работы своего модуля, слегка и немного поменял (дополнил) какой-то третий сторонний, уже давно написанный и «пофиксеный», модуль (функцию). У него все хорошо и прекрасно работает. Он скидывает свои изменения второму программисту и тот все смело копирует с перезаписью в свою рабочую копию. И вот незадача… Второй-то программист тоже использовал этот модуль (функцию) для своего модуля. И его модуль теперь отказывается нормально работать. А то и вообще не работает. И начинает он копаться в уже давно написанном и забытом коде в поисках ошибки. Находит, исправляет, и модуль опять работает нормально. Он (второй) радостный, что все работает, кидает свой код первому. Теперь ситуация повторяет снова, меняются только лица. И так до бесконечности.
Или другая ситуация:
Пишут те же программисты игру. Все у них хорошо. Все работает. Но вот пришла идея от геймдизйнера полностью поменять механику игры. Сделать из RPG-RTS просто RPG. На «совете» идея была обсуждена и принята к исполнению. И сидят теперь наши программисты и репу чешут. Они то рендер уже написали и начали «ваять» основу механики. Теперь надо им рыться в коде и удалять ставшие уже не нужными функции и модули. Можно конечно оставить, но потом им же придется ковыряться в «тоннах» не используемого кода в поисках ошибок в какой-то «нужной» функции.
Что нам дает Subversion в таких ситуациях.
В первой она дает возможность просмотреть, что именно изменил другой программист и сразу учесть изменения в «старом и забытом» коде.
Во второй она дает возможность 2-мя щелчками откатиться к любой предыдущей версии программы (сайта).
Удобно? Конечно. Как начать? Сейчас расскажу. Как начать использовать?
«Где карта Джим?»
-«Остров сокровищ» Р.Стивенсон
Я расскажу процесс регистрации, установки необходимых программ, «заливки дефолта» и получение рабочей копии на примере GoogleCode и TortioseSVN.
1. Регистрируемся на Google.
Т.к. на Google все сервисы завязаны вокруг Gmail.com, то нам необходимо зарегистрировать почтовый ящик. Думаю, с этим проблем не возникнет. Там анкета на русском языке и все обильно прокомментировано. http://gmail.com/ 2. Создаем новый проект на GoogleCode.
http://code.google.com/hosting/createProject
Project name – название проекта. Должно состоять из букв нижнего регистра и не содержать пробелов. Оно пойдет в адрес вашего репозитория.
Project summary – Краткое описание проекта. Тут ограничение только на длину строки
Project description – Подробное описание проекта. Вот тут вы можете дать волю своему воображению.
Version control system – Выбор системы которую будете использовать. Нам сейчас надо Subversion.
Source code license – лицензия под которой будет распространяться код. GoogleCode создан для хостинга Open Source проектов. Если у вас закрытый проект, то либо выбирайте другой хостинг. Либо «поднимайте» свой сервер Subversion. Можно конечно создать репозиторий и никому не говорить, что он есть, кроме участников команды и жестоко карать тех, кто его выдаст
Use a separate content license – Лицензия, под которой будет, распространятся контент проекта (музыка/модели/текстуры и т.п.)
Project labels – ключевые слова для поиска. Их сейчас принято называть «тегами»
После того как все ввели, смело жмем кнопку «Create Project» и нас перекидывает на главную страницу вашего проекта.
3. Краткая экскурсия по меню сайта проекта:
4. Добавление других участников проекта
На вкладке «Administer» в разделе «Project members» вводим почтовые ящики других пользователей через запятую:
5. Установка TortioseSVN.
TortoiseSVN – это клиентская программа для работы с репозиторием.
При установке она интегрируется в «Проводник» и «висит» в меню на правой кнопки мыши. Подробности установки, а так же про проблемы которые вы можете при установке встретить, описаны в мануале на русском языке и в картинках.
Отсюда качаем саму программу, русификатор и мануал:
http://tortoisesvn.net/downloads
Подготовительный этап закончен. Переходим к использованию.
Использование.
«-Почему тут летают самолеты?
Потому что они самолеты или потому что они летают?!
— Ты сам-то понял, что спросил?»
-«Падение Красного барона» Призрак
Процесс использования программы хорошо описан в мануале к ней.
Для начала надо «залить дефолт».
Открываем папку проекта и выбираем в контекстном меню мыши пункты «TortoiseSVN ->Импорт»
Вводим URL репозитория, краткое сообщение и жмем кнопку «Ок»:
У нас спросит логин и пароль. Для того чтобы узнать логин и пароль переходим по ссылке: https://code.google.com/hosting/settings
У каждого участника свой логин и пароль.
После нажатия кнопки «Ок» начнется импорт проекта в репозиторий. По окончании импорта мы увидим примерно такое сообщение:
Все. Теперь репозиторием могут пользоваться все члены команды.
Получение рабочей копии.
Перед непосредственным использованием, нам надо получить рабочую копию.
Для этого открываем пустую папку и в контекстном меню выбираем «SVN извлечь…».
Вот и все. Теперь можно спокойно работать.
Фиксация получение обновлений или фиксация изменений производится через тоже контекстное меню с уже знакомыми диалоговыми окнами.
Все последние изменения сделанные другими участниками команды можно посмотреть как на сайте:
Так и с помощью TortioseSVN:
Послесловие.
«Если вскроют мою черепную коробку.
То на мозгу увидят его отпечатки пальцев.»
-«451 градус по Фаренгейту» Р. Брэдбери
Вот собственно и все самое необходимое, что надо знать про использование Subversion.
Знающие люди, конечно, скажут, что я описал лишь малую долю возможностей.
О блокировке, ответвлениях и заплатках и прочем, вы сможете прочесть либо в мануале, либо, если уж совсем не "втерпежь", можете спрашивать прямо в теме.