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


    Исторически сложилось, что багтрекер в нашей команде – это 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 у себя на ПК?

    Комментарии 43

      –21
      Недоработка с Вашей стороны. Мне кажется нужно было начинать с мануала про установку Windows XP
        +6
        Я рад, что вы самый умный уже освоили премудрости работы с Subversion. Но статья больше для новичков.
          –9
          новички, если б им это и понадобилось — могут в гугле найти, да хотя бы на вашем сайте.
            +9
            может на хабре не стоит ничего писать? ведь все можно в гугле найти
        • НЛО прилетело и опубликовало эту надпись здесь
            –5
            Предлагаю начать с покупки компьютера
          +9
          Нет, всё правильно, статья нужная. Подробного мануала, когда собрано всё вместе и описано ВСЁ — как раз не хватает. Когда сам когда-то начинал работу в этой связке, приходилось отыскивать по частям и для себя копировать нужные команды на случай повторения операций (если что-то рухнет или будет перенесено).
          Или, как вариант — задать 10-15 вопросов знающему и всё равно это же самое для себя записать.
            +1
            SVN сервер под XP это круто. Я бы на такое не решился…
              0
              дев вполне идет на винде, у нас 95% офиса работает под виндой и ниче, нормльно себя чувствуют… хотя свн таки на серваке стоит :)
                0
                Я тоже работаю под Windows, разрабатывая приложения под .NET.
                Приложения под LAMP, я разрабатываю под Ubuntu. Хотя тоже пару лет писал на PHP под виндой, пока мне не надоело выгребать ошибки Apache или PHP, специфические для Windows. Как-то ошибки драйверов PDO, невозможность правильно создавать и тестировать приложения, которые работают с командной строкой linux, различия в чувствительность к регистру. Да и разработка таких приложений в Linux более простая и удобная.
                Кесарю — кесарево, как мне кажется, разработка должна вестись в среде, которая максимально соответствует той, под которой это приложение будет функционировать.
                0
                А чем это страшно, расскажите, а то у меня уже год как работает…
                  0
                  Разве это страшно? Работает, вам нравится, значит всё окей.
                  Я бы предпочел *nix и независимость от моей рабочей/домашний тачки в виде отдельного компа с сервером. Или виртуальную машину с *nix. Или бесплатные репозитории, которых сейчас достаточно много. Для меня это было бы проще, чем повторить то, что описано в статье.
                  В общем, на вкус и цвет…
                    0
                    Лично мне не страшно, просто было интересно — почему вы не решились бы. Теперь позиция ясна. Хотя для меня остается непонятным — чем в windows поднимать subversion-сервер сложнее чем в *nix
                      0
                      Наверное, несложно, всё зависит от желания и опыта.
                      В linux что-то вроде этого
                      apt-get install subversion
                      mkdir /home/svn/
                      svnadmin create /home/svn/project
                      svnserve -d -r /home/svn

                      В windows что-то вроде того, что описал автор.
                0
                Скажите, а с какой целью был выбрана Windows XP? Всё-таки это не серверная операционная система.
                  +2
                  Думаю автор выбрал XP как популярную домашнюю ОС («у себя на компьютере» в заголовке). Другой вопрос, насколько это имеет смысл. Поскольку svn — это помимо всех прочих вкусностей еще и регулярный бекап проекта, что позволяет не волноваться сильно о том, что завтра может посыпаться винт.
                    0
                    «Посыпаться винт» может вне зависимости от ОС.
                      0
                      Я подразумевал спорность хранения репозитория на домашней машине, а не у svn хостеров, которые регулярно бекапят еще и в amazon s3 (таким образом получается копия у себя, у хостера, в амазоне, куда спокойней чем просто у себя).
                  • НЛО прилетело и опубликовало эту надпись здесь
                      0
                      Возможно, потому, что сервер обладает различными функциями по обслуживанию запроса от клиента? И SVN всем своим алгоритмом (запросы от клиента к серверу SVN) является наилучшим тому примером.
                      Я думаю, для вас не секрет, что и в линейке Windows есть серверные решения — это и Windows NT и Server 2003, Server 2008, хотя они и основаны на одном ядре с «домашними»/офисными решениями типа XP, Vista и, теперь, 7. В моём понимании, серверная операционная система должна быть ориентирована на безопасность, отказоустойчивость, оптимизацию под поведение вида «сервер — клиент» и другими сервисами, которые обычным пользователями ни к чему.
                      Возможно, «честнее» было бы создание такого SVN сервера произвести на Server 2008, к примеру.
                      Там уже есть ISS как веб-сервер. И даже если извратиться, можно поставить PHP.
                      Тем более, если к серверу автору, как я понял из предыдущей статьи, обращаются непосредственно разработчики.
                      • НЛО прилетело и опубликовало эту надпись здесь
                          0
                          Разве я написал, что что-то мешает? Я сказал, что серверные редакции WIndows заточены под это больше. Разве нет?
                          Вам также никто не мешает забивать гвозди плоскогубцами. Это возможно и даже неплохо, но не очень удобно.
                          Веб-сервер, возможно и не нужен, это дополнительный плюс к серверной редакции (и да, я знаю, что IIS можно установить и на XP\Vista\7, сам так работаю).
                          Про PHP под IIS знаю, устанавливал и работал так пару месяцев и даже был проект, где писал PHP исключительно под IIS. И всё-таки считаю это извратом :-)
                          Возможно это понадобилось бы, как QA-сервер, потому что, как я понял, на машину автора обращаются разработчики.
                          Имея один сервер, можно было иметь SVN-сервер, веб-сервер как QA, условия которого максимально приближены к продакшн серверу.
                          Ну и проекты будут защищены в большей степени от вирусов/троянов/неопытных пользователей и т.п., если будут на отдельном сервере, а не на домашней тачке.
                          Каждый выбирает то, что ему подходит. Автор нашел компромиссное решение.
                            0
                            support.microsoft.com/kb/314882/ru

                            Если коротко: системы почти ничем не отличаются, и ничего бы и не мешало, но ms об этом тоже подумали и сделали ограничение на входящие подключения (вроде имеется в виду TCP). Сам никогда с этим не сталкивался, но люди говорят, что реально есть. В последних версиях (Vista, 7) вроде собирались убрать это.
                        +2
                        Я Windows XP не выбирал. Я искал способ, как наладить работу команды с тем, что есть. Арендовать сервер, изучать *nix, думать о выборе железа и т.п. проблемах мне не хотелось. Хотелось иметь возможность НЕ выпускать код из своих рук и при этом работать командой. Все.
                        Да и вообще, слова вроде «сервер», «виртуальная машина», «аптайм» пугают. Кажется, что работа с системой контроля версий — это что-то сложное и тяжелое. А на самом деле СВН — это большой плюс, мегаудобная вещь для программиста, а для работы с СВН ровным счетом не нужно ничего. У большинства уже есть все готовое.
                        Хотелось дать «волшебный пендаль» новичкам, чтобы они ощутили преимущества СВН. Я Subversion использую в т.ч. для своих локальных проектов, которыми не с кем не делюсь и очень доволен. Хочется, чтобы довольных людей было больше… :)
                          +1
                          Понятно.
                          Непонятна только логика — почему человек, которого почему-то пугают слова «сервер», «виртуальная машина» и «аптайм» не испугается слова «СВН» или «система контроля версий»? Тем более если это разработчик ПО. Тем более если это веб-разработчик.
                          Моё мнение, что разрабатывать приложения под LAMP надо под Linux'ом. Говорю так, потому что сам два года писал на PHP под Windows.
                          Лучше сразу новичкам, если они хотят разрабатывать приложения под LAMP, этот самый LAMP и ставить.
                          Впрочем, я полагаю, описанный вами подход покрывает все ваши нужды.
                        0
                        Лучше Redmine. И, да, под *nix. Лучше.
                        • НЛО прилетело и опубликовало эту надпись здесь
                          • НЛО прилетело и опубликовало эту надпись здесь
                            +1
                            Redmine, лучше не видел.
                              +1
                              Посомтрел демку у них на сайте. Как по мне, интерфейс для работы именно с багами у Мантис более понятный. А всякие там Wiki и форумы просто не нужны. Есть обсуждения баги, есть Word, в котором пишется начальное ТЗ для фичи.
                              Хотя, может, конечно, это дело привычки
                              +1
                              Мне по работе приходится иметь дело с subversion и я очень рад что есть hgsvn. Я просто делаю hg clone svn+ssh://… — и имею у себя на компьютере всю историю изменений, могу моментально смотреть diff`ы и прочее через gui, делать hg pull/hg push в subversion-репозиторий и гораздо удобно делать мерджи.
                                +1
                                Пару лет назад Mantis отказывался принимать юникод, судя по демке на оффсайте. Как у него сейчас с этим?
                                Да и gui у него как-то не особо дружелюбным показался.

                                А вот Redmine наоборот прижился. Да и интеграция с тем же SVN-ом настраивается не в пример проще, и встроенный броузер репозитория есть, и из багов можно ссылаться на ревизии, а из ревизий на баги, и подробности описывать в той же Wiki.

                                Тем не менее спасибо за статью. Redmine молод и нет гарантий что он не загнётся через пару лет. А Mantis вроде уже чёрт знает сколько времени живёт. Может и пригодится. =)
                                  0
                                  Каких-то проблем с кодировками я не испытывал. Русский текст воспринимает отлично, английсткий, естественно, тоже. Так что видимо поддерживает юникод :)
                                    0
                                    К сожалению языков бывает и больше, да и сейчас у Мантиса не всё так гладко с юникодом. Пример.

                                    Вместо вопросиков должны быть символы: žšķīāēļņč
                                      0
                                      Да, перепроверил у себя. У нас аналогично отображаются вопросы.
                                      Но думаю, что это проблема не самого Мантиса, а кодировки базы, в которой хранятся данные. У нас она установлена в cp1251_general_ci. Был бы utf8, и символы нормально бы отображались. Наверное…
                                  0
                                  Год назад отказались от mantis в пользу unfuddle

                                  Кстати, svn там уже есть
                                    +2
                                    Прошу прощения за свои 5 копеек.
                                    Совсем недавно, а точнее 23 февраля разработчики выпустили новую версию MantisBT 1.2.0, которая стала поддерживать систему плагинов.
                                    John Reese уже давно написал плагин Source-Integration и инструкцию как настроить связку. На данный момент связка реализована для SVN (напрямую), WebSVN, SourceForge SVN, GitWeb, GitHub.
                                      0
                                      Спасибо за наводку. Действительно интересный новый функционал. Возможно, если бы делал тоже самое сейчас, то думал как этот новый функционал применить.
                                      Правда, посмотрел на скриншоты результата (http://leetcode.net/blog/files/2009/01/si-browse-300x80.png) и мне кажется, что при камите у меня в Мантисе более информативные сообщения. Плюс радует то, что я сам могу настраивать, что там будет писаться.
                                      Плюс, основное преимущество моего варианта — отсутствие необходимости иметь сервер и на одном сервере держать и svn и mantis. Все можно организовать прямо дома.
                                        +1
                                        Есть и подробная информация

                                        Не понял зачем держать две системы на одном сервере? Он позволяет подключать сторонние сервера. Или я не понял сути проблемы?
                                          0
                                          У меня информация выглядит так:

                                          В варианте Source-Integration разве есть что-то подробнее?

                                          Что до двух серверов. Мое решение позволяет все организовать на самом дешевом хостинге, где нету возможности установить СВН. СВН ставится на домашнем ПК. В варианте Source-Integration надо, чтобы и СВН и Mantis находились в интернете. Или я не правильно понял?
                                            0
                                            Необязательно. Главное чтобы с сервера был доступен svn на домашнем ПК.
                                            А исходники должны быть закрыты или открыты?
                                              0
                                              Исходники для моего случая должны быть скрыты.
                                              Что до доступности домашнего ПК, то мне не хотелось иметь решение, требующее постоянно включенного ПК.
                                                +1
                                                Тогда этот плагин не для Вас, т.к. для него исходники должны быть открыты. Он показывает различия между ревизиями.

                                                Там синхронизацию можно запускать ручками.

                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                    Самое читаемое