Меню

Redmine настройка хранилища git



Git и Redmine. Элегантное решение для совместной работы над проектами

Архив номеров / 2011 / Выпуск №4 (101) / Git и Redmine. Элегантное решение для совместной работы над проектами

СЕРГЕЙ РОМАНОВ, генеральный директор ООО «Ред Кейс»

Git и Redmine
Элегантное решение для совместной работы над проектами

Компания, вложившая деньги в разработку программы или сайта, ищет способ организовать совместный труд разработчиков. Также необходим инструмент контроля и наблюдения за работой в реальном времени

Сегодня существует ряд бесплатных систем, позволяющих как ставить задачи и вести проекты, так и просматривать хранилище исходного кода. Рассмотрим наиболее полноценные:

  • Bugzilla – неплоха, весьма популярна, но по удобству пользования и внешнему виду довольно архаична [1]. Нет wiki, линии времени, диаграммы Ганта и т.д.
  • Bugtracker.NET – на первый взгляд приятен, и набор функций хорош, но использует .NET и работает только под Windows [2].
  • Trac – вызывает уважение как система с полным набором современных функций трекинга и ведения проектов, но вот за удобство интерфейса не заслужил симпатии [3]. Плюс работа с несколькими проектами требует довольно нетривиальных телодвижений, в частности, создания отдельного окружения для каждого нового проекта. Когда их три – пять это еще терпимо, но если 30-50, а то и 150?
  • Redmine – умеет все, что можно желать от системы ведения проектов и контроля версий [4], обладает интерфейсом, вызывающим восторг (см. рис.1), – продуманность разделов, Ajax-меню по правому клику мыши там, где это нужно, а также очень удобно организованное хранилище (см. рис. 2).

Рисунок 1. Интерфейс Redmine

Рисунок 2. Хранилище Redmine

По всем своим возможностям Redmine показался более подходящим для нашей задачи, теперь разберем, как настроить связку Redmine и распределенной системы управления версиями файлов Git [5]. В Git, в частности, трудятся разработчики Facebook, ядра Linux, языка Perl, OS Android и т.д. (Redmine используют разработчики языка Ruby, среды KDE, форумного движка phpBB, веб-сервера Lighttpd и т.д.).

Компьютер под управлением Linux (для ознакомления и тестов мы используем Ubuntu 10.10 Desktop [6]) с правами root. Для того чтобы выполнить запрос от имени суперпользователя, предусмотрена команда sudo.

Кроме Git и Redmine, нам потребуется Apache2 с модулем passanger и БД sqlite3. Также для удобства работы установим mc.

$ sudo apt-get install apache2 libapache2-mod-passenger sqlite mc

Теперь основное, устанавливаем Redmine:

$ sudo apt-get install git git-core redmine redmine-sqlite

Соглашемся с предложением настраивать Redmine через dbconfig-common, тип БД выбираем sqlite3.

Создадим символическую ссылку на папку установки, дадим права и поднастроим веб-сервер:

$ sudo ln -s /usr/share/redmine/public /var/www/redmine
$ sudo chown -R www-data:www-data /var/www/redmine
$ sudo echo «RailsBaseURI /redmine» > /etc/apache2/sites-available/redmine
$ sudo a2ensite redmine
$ sudo service apache2 restart

Настроим почтовую подсистему (мы используем Exim4 [7] с использованием шаблона Internet Site):

$ sudo apt-get install exim4
$ sudo cp /usr/share/doc/redmine/examples/email.yml.example /etc/redmine/default/email.yml

Если при установке пакета не будет вопроса о конфигурации, то запустите то запустите команду:

sudo dpkg-reconfigure exim4-config

Отредактируйте созданный файл настройки почты /etc/redmine/default/mail.yml, измените в нем метод достаки почты, поменяв smtp на sendmal:

production:
delivery_method: :sendmail
smtp_settings:
address: smtp.example.net
port: 25
domain: example.net
authentication: :login
user_name: «redmine@example.net»
password: «redmine»

$ sudo service apache2 restart

Для регистрации в админке Redmine используем адрес http://localhost/redmine. По умолчанию интерфейс английский, чтобы сменить язык на русский, переходим в Administration –> Options –> вкладка Display. Таким образом, изменится язык по умолчанию для новых пользователей, необходимо также посетить Users –> Admin –> General и выбрать русский язык для администратора.

Также загляните во вкладку Email Notifications («Уведомления по почте»), чтобы настроить исходящего адресата и параметры генерируемого письма.

В разделе Repositories («Хранилища») отключите поддержку ненужных типов репозиториев, в нашем случае оставьте только Git. Остальные настройки здесь трогать не надо.

Теперь сервер Redmine готов к заполнению контентом.

Работа с проектами

Для начала работы над первым проектом нужно:

  • создать учетные записи пользователей;
  • создать проект, включить туда необходимых пользователей;
  • создать внутри настроек проекта новую (первую) версию.

Теперь внутри проекта появилась вкладка «Оперативный план», в которой мы видим, что пока нет задач, связанных с текущей версией.

Смело нажимаем «Новая задача», заполняем необходимые поля и обязательно указываем версию, к которой нужно привязать задание.

После создания мы увидим эту задачу в оперативном плане, а участникам система отошлет письмо о том, что для них есть работа. Процентная полоска строится из суммы процентов выполнения всех привязанных задач.

Далее, если зайти в созданное задание и нажать «Обновить», можно писать новые комментарии, которые выстроятся в ленту снизу. При обновлении задачи доступен функционал, позволяющий присоединять файлы, менять ответственного, версию, выставлять затраченное время и многое другое.

Итак, мы развернули полномасштабную систему менеджмента, которая наряду со стандартными функциями (проекты, задачи) несет еще множество «вкусностей» (диаграмма Ганта, Вики, документация, новости и т.д.). Теперь пора переходить к «магической» части – настроим связку Redmine и системы контроля версий Git, для того чтобы отслеживать в интерфейсе Redmine, написанный разработчиками код и его версии.

Подключаем «машину времени»

Сразу оговорюсь, в этой статье описана простая схема безопасности, в которой все разработчики пользуются одним системным логином для доступа по SSH к репозиторию.

В больших проектах более удобен HTTPS-протокол средствами Apache WebDAV и htaccess [8].

Создадим иерархию каталогов для проектов и учетную запись пользователя в системе.

$ sudo adduser commiter —home /var/gitrepos/
$ sudo mkdir /var/gitrepos/superprogram

Система задаст несколько несложных вопросов, и пользователь будет создан.

Допустим, на сервере уже есть наработки по проекту (в примере это readme-файл), их нужно положить в каталог нашего проекта и дать полные права пользователю commiter:

$ sudo cp /home/pupkin/proga/readme.txt /var/gitrepos/superprogram
$ sudo chmod -R 755 /var/gitrepos

Перейдем в каталог с проектом и инициализируем новый репозиторий. Затем добавим в него существующие файлы и применим изменения. Система всегда просит ввести комментарии касательно сделанных правок, просто впишем «Начало работы с Git»:

$ sudo cd /var/gitrepos/superprogram
$ sudo git init && git config —global core.editor mcedit
$ sudo git update-server-info
$ sudo git add *
$ sudo git commit -a

Теперь подключаем репозиторий к проекту внутри Redmine. Для этого идем внутри проекта в «Настройки –> Хранилище». Выбираем тип – git. Пишем путь – /var/gitrepos/superprogram/.git/.

Теперь мы видим файлы и историю их изменения на странице Хранилище внутри проекта!

Обращаю ваше внимание, что, открыв файл в хранилище, можно просмотреть, кто и когда изменял определенные строки. Или же вы можете видеть, например, сколько новых строк кода написал программист за то время, что он потратил на создание нового функционала.

Совместная работа с репозиторием

Теперь представим, что за соседним компьютером сидит программист Иван, который и должен работать над проектом. Предоставляем ему заранее созданные логин и пароль для Redmine, а также пароль пользователя commiter.

Иван устанавливает поддержку Git, mc и производит обязательную базовую настройку:

ivan$ sudo apt-get install git git-core
ivan$ git config —global user.name «Имя Фамилия»
ivan$ git config —global user.email «электронная почта»
ivan$ git config —global core.editor mcedit

Далее он выполняет на своем компьютере (существуют также графические оболочки для Windows и Linux-систем, а также интеграция внутри IDE наподобие NetBeans, Eclipse и т.д.) команды для создания каталога, где он хочет у себя хранить файлы проекта, и для получения актуальной версии проекта из репозитория.

ivan$ mkdir /home/ivan/projects
ivan$ cd /home/ivan/projects
ivan$ git clone ssh://commiter@ВАШ_АДРЕС/superprogram/

В каталоге projects появился новый подкаталог superprogram с копией проекта и соответственно файлом readme.txt.

После того как он сделал необходимые изменения в файле или создал новые, он может применить (сделать commit) и затем загрузить их на сервер – элегантно и просто:

ivan$ mkdir /home/ivan/projects/superprogram
ivan$ git add *
ivan$ git commit -a
ivan$ git push

Система спросит пароль пользователя commiter и загрузит изменения на сервер, которые тут же отравятся в Redmine.

Важно: для удобства работы в Redmine во время commit при вводе комментария скопируйте туда целиком название задачи с номером, например: «Доработки по Изменение #1: Разработать главное диалоговое окно программы» и тогда в хранилище внутри Redmine ваш комментарий станет кликабельным и будет вести на настоящую задачу.

Назад в будущее и параллельные реальности Git

Git скрывает в себе великое множество функций, связанных с версионностью содержимого, поддержкой ветвления разработки кода (скажем, ветка STABLE и DEVELOPMENT), возможностью отката назад и вперед во времени и многое другое, что никак не поместится в эту статью.

Теперь рассмотрим основы ветвления. По умолчанию создается одна ветка master, в которой вы и находитесь. Чтобы создать новую и перейти к ней, выполним следующие команды:

ivan$ git branch vetka2
ivan$ git chekout vetka2

Это создаст как бы параллельную реальность, в которой проект будет жить своей второй жизнью, и все изменения внутри одной ветви не затронут код в другой. И подобно сюжету в фантастическом фильме каждая реальность обретет свою линию времени, по которой можно путешествовать в обе стороны.

Чтобы откатиться до определенного состояния, можно просто заглянуть в раздел Хранилище, посмотреть уникальный номер редакции (например, e3feba7) и перейти к нему, что создаст новую временную ветку от этого момента времени.

ivan$ git chekout e3feba7

Подводя итог можно с уверенностью сказать, что теперь мы обладаем самым мощным на сегодняшний день инструментом совместной работы и контроля за проектами (к тому же бесплатным). С помощью рассмотренной связки Redmine и Git менеджер явно видит, на что было потрачено рабочее время, какие строки кода были дописаны и кем, благодаря чему может верно спланировать ход работ, создав задачи и обновив существующие.

Все участники проекта всегда в курсе происходящего в режиме реального времени благодаря системе оповещения по почте (также есть поддержка RSS, Atom, Twitter). Диаграмма Ганта помогает планировать свое время (см. рис. 3).

Рисунок 3. Диаграмма Ганта

Проекты получают несколько дополнительных уровней отказоустойчивости из-за наличия копии на каждом компьютере разработчика и на сервере, а также возможности отката.

Руководство получает защиту от больших потерь денег и интеллектуальной собственности.

И самое приятное – система обладает несметным количеством встроенных функций, позволяющих ускорить работу над проектом, также доступно множество плагинов и интеграций – все это почва для изучения и развития себя как системного администратора!

Чтобы легко можно было учитывать время в redmine можно использовать http://rmclient.org
Rmclient совместим c Redmine 2.3.1 и поддерживается на Windows, Mac OS. Прост и удобен, обновляется и бесплатный! Приятного пользования.

Комментарии могут оставлять только зарегистрированные пользователи

Источник

Redmine

Latest releases¶

Resources¶

Настройка репозиториев¶

Общая информация¶

Redmine поддерживает интеграцию с различными системами контроля версий «из коробки»:

Рубрика: БИТ. Бизнес & Информационные технологии / Продукты и решения
SCM Поддерживаемые версии Комментарии
Subversion 1.3 & 1.4 & 1.5 & 1.6 Необходима 1.3 или выше. Не поддерживает Ruby Bindings для Subversion
CVS 1.12.12 Необходима 1.12, не работает с CVSNT
Mercurial 0.9.3
Bazaar 1.0.0.candidate.1 & 2.0.4
Darcs 1.0.7
Git 1.5.4.2

: соответствующие пакеты должны быть установлены на той же машине, что и Redmine.

К примеру, если вы хотите получить доступ к репозиториям Subversion в Redmine, вы должны установить пакет subversion на машине с Redmine.

: соответствующие пакеты должны быть доступны Redmine :

2 случая :

  • они доступны напрямую, в переменной окружения PATH :
    • если имя команды нестандартное, вы можете переопределить его в Redmine configuration file
  • вы можете определить полный путь к пакетам в Redmine configuration file

Наконец, удостоверьтесь в том, что выбрали необходимую SCM в Administration->Settings->Repositories->Enabled SCM

Добавление существующего репозитория к проекту¶

В настройках проекта убедитесь, что модуль ‘Репозиторий’ включен и откройте вкладку ‘Репозиторий’.
Выберите SCM, соответствующую вашему репозиторию и введите адрес или URL репозитория.

Важно: Когда вы впервый раз открываете вкладку ‘Хранилище’, Redmine получает описание всех существующих в репозитории фиксаций (коммитов) и сохраняет их в базе данных.
Это происходит один раз для каждого репозитория, но может занять длительное время и вызвать time-out, если в вашем репозитории большое количество фиксаций (коммитов).

Для того, чтобы этого избежать, сделайте это offline.
После добавления репозитория проекту, выполните следующую команду:

Все фиксации (коммиты) будут извлечены в базу данных Redmine.

Начиная с версии 0.9.x, вы также можете перейти по URL с помощью ключа WS и fetch_changesets выполнится:

Не забудьте аутентификацию по ключу WS , как описано в Rest_api#Authentication.

Subversion репозиторий¶

Поддерживаются все стандартные протоколы ( http: , svn: , file: . ), просто укажите URL репозитория.

Укажите имя пользователя и пароль, если репозиторий требует авторизации.

Примечание: если вы хотите получать доступ к репозиторию, используя svn+ssh:// , необходимо настроить svn+ssh в не-интерактивный режим.
Для этого необходимо настроить public/private пару ключей для ssh аутентификации.

Установка соответствий login Пользователь в Репозитории¶

Для корректного оторбажения имён в Хранилище, в Redmine есть возможность установки соответствий между login’ом и пользователя репозитория и пользователем Redmine.

Перейдите в Проект->Настройки->Хранилище->Пользователи .
Вы увидите таблицу с двумя столбцами. Левый содержит login пользователя Хранилища, правый — выбор соответствующего ему участника проекта.

Выберите и обновите пользователя Redmine, связанного с найденным именем в журнале хранилища.
Пользователи с одинаковыми именами или email в Redmine и хранилище связываются автоматически.

Источник

Читайте также:  Что значит настройка роуминг данных
Adblock
detector