Das Projekt implementiert einen einfachen Issue-Tracker hauptsächlich für Softwareprojekte, die in Subversion gespeichert sind. Ich hoffe, es nur für mich selbst zu verwenden. Wenn Leser dieser Ressource interessiert sind, werde ich versuchen, den Code für die Möglichkeit einer universelleren Verwendung zu verfeinern und das Projekt auf GitHub zu veröffentlichen.
Die Verwendung von Subversion (im Folgenden als SVN bezeichnet) zum Speichern von Code wird durch die Tatsache bestimmt, dass SVN zusätzlich zu den Quelltexten von Programmen über einen selbstgeschriebenen Satz von Skripten zum Archivieren anderer Dokumente verfügt.
Das Projekt entstand aus der Notwendigkeit, den Überblick über unsere eigene Arbeit zu behalten. Eine Analyse von Analoga zeigte, dass die Verwendung verfügbarer kostenloser Tracker die Installation und Konfiguration zusätzlicher Software erfordert, wie z. B.: einen vollwertigen Webserver und Datenbankserver; Python und einige zusätzliche Skripte. Da ich den Tracker nur zur lokalen Kontrolle meiner eigenen Arbeit benötige, erschienen mir solche Kosten unnötig. Außerdem ist dies für mich eine notwendige Programmierpraxis.
Für die Umsetzung des Projekts wurde eine Client-Server-Architektur auf Basis von QLocalSocket gewählt, weil Es ist notwendig, zwei unabhängig voneinander arbeitende Komponenten zu verknüpfen - SVN und den Tracker selbst.
Der Tracker muss:
- beim Systemstart ausführen;
- haben eine Serverseite und eine visuelle Schnittstelle.
Der Tracker-Client muss gestartet werden, wenn die Projektänderungen durch den Pre-Commit-Hook an SVN übergeben werden. Der Tracker-Client muss dem Server den Namen des Projekts, die Nummer des zu schließenden Problems und die Revisionsnummer senden. Der Server wiederum muss diese Daten akzeptieren und die Aufgabe in den Zustand „geschlossen“ überführen.
Die Daten zum Schließen der Aufgabe werden vom Benutzer im Kommentar zum Commit in folgendem Format eingetragen:
<произвольный текст> #{номер закрываемой задачи} <произвольный текст>
Die restlichen Daten werden vom Auftraggeber vergeben.
Tracker-Schnittstelle
Die Tracker-Oberfläche sollte so aussehen.
Auf der linken Seite befindet sich die Projektmanagement-Gruppe. Es besteht aus folgenden Elementen:
- Projektliste;
- Schaltflächen "Neues Projekt", "Projekt archivieren", "Archiv öffnen".
Auf der rechten Seite befindet sich die Gruppe „Aufgabenverwaltung“. Es besteht aus folgenden Elementen:
- Aufgabenliste;
- Dropdown-Liste "Status der Aufgabe", hat drei Werte: "inaktiv", "in Bearbeitung", "geschlossen";
- Schaltflächen "Neue Aufgabe", "Aufgabe bearbeiten", "Aufgabe löschen".
Projektmanagement
Die Auswahl eines der Projekte mit der Maus löst das Laden der Aufgabenliste für das entsprechende Projekt aus.
Ein Klick auf die Schaltfläche Neues Projekt öffnet den Projekterstellungsdialog.
In das Texteingabefeld muss der Benutzer den Namen des Projekts eingeben. Je nach Stellung des Funkschalters „SKB“ (Version Control System) kann der einzugebende Name folgende Zeichen enthalten:
- "ohne Versionskontrollsystem" - beliebige Zeichen;
- "unter dem Versionskontrollsystem" - nur lateinische Zeichen ohne Leerzeichen, einschließlich des Unterstrichs.
Ein Projekt ohne ACS in der Projektliste wird mit dem Buchstaben "M" in Klammern (aus dem englischen Handbuch - manuell) vor dem Namen des Projekts gekennzeichnet.
Über die Schaltfläche „Projekt archivieren“ können Sie ein Projekt archivieren, für das alle Aufgaben abgeschlossen sind. Wenn nicht alle Aufgaben für das Projekt abgeschlossen sind, gibt der Tracker eine entsprechende Warnung aus und unterbricht die Archivierung des Projekts. Wenn alle Aufgaben für das Projekt geschlossen und die Schaltfläche „Projekt archivieren“ gedrückt wird, wird der Projektname aus der Liste der Projekte in der Haupt-Tracker-Oberfläche ausgeschlossen, nachdem der Benutzer der entsprechenden Warnung zugestimmt hat.
Über die Schaltfläche „Archiv öffnen“ können Sie ein archiviertes Projekt öffnen und die zugehörige Aufgabenliste laden.
Durch Drücken der Schaltfläche „OK“ sollten die markierten Projekte in der Liste der Projekte im Hauptfenster des Trackers erscheinen. Bereits archivierte Projekte sind in der Projektliste mit dem Buchstaben „A“ in Klammern vor dem Projektnamen gekennzeichnet.
Aufgabenmanagement
Wenn keine Aufgabe ausgewählt ist, sind die Dropdown-Liste „Aufgabenstatus“ und die Schaltflächen „Aufgabe bearbeiten“ und „Aufgabe löschen“ deaktiviert. Wenn eine Aufgabe markiert ist, sind diese Elemente verfügbar. Außerdem wird die Dropdown-Liste Aufgabenstatus auf den in der Tabelle angegebenen Wert gesetzt. Wenn eine Aufgabe im geschlossenen Zustand ausgewählt wird, sind die Dropdown-Liste Aufgabenstatus sowie die Schaltflächen Aufgabe bearbeiten und Aufgabe löschen ebenfalls deaktiviert.
Je nach Zustand der Aufgabe wird die Zeile in der Aufgabentabelle in der entsprechenden Farbe eingefärbt:
- nicht aktiv – weiße Farbe (254, 254, 254);
- in Arbeit - gelbe Farbe (255, 254, 4);
- geschlossen - grüne Farbe (143, 210, 68).
Wenn Sie den Wert der Dropdown-Liste Aufgabenstatus ändern, ändert sich der Status der Aufgabe in der Tabelle und die Farbe der Tabellenzeile. Bei der Einstellung „geschlossen“ wird zum Schließen der Aufgabe eine Bestätigung angefordert, da der Status in Zukunft nicht mehr geändert werden kann. Sind alle Projektaufgaben abgeschlossen, bietet der Tracker automatisch an, das Projekt zu archivieren.
Durch Betätigen der Schaltfläche „Neue Aufgabe“ öffnet sich ein Dialogfenster zur Eingabe / Bearbeitung einer Aufgabe.
In das Texteingabefeld muss der Benutzer eine Beschreibung der Aufgabe eingeben und die Art der Aufgabe aus der Dropdown-Liste auswählen. Es sind vier Arten von Aufgaben vordefiniert:
- Fehler – Fehlerkorrektur;
- Feature – Entwicklung eines neuen Features;
- Issue – Bearbeitung einer externen Anfrage;
- Meilenstein - geplante Veröffentlichung einer neuen Version.
Wenn eine Zeile in der Aufgabentabelle ausgewählt ist und der Aufgabenstatus „inaktiv“ oder „in Bearbeitung“ ist, sind die Schaltflächen „Aufgabe bearbeiten“ und „Aufgabe löschen“ verfügbar.
Durch Klicken auf die Schaltfläche Aufgabe bearbeiten wird der oben gezeigte Dialog zur Aufgabeneingabe/-bearbeitung geöffnet.
Durch Klicken auf die Schaltfläche „Aufgabe löschen“ muss der Benutzer das Löschen der Aufgabe bestätigen.
Datum und Revision werden beim Schließen der Aufgabe automatisch zugewiesen. Beim manuellen Schließen der Aufgabe (für beide Projektarten, mit und ohne FQ) wird das Feld „Revision“ auf „manuell“ gesetzt.
Tracker-Einstellungen
Beim ersten Start fordert der Tracker den Benutzer auf, den Pfad zum Projektordner festzulegen.
Wenn die Schaltfläche "Abbrechen" gedrückt wird, kann der Benutzer nur Projekte ohne harte Währung erstellen.
Durch Klicken auf die Schaltfläche "..." öffnet sich ein Standarddialog zur Ordnerauswahl.
Durch Drücken der Schaltfläche zum Schließen des Fensters der Hauptschnittstelle wird der Tracker in den Tray minimiert.
In der Taskleiste ist ein Kontextmenü mit den folgenden Befehlen verfügbar:
- "Tracker öffnen";
- "Pfad zu Projekten"
- "Ausgang".
Der Befehl „Tracker öffnen“ öffnet die Hauptschnittstelle des Trackers.
Der Befehl "Pfad zu Projekten" öffnet einen Dialog zum Einstellen des Pfades zu Projekten. Wenn:
- Der Pfad wurde noch nicht konfiguriert (die Schaltfläche "Abbrechen" wurde gedrückt, als der Tracker zum ersten Mal gestartet wurde), der Benutzer kann alle Elemente des Dialogfelds verwenden.
- der Pfad ist konfiguriert, alle Elemente sind gesperrt, außer der Schaltfläche "OK"; Wenn Sie den Mauszeiger über das Eingabetextfeld bewegen, wird ein Tooltip mit dem vollständigen Pfad zum Projektordner angezeigt.
Der Befehl "Beenden" schließt die Anwendung vollständig.
Fazit
- Die wesentlichen Anforderungen an das Projekt werden beschrieben.
- Entwicklung von Schnittstellenprototypen.
- Definiert die Hauptlogik der Anwendung.
Прикольно. Это такая локальная Jira получается?
А если добавить функционал по редактированию коммитов и веток, то получится базовая реализация TortoiseSVN. Только кроссплатформенная...
Редактирование веток и коммитов - чересчур. Это надо подключать API самого SVN. Я заглянул туда и понял, что пока рановато...
Да, похоже на Jira, только я её не рассматривал. Ориентировался на Mantiss, Bugzilla и Trac.
Ясно)) А можно ещё переписать на QML и используя Web Assembly показывать прямо в браузере. Тогда может быть многопользовательский вариант системы.