Главная » Статьи » Деццкий сад

Урок 7. Контроль версий.
    Как известно, хорошая мысля приходит опосля. Вот и мне только пришла в голову мысль использовать для уроков систему контроля версий. Те, кто знаком с этим понятием, могут сразу перейти в конец статьи к описанию сделанных изменений и ссылке на репозиторий, для остальных попробую вкратце описать суть.

Теория.

    Вот что говорит нам википедия "Система управления версиями (от англ. Version Control System, VCS или Revision Control System) — программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости, возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение и многое другое." В нашем случае изменяющаяся информация - это код, меняющийся от урока к уроку. В качестве системы контроля версий я буду использовать Mercurial, а размещаться это всё будет на гуглькоде. Почему Mercurial а не более популярная CVS? Ну, наверно выбор пал на него потому что он на питоне написан :). Про Mercurial более подробно можно прочитать на той же википедии.
     Для чего это нам всё нужно: чем больше становится кода, тем сложнее отследить что и где поменялось в новом уроке. Система контроля версий легко решает эту проблему, отслеживая изменения от ревизии к ревизии - добавление, удаление, изменение файлов, а с помощью инструмента diff можно наглядно видеть изменения в конкретном файле.
     Теперь как с этим работать: отправляемся по ссылке http://code.google.com/p/panda-rpg-tutorial/source/checkout и видим следующую надпись
"Get a local copy of the panda-rpg-tutorial repository with this command:
hg clone https://panda-rpg-tutorial.googlecode.com/hg/ panda-rpg-tutorial "
Данная команда предназначена в основном для пользователей Linux, привыкших работать в командной строке smile Для всех остальных рекомендую скачать и поставить TortoiseHg - графический фронтенд для системы контроля версий Mercurial. После установки создадим где-нибудь директорию с именем panda-rpg-tutorial, щёлкнув на ней правой кнопкой обнаружим, что в контекстном меню появился новый пункт - TortoiseHg. Выберем его и выполним команду "клонировать", в открывшемся диалоге в качеств исходного пути впишем https://panda-rpg-tutorial.googlecode.com/hg/ и нажмём "Ок". Названия и расположения нужных пунктов могут несколько отличаться для разных версий и операционных систем, поэтому скринов не привожу, чтобы не путать людей. Суть же остаётся одна - нам необходимо будет сделать локальный клон репозитория у себя на компе, чтобы в дальнейшем можно было с ним работать.
     В принципе, можно всего этого и не делать - гугль предоставляет все необходимые инструменты для просмотра и сравнения изменений напрямую через веб-интерфейс, так что можно сравнивать и скачивать файлы необходимой ревизии и вручную.

Практика.

     Перейдём к практическому рассмотрению работы. Я внёс некоторые изменения в файлы. Смотрим сюда http://code.google.com/p/panda-rpg-tutorial/source/list . На момент написания статьи список изменений в проекте выглядел следующим образом:

Первая ревизия - "Урок 6. Да будет жизнь." - здесь я просто закачал файлы последнего на данный момент урока в качестве стартовой точки. После этого внёс изменения в проект и сделал следующую ревизию - она у меня называется "Урок 7. Контроль версий.". Чтобы увидеть какие изменения были внесены, щёлкнем на нужную ревизию. Видим примерно следующее:

Mercurial с помощью гугловского фронтэнда рассказывает нам о том, что в данной ревизии были внесены изменения в файлы /modules/character.py и /modules/control.py. Щёлкнув на ссылку diff мы сможем посмотреть что же конкретно изменилось:

В данном случае показан файл control.py. Слева у нас старая ревизия, справа - новая. Цветами наглядно подсвечены изменения. Аналогично можно глянуть и другой файл - может показаться, что там изменений больше, однако, посмотрите - на самом деле всего лишь сдвинут блок в связи с добавлением условного оператора.

Суть внесённых изменений.

     Суть внесённых изменений в следующем - я немного доработал класс персонажа:
1. добавил переменную - флаг, сигнализирующую о том, кем должен контролироваться персонаж - игроком или ИИ (NPC). Это птребуется для следующего урока;
2. изменил работу с точками пути. Тепрь в качестве точки пути добавляется кортеж, в котором первым элементом идёт команда, а вторым - параметры команды ('goto', Vec3(10.0,20.0,0.0)). Ведь наш персонаж должен будет уметь не только ходить, но и взаимодействовать с окружающим миром. Пока что, конечно, он умеет только перемещаться и понимает только команду "goto", но в дальнейшем мы обучим его и другим командам, например команде атаки.

Репозиторий http://code.google.com/p/panda-rpg-tutorial/source/checkout
Категория: Деццкий сад | Добавил: ninth (30.10.2010)
Просмотров: 7904 | Рейтинг: 3.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Онлайн всего: 1
Гостей: 1
Пользователей: 0