Проект реалізує простий трекер завдань, в першу чергу для програмних проектів, що зберігаються в Subversion. Розраховую використовувати його лише у себе. Якщо виникне інтерес у читачів даного ресурсу, намагатимуся доопрацювати код до можливості більш універсального використання та викладу проект на GitHub.
Використання Subversion (далі – SVN) для зберігання коду продиктовано тим, що крім вихідних текстів програм під SVN заточено самописний набір скриптів для архівації інших документів.
Проект виник з необхідності відстежувати власні роботи. Аналіз аналогів показав, що для використання наявних безкоштовних трекерів потрібно встановлення та налаштування додаткового програмного забезпечення, як-от: повноцінний веб-сервер і сервер баз даних; Python і кілька додаткових скриптів. Оскільки мені трекер необхідний лише локального контролю власних робіт, такі витрати видалися зайвими. Крім того, це необхідна мені практика програмування.
Для реалізації проекту обрано клієнт-серверну архітектуру на основі QLocalSocket, т.к. необхідно зв'язати два незалежно працюючі компоненти - SVN і власне трекер.
Трекер повинен:
- запускатися при старті системи;
- мати серверну частину та візуальний інтерфейс.
Клієнт трекера повинен запускатися при коміті в SVN змін проекту по pre-commit-хуку. Клієнт трекера повинен передати серверу найменування проекту, номер завдання, що закривається, і номер ревізії. У свою чергу сервер повинен прийняти ці дані і перевести завдання в стан «закрита».
Дані із закриття завдання вводить користувач у коментар до коміту у наступному форматі:
<произвольный текст> #{номер закрываемой задачи} <произвольный текст>
Інші дані надає клієнт.
Інтерфейс трекера
Інтерфейс трекера повинен мати такий вигляд.
У лівій частині знаходиться група "Управління проектами". Вона складається з наступних елементів:
- список проектів;
- кнопки "Новий проект", "Архівувати проект", "Відкрити архів".
У правій частині знаходиться група "Управління завданнями". Вона складається з наступних елементів:
- список задач;
- Випадаючий список «Стан задачі», має три значення: «не активна», «в роботі», «закрита»;
- кнопки «Нове завдання», «Редагувати завдання», «Видалити завдання».
Управління проектами
Виділення мишею одного із проектів ініціює завантаження списку завдань для відповідного проекту.
Натискання кнопки "Новий проект" відкриває діалогове вікно створення проекту.
У текстовому полі введення користувач повинен ввести назву проекту. Залежно від положення радіоперемикача «СКВ» (Система Контролю Версій) назва може містити наступні символи:
- «без системи контролю версій» – будь-які символи;
- "під системою контролю версій" - лише символи латинського алфавіту без пробілів, включаючи символ підкреслення.
Проект без ВКВ у списку проектів позначається буквою «М» у дужках (від англ. manual – вручну) перед найменуванням проекту.
Кнопка «Архівувати проект» дозволяє архівувати проект, який має всі завдання. Якщо проект закрито не всі завдання, трекер видає відповідне попередження і перериває архівування проекту. Якщо у проекту закриті всі завдання та натиснуто кнопку «Архівувати проект», то найменування проекту виключається зі списку проектів в основному інтерфейсі трекера після згоди користувача з відповідним попередженням.
Кнопка «Відкрити архів» дозволяє відкрити архівований проект та завантажити пов'язаний з ним список завдань.
Після натискання кнопки «ОК» зазначені проекти мають з'явитись у списку проектів основного вікна трекера. Архівовані раніше проекти позначаються у списку проектів буквою «А» у дужках перед найменуванням проекту.
Управління задачами
Якщо не виділено жодного завдання, що випадає на список «Стан завдання», кнопки «Редагувати завдання» та «Видалити завдання» заблоковані. Якщо виділено завдання, ці елементи доступні. Крім того, список «Стан завдання», що випадає, встановлюється на значення, вказане в таблиці. Якщо виділено завдання у стані «закрито», випадає список «Стан завдання», кнопки «Редагувати завдання» та «Видалити завдання» також заблоковані.
Залежно від стану завдання рядок у таблиці задач забарвлюється у відповідний колір:
- не активна – білий колір (254, 254, 254);
- у роботі – жовтий колір (255, 254, 4);
- Закрита - зелений колір (143, 210, 68).
При зміні значення списку «Стан завдання», що випадає, змінюється стан задачі в таблиці і колір рядка таблиці. При встановленні значення «закрита» запитується підтвердження про закриття завдання, оскільки надалі змінити її стан буде неможливо. Якщо всі завдання проекту закриті, трекер автоматично пропонує архівувати проект.
Після натискання кнопки «Нова задача» відкривається діалогове вікно введення/редагування задачі.
У текстове поле введення користувач повинен ввести опис завдання, з списку вибрати тип завдання. Усього зумовлено чотири типи завдань:
- bug – виправлення помилки;
- feature - розробка нової функції;
- issue - відпрацювання зовнішнього запиту;
- Milestone – плановий випуск нової версії.
При виділеному рядку в таблиці задач та стані завдання «не активна» або «в роботі» доступні кнопки «Редагувати завдання» та «Видалити завдання».
Після натискання кнопки «Редагувати завдання» відкривається діалогове вікно введення/редагування задачі, показане вище.
Після натискання кнопки «Видалити завдання» користувач повинен підтвердити видалення завдання.
Дата та ревізія надаються автоматично при закритті завдання. У разі закриття завдання вручну (для обох видів проектів, з ВКВ та без ВКВ) у полі «Ревізія» вказується «manual».
Налаштування трекера
Під час першого запуску трекер пропонує користувачеві налаштувати шлях до папки проектів.
У разі натискання кнопки «Скасувати» користувачеві будуть доступні для створення лише проекти без ВКВ.
Після натискання кнопки «…» відкривається стандартне діалогове вікно вибору папки.
Після натискання кнопки закриття вікна основного інтерфейсу трекер згортається в трей.
З трею є контекстне меню з наступними командами:
- «Відкрити трекер»;
- «Шлях до проектів»
- "Вихід".
За командою "Відкрити трекер" відкривається основний інтерфейс трекера.
За командою "Шлях до проектів" відкривається діалогове вікно налаштування шляху до проектів. У разі якщо:
- Шлях ще не налаштований (при першому запуску трекера була натиснута кнопка «Скасувати»), користувач може скористатися всіма елементами діалогового вікна;
- шлях налаштований, заблоковано всі елементи, крім кнопки "ОК"; при наведенні курсору на текстове поле введення виводиться підказка з повним шляхом до папки проектів.
За командою «Вихід» програма повністю закривається.
Висновок
- Описано основні вимоги до проекту.
- Розроблено прототипи інтерфейсів.
- Визначено основну логіку роботи програми.
Прикольно. Это такая локальная Jira получается?
А если добавить функционал по редактированию коммитов и веток, то получится базовая реализация TortoiseSVN. Только кроссплатформенная...
Редактирование веток и коммитов - чересчур. Это надо подключать API самого SVN. Я заглянул туда и понял, что пока рановато...
Да, похоже на Jira, только я её не рассматривал. Ориентировался на Mantiss, Bugzilla и Trac.
Ясно)) А можно ещё переписать на QML и используя Web Assembly показывать прямо в браузере. Тогда может быть многопользовательский вариант системы.