Как стать автором
Обновить

Mantis + Subversion у себя на компьютере с Windows XP. Пошаговая инструкция для удобной организации работы с кодом

Время на прочтение 6 мин
Количество просмотров 5.6K

Исторически сложилось, что багтрекер в нашей команде – это Mantis. Для работы над ошибками очень хорошая и простая в обучении система. Буквально садись и работай. Но для удобной организации работы ей явно не хватает связки с Subversion. В связке Subversion+Mantis помогают организовать работу с кодом небольшой команды программистов. Более подробно про организацию работы у нас я описал в прошлой статье.
А сейчас давайте поговорим, как установить Subversion у себя на компьютере и связать его с Mantis на сервере.

1. Качаем необходимый софт


Нам необходимо загрузить сам сервер и клиент для работы с ним. В качестве клиента рекомендую воспользоваться tortoiseSVN, в котором максимально быстро разберется новичок и. Кроме того, для этого клиента доступен русский язык.
Итак, качаем последнюю stable-версию сервера, клиент и русификацию к нему.
Это для самого Subversion. Дополнительно нам понадобится следующий софт:
  • No-IP Client – маленькая программка, которая позволит нам избавится от необходимости иметь выделенный IP адрес.
  • SVN + Mantis tools, которые включают:
    • SVN+Mantis Shell – моя самописная программа, которая позволяет объединить работу Subvesion и Mantis.
    • SVNcheckin – модифицированный PHP скрипт из Mantis для тех же целей
    • post-commit – BAT файл, для орагинизации связи Mantis+Subvesion на Windows XP.


2. Регистрируемся на No-IP и устанавливаем No-IP Client


Если у Вас есть выделенный IP, то этого делать не надо. К Вам на компьютер можно попасть по нему, а если IP адрес хостер Вам формирует динамически, то без подобной программки не обойтись. Суть сервиса состоит в том, что Вы ставите у себя на компьютер программу, которая постоянно узнает Ваш IP адрес и в случае, если он меняется, отправляет данные на сервер. Обращение происходит через адрес, который Вы выбираете на сервере. Таким образом, к Вашему компьютеру происходит через постоянный «серверный адрес», который связан с Вашим реальным на данный момент IP адресом.
Заходим на http://www.no-ip.com и создаем там бесплатный аккаунт. В аккаунте нажимаем на Add Host. В качестве HostName вбиваем имя вашей компании. В выпадающем списке выбираем понравившееся имя домена. Например, no-ip.biz.
Ставим No-IP Client и вбиваем в него данные только что созданного аккаунта. Все, теперь для того, чтоб кто-то мог обратиться к Вашему компьютеру, достаточно вбить адрес вроде
YourCompanyName.no-ip.biz

3. Устанавливаем Subversion сервер и клиент


Установка проходит легко и непринужденно, везде достаточно нажимать “Next”. Сначала надо устанавливать сервер, потом клиент, затем, если надо, русификацию к клиенту. Я русификацией не пользуюсь. Мне не нравится.
Во время установки не меняйте стандартных путей, которые предлагает инсталлятор.

4. Создаем первый репозитарий (хранилище)


Создаем папочку C:\svn-store\
Заходим в консоль (Пуск->Выполнить, cmd) и пишем:
svnadmin create c:/svn-store/my_project
Обратите внимание на слеши! Они должны указываться именно так, на манер unix. В случае успешного создания репозитория никаких ошибок не появится.
Открываем файл C:/svn-store/my_project/conf/svnserve.conf и раскомментируем строчки:
anon-access = none<br>
auth-access = write

Т.е. мы разрешаем скачивать/закачивать файлы из репозитория только зарегистрированным пользователям. Анонимные пользователи вообще не имеют доступа к репозиторию. Шароварщиками чаще всего используется именно такая политика. Данные о пользователях лежат в файле, который указывается в строчке (которую также нужно раскомментировать):
password-db = passwd
Т.е. так мы показываем, что в папке C:\svn-store\my_project\conf лежит файл passwd c указанием логинов и паролей зарегистрированных пользователей.
Идем в C:\svn-store\my_project\conf\passwd, открыв его любым текстовым редактором, и создаем учетные записи пользователей в секции users. Формат их таков:
UserName1 = UserPassword1
UserName2 = UserPassword2


5. Заполняем репозиторий исходными данными


Нам необходимо произвести импорт, начальное наполнение нашего репозитария. Для этого создаем папку C:\Repository, а в ней три пустые подпапки: trunk, branches и tags. Заходим в папку C:\Repository, щелкаем правой кнопкой мыши на свободном месте и выбираем TortoiseSVN->Import…
Импорт данных в SVN
В качестве URL вводим:
svn://YourCompanyName.no-ip.biz/my_project/
Как видите, это тот УРЛ, который мы определили на втором шаге, плюс имя папки, где хранится репозиторий.
Нажимаем OK. У вас должны спросить логин и пароль. Указывайте те данные, которые внесли в C:\svn-store\my_project\conf\passwd. Если вместо окошка для ввода логина и пароля вы не увидели, возвращайтесь к пунктам про правку C:\svn-store\my_project\conf\svnserve.conf и C:\svn-store\my_project\conf\passwd — вы либо не раскомментировали строчки, либо не указали логины/пароли.
В случае успешного заполнения вы увидите нечто подобное:
Настройка свойств базовых папок


6. Настраиваем Subversion для работы с Mantis


1) Создайте временную папку C:\Temp. Выделите папку правой кнопкой мыши и в контекстном меню выберите SVN Checkout…
В качестве URL of repository введите svn:// YourCompanyName.no-ip.biz/my_project/. Checkout directory должен быть равен C:\Temp. Других настроек не меняйте и нажмите OK. В результате в папке C:\Temp появится три папки, созданные на прошлом шаге, и служебная папка .svn. Не трогайте ее в будущем.
2) Нажимаем правой кнопкой мыши опять на C:\Temp и выбираем TortoiseSVN->Properties. В появившемся окне выставляем свойства так, как показано на рисунке. При этом ОБЯЗАТЕЛЬНО при добавлении каждого нового свойства выставляйте галочку  «Apply property recursively»:
Камит свойств папок
Теперь нажимаем правой кнопкой мыши на C:\Temp и выбираем SVN Commit…
Импорт
После ввода комментария как на рисунке, нажимаем OK. TortoiseSVN ругнется, что мы не ввели номер ошибки. Игнорируем это.
3) Заливаем на сервер скрипт svncheckin.php. Он должен находится в подпапке core той папки, где установлен Mantis. В результате путь обращения к скрипту будет выглядеть как:
URL-TO-MANTIS/core/svncheckin.php
4) Идем в папку C:\svn-store\my_project\hooks и копируем туда файлы
  • post-commit.bat
  • svn_checkin_shell.exe
  • svn_checkin_shell.ini

Открываем svn_checkin_shell.ini и вставляем туда правильный путь к svncheckin.php. Проверяем другие пути в INI файле. Если Вы все делали, как я писал раньше, то ничего менять не надо. Если Вы меняли какие-то пути, то их также надо будет подправить в файле post-commit.bat.
5) Идем в Mаntis, логинимся в него под админом и создаем нового пользователя: “SVN Bot”. Назначаем ему права Developer-а и назначаем его НА ВСЕ активные проекты. Все автоматические комментарии теперь будут писаться от имени SVN Bot.
Также создаем в нашем проекте новый баг. Называем его, например, «Тестирование связки SVN + Mantis». Запоминаем номер бага.

7. Импортируем исходный код проекта в репозитарий


Процесс аналогичен шагу 5. 1) Идем в папку с проектом, щелкаем правой кнопкой мыши на свободном месте и выбираем TortoiseSVN->Import…
Добавление базовых папок
В качестве URL вводим:
svn://YourCompanyName.no-ip.biz/my_project/trunk
Обратите внимание, в конце указана папка trunk. Нажимаем ОК.
Теперь выполняется заливка данных в репозитарий. Если у Вас большой проект и много фалов, то скорее всего она займет много времени.
После того, как увидите надпись «Completed At revision…» можете вздохнуть с облегчением. Подготовительный этап работ закончился :).

Повседневная работа с tortoiseSVN


Мы выполнили все необходимые действия. Теперь я вкратце расскажу, о рутине: повседневной работе.
Вся работа с кодом проходит в рабочих копиях проекта. У каждого из разработчиков своя рабочая копия. Поэтому первое, что должен сделать разработчик, для того, чтоб приступить к работе над проектом – это создать у себя локальную рабочую версию.
Затем,  каждый раз перед тем, как начать работу над новой фичей или багом, программист обновляет рабочую копию (SVN Update). После того, как изменения кода закончены, разработчик делает SVN Commit. Если так делать, то над проектом спокойно могут работать несколько человек. Это очень кратко. Подробнее написано в электронной книге по tortoiseSVN. Ссылка на нее расположена в конце статьи.
Что ж, выполним одну итерацию для того, чтоб проверить, что все настроено правильно.
1. Создаем рабочую копию репозитория на локальном компьютере.
Создайте пустую папку и вызовите в ней по правой кнопке мыши “SVN Checkout…”. URL тот же:
svn:// YourCompanyName.no-ip.biz/my_project/trunk
Так вы загрузите в данную папку рабочую копию проекта из репозитария. Кроме файлов проекта в ней появится скрытая папка “.svn” — ее ни в коем случае не трогайте, она используется SVN во время фиксации (commit’a) изменений в репозитарий.
Сейчас все папки помечены зелеными галочками. Это значит, что ни один файл не был изменен. Когда мы внесем изменения в какой-то из файлов, он автоматически будет отмечен красным восклицательным знаком. Это очень удобно.
Сначок измененного файла
2. Вносим изменения в проект, чтоб убедится в правильности работы SVN
Вы можете делать хоть что (не считая папки .svn и ее содержимого, которые трогать нельзя) — создавать/править/удалять файлы проекта. Я ограничился изменением содержимого одного текстового файла.
Для записи изменений в репозитарий щелкните правой кнопкой мыши в папке и выберите “SVN Commit …”. Введите описание камита в поле Message и ОБЯЗАТЕЛЬНО номер тестовой багги, которую мы создали в Mantis.
Первый камит исходников в Subversion
Нажмите OK.
После того, как закончится добавление данных в репозитарий, откройте Mantis и зайдите в тестовый баг. Последним комментарием будет автоматически сгенерированный отчет о камите от SVN Bot. Будет что-то на подобии этого:
Как выглядит камит в Mantis

На этом все. Успехов Вам, уважемые хабрвчане. :)

P.S. Может кто знает, можно ли как-то еще в Mantis отправлять ФАКТИЧЕСКИЙ «срез» изменений в каждом камите. Что-то в духе того, как делает WebSVN, но только чтобы можно использовать, когда Subversion server у себя на ПК?
Теги:
Хабы:
+38
Комментарии 43
Комментарии Комментарии 43

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн