Добавлен alexprey,
опубликован
Раздел:
Основы
Введение
Представим, что мы работаем над крупным проектом, одни. Этот проект состоит из одной карты. И у нас не возникает ни каких лишних проблем при работе над ней. Мы просто открыли карту, внесли нужные изменения и все. А что если над картой работает несколько людей? Тогда мы обычно либо разделяем обязанности и время и работаем на разных картах. Системы пишут в одной, модели вообще отдельно создаются. Потом кто то один все это дело должен свести в одну единую карту, все там отладить, настроить, украсить. В общем получается хороший такой геморрой.
Решение
Теперь немного отдалимся от темы WC3. Давай те подумаем какие средства есть для упрощения работы в команде. Мне на ум приходит только система контроля версий (SVN, GIT). Что это такое? А это специальные системы, которые отслеживают изменения содержимого файлов, ведут счет ревизий, а так же предоставляют обширные возможности для работы в команде. Все это называется репозиторием.
Представим типичный простой проект на java, например. По стандарту надо создавать отдельный файл для каждого нового класса. Ну вот допустим, несколько человек работают над проектом, каждый пишет свой класс, дальше он подтверждает изменения и его измененный файл отправляется на репозиторий - это хранилище для всех изменений проекта. Другой обновляет свои файлы и так же работает. В принципе у каждого получается своя рабочая копия, но каждый раз перед началом работы, вы её обновляете и после окончания работы (или во время работы, лично я это делаю в конце рабочего времени) подтверждаете изменения.
Таким образом все участники проекта имеют доступ к последним версиям файлов проекта. Надеюсь теперь понятен принцип данных систем. Теперь расскажу, что хорошего в системе помимо удобной работы в команде:
- в любой момент можно получить доступ к нужной версии файла
- система логирования
- возможность ответвления проекта (например для глобальных изменений или выхода в новый проект)
Вернемся к нашей проблеме. Одна карта. А система хорошо работает только для большего количества файлов. Но постойте ка, что такое карта в WC3? А это архив. Вы уже поняли мою идею? Нет? Так вот, распаковываем карту и получаем все файлы, которые нужно отслеживать и пользуемся репозиторием.
А как же работать со всем этим, когда редактор может работать только над цельной картой. Поэтому перед подтверждением мы распаковываем карту с файлами, а перед началом мы её собираем и работаем с ней. В ручную это делать не приятно, поэтому надо все это дело автоматизировать.
Как работать
Теория конечно это хорошо, но практика лучше. Теперь приступим к практической части. Сперва нам необходимо установить нужный софт. Лично я пользуюсь TortoiseSVN, но никто не запрещает использовать git, поэтому смотрите и выбирайте чем удобно вам пользоваться. Так же нам потребуется небольшой консольный архиватор, для того чтобы упростить процесс сборки\разборки карты mapbuilder. Предположим, что клиент для репозитория готов. Дальше вам нужно выбрать где будет храниться ваш репозиторий. Можно использовать локально, или же разместить на каком либо внешнем сервере. По скольку у меня есть свой личный сервер, то у меня не возникает ни каких проблем с вопросом о размещении таких вещей, а вот вам придется либо хостить на своей машине или использовать codeplex. Для git'овцев можно использовать github, да и вообще можете сами поискать, ниже будет как поднять свой svn сервер. Заходим на наш аккаунт, создаем новый репозиторий, добавляем участников и устанавливаем им права.
Дальше надо связать папку в ФС с репозиторием. Для этого откройте проводник и нажмите правой кнопкой мыши в свободном месте и выберите пункт "SVN Checkout...". Появиться такое окно
Дальше надо связать папку в ФС с репозиторием. Для этого откройте проводник и нажмите правой кнопкой мыши в свободном месте и выберите пункт "SVN Checkout...". Появиться такое окно
- URL of repository - путь к вашему репозиторию, например 192.168.1.100/svn/test
- Checkout directory - папка репозитория
Перед началом работы стоит делать "SVN Update", чтобы иметь последнюю версию файлов у себя в рабочей копии.
Еще хочу показать вот такую вот замечательную функцию у SVN, статистика проекта
Еще хочу показать вот такую вот замечательную функцию у SVN, статистика проекта
Данное дело доступно тут: ПКМ по любой папке репозитория -> "Tortoise SVN->Show Log...", дальше кнопка "Statistics"
Ну вот в принципе основы я вам показал. Остальное смотрите опять же в документации, там есть еще много интересных вещей, которые я вам не описал.
Теперь поговорим о mapbuilder'е. Это приложение собранное на коленке на основе моей очень старой проги CampaingEditor. Она консольная и простая. Работает очень просто. Сперва указываем, что надо сделать, затем путь до карты и папку. Использование:
Ну вот в принципе основы я вам показал. Остальное смотрите опять же в документации, там есть еще много интересных вещей, которые я вам не описал.
Теперь поговорим о mapbuilder'е. Это приложение собранное на коленке на основе моей очень старой проги CampaingEditor. Она консольная и простая. Работает очень просто. Сперва указываем, что надо сделать, затем путь до карты и папку. Использование:
mapbuilder -e map.w3x Source\
mapbuilder -i map.w3x Source\
Первая экспортирует файлы в указанную папку, вторая импортирует. При этом вложенность папок остается и все пути доступны для редактирования и просмотра в редакторе импорта.
Для удобства можно поместить 2 простых скриптовых файла, один для распаковки, другой для запаковки. А если вы еще и установили консольную версию SVN, то можно даже и так
build.bat - обновление рабочей копии до последней ревизии, а так же сборка карты
Для удобства можно поместить 2 простых скриптовых файла, один для распаковки, другой для запаковки. А если вы еще и установили консольную версию SVN, то можно даже и так
build.bat - обновление рабочей копии до последней ревизии, а так же сборка карты
svn update --username USERNAME --password PASSWORD
mapbuilder -i map.w3x Source\
commit.bat - разборка карты, а так же коммит
mapbuilder -e map.w3x Source\
svn update --message %1 --username USERNAME --password PASSWORD
Внимание: данный способ коммита не рекомендуется, т.к. указывать список изменений придется через аргументы при запуске, например
поэтому лучше только распаковывать через скрипт, а коммитить уже через интерфейс коммита.commit "new weather system"
Поднятие SVN сервера
Качаем Visual SVN Server отсюда и устанавливаем. Там в принципе все просто и понятно. После установки появиться приложение для управления репозиториями VisualSVN Server Manager и там уже создаем репозитории, пользователей, группы и настраиваете им права для каждого репозитория.
Использование облака в качестве репозитория
Так же можно использовать облачные технологии для хранения вашего репозитория. Рассмотрим на примере SVN и DropBox. Сперва нужно перейти в папку DropBox. Затем создайте пустую папку, например "SVNRepository" и создайте в нем репозиторий с помощью TortoiseSVN, так: ПКМ по созданной папке, затем "TortoiseSVN->Create repository here". Для связи рабочей копии с этой папкой в качестве URL репозитория используйте "file:///~Dropbox/SVNRepository"
или это можно сделать так
Создание репозитория
cd ~Dropbox
mkdir SVNRepository
cd SVNRepository
svnadmin create .
Создание рабочего пространства
mkdir MyWorkspace
cd MyWorkspace
svn checkout "file:///~Dropbox/SVNRepository"
Итог
Вот и подошла к концу моя статья. Надеюсь она будет вам полезна и работа над проектом упроститься и ускориться. Удачи в ваших проектах!
Спасибо ShadoWDeamoN'у за когда-то предоставленную библиотеку по работе с MPQ архивами.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован ScorpioT1000
И вообще мало кому нужен геморрой с репо, если дропбокса вполне достаточно.
VladViper, файлы соединяются умным zdiff-ом
репозитории советую xp-dev.com
не у каждого дома белый айпи
++ Doc;