Git и Redmine. Элегантное решение для совместной работы над проектами::БИТ 03.2011
 
                 
Поиск по сайту
 bit.samag.ru     Web
Рассылка Subscribe.ru
подписаться письмом
Вход в систему
 Запомнить меня
Регистрация
Забыли пароль?

Календарь мероприятий
июнь    2024
Пн
Вт
Ср
Чт
Пт
Сб
Вс
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

показать все 

Новости партнеров

30.05.2024

Компания «Газинформсервис» объявила о старте работы собственного SOC

Читать далее 

27.04.2024

RAMAX Group рассказала на Smart Mining & Metals об особенностях пилотирования ML-проектов

Читать далее 

22.04.2024

Сообщество цифровых управленцев «я-ИТ-ы» проводит ЗАКРЫТУЮ встречу в рамках выставки «Связь-2024»!

Читать далее 

18.04.2024

Ассоциация разработчиков «Отечественный софт» отметила 15-летие

Читать далее 

показать все 

Статьи

13.06.2024

Взгляд в перспективу: что будет двигать отрасль информационной безопасности

Читать далее 

07.06.2024

Open Source в бизнесе

Читать далее 

19.05.2024

«Лишние люди» в бизнесе

Читать далее 

18.04.2024

5 способов повысить безопасность электронной подписи

Читать далее 

18.04.2024

Как искусственный интеллект изменит экономику

Читать далее 

18.04.2024

Неочевидный САПР: выход ПО за рамки конструкторской деятельности

Читать далее 

18.04.2024

Скоро некому будет делать сайты и заниматься версткой

Читать далее 

05.04.2024

Мотивируй, не то проиграешь!

Читать далее 

22.03.2024

В 2024 году в России и мире вырастут объемы применения AR/VR 

Читать далее 

25.02.2024

Цифровые технологии: надежды и риски

Читать далее 

показать все 

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

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

Рубрика: Продукты и решения


 Сергей Романовгенеральный директор ООО «Ред Кейс»

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

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

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

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

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

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

Рисунок 2. Хранилище  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. Диаграмма Ганта

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

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

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

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

  1. Сайт Bugzilla – http://git-scm.com.
  2. Сайт Bugtracker – http://ifdefined.com/bugtrackernet.html.
  3. Сайт Trac – http://trac.edgewall.org.
  4. Сайт Redmine – http://www.redmine.org.
  5. Сайт Git – http://git-scm.com.
  6. Сайт ОС Ubuntu Linux – http://ubuntu.com.
  7. Сайт почтовой системы Exim– http://www.exim.org.
  8. Настройка Git через WebDav – http://www.kernel.org/pub/software/scm/git/docs/howto/setup-git-server-over-http.txt.

В начало⇑

 

Комментарии отсутствуют

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

Выпуск №04 (137) 2024г.
Выпуск №04 (137) 2024г. Выпуск №03 (136) 2024г. Выпуск №02 (135) 2024г. Выпуск №01 (134) 2024г.
Вакансии на сайте Jooble

           

Tel.: (499) 277-12-41  Fax: (499) 277-12-45  E-mail: sa@samag.ru

 

Copyright © Системный администратор

  Яндекс.Метрика