Das Programm Gitassistant ist ein GUI Tool, was einem Software Entwickler den Zustand der Gitrepos auf dem aktuellen Rechner anzeigt. Dabei liegt der Fokus nicht auf einem Repo, z.B. dem im aktuellen Pfad, sondern allen Gitrepos, welche sich auf dem Entwickler Rechner befinden. Dazu wird unter einem bestimmten Pfad nach diesen gesucht.
Das Programm entstand in dem Zusammenhang meiner Tätigkeit als Werksstudent. Ich war zu der Zeit als Software Entwickler tätig. Ich habe mich damals in einer Pause mit einem Kollegen unterhalten. Das Team in dem ich gearbeitet
habe, war noch nicht so vertraut mit dem Umgang mit Git und was es für Tools gibt. Auch mir fehlte das Wissen, das es etwas wie den Gitassistant bereits gibt. Ich habe mich mit dem Kollegen darüber Unterhalten, dass er oft vor
einem Problem als Entwickler in einem Unternehmen steht. Er sprach davon, dass es zu Abwesenheiten, wie Krankheit oder Urlaub kommt und man dann nicht mehr seinen Stand kennt, wo man zuletzt an der Software Änderungen am Code gemacht
hat. Außerdem fügte er hinzu, das auch nach einer solchen Rückkehr er bei sehr vielen Repos gerne einen Überblick haben würde, ob dort andere Kollegen bereits Änderungen hinzugefügt haben. Ähnlich
sagte er wäre es gut, vor dem Beginn der Abwesenheit durch Urlaub noch einmal alle Zustände der Repos auf dem Rechner prüfen zu können, damit nichts vergessen wird, bevor er in den Urlaub geht.
Dieses Problem brachte mich auf die Idee ein Programm zu Entwickeln, was diese Zustände der Repos, welche auf dem Entwickler System ausgecheckt sind zu analysieren und gesammelt darzustellen. Und dabei war es wichtig, dass der
Entwickler das Programm nur auf einen bestimmten Pfad einstellen muss, wo die Repos von ihm normalerweise liegen. Danach kann man das Tool jederzeit starten und es würde selbst die Repos erkennen und alle Änderungen finden.
Auf das Gespräch mit dem Kollegen und der Idee das Programm zu entwickeln, arbeitete ich an der ersten Version des Gitassistant. Das Team arbeitete damals mit Programmen, die in Visual Basic entwickelt waren. Ich hatte zu der Zeit bereits Erfahrungen, grafische Programme mit der Sprache für Windows zu entwickeln. Da das Tool für die Kollegen entwickelt wurde, kann ich das Original hier leider nicht mehr zeigen. Aber es konnte zu der Zeit der Entwicklung das Gleiche, was meine aktuelle Entwicklung kann.
Nach einiger Zeit nachdem ich das Unternehmen verlassen hatte, wusste ich immer noch, wie ich den Gitassistant damals entwickelt hatte und was der konnte. Mittlerweile bin ich nicht mehr viel mit Windows unterwegs, sondern mit Linux. Und daher eignete sich das alte Visual Basic nicht mehr für ein solches Programm. Doch auch mir kam die Idee, manchmal einen Gitassistant gebrauchen zu können. Daher beschloss ich das Programm wieder zu entwickeln, als freies Programm für Linux. Als Programmiersprache hier für kam auch wegen der Kenntnis über den Umgang mit Frameworks für GUI Tools die Programmiersprache C++ in frage. Für Python konnte ich ein solches GUI Framework nicht bedienen. So zeigt diese Seite hier den in C++ erneut entwickelten Gitassistant.
Dieses hier gezeigte Programm setzt das Qt Framework ein. Dies geschieht unter den Bedingungen, dass ich für das hier gezeigte Programm (gewollt) keinerlei kommerzielle Ziele verfolge und Gewinn erziele. Das Programm bindet keine aus dem Qt Framework stammenden Bibliotheken statisch ein. Jegliche Rechte an diesen verbleiben bei den Original Entwicklern des Qt Frameworks "The Qt Company". Der source Code zu dem hier gezeigten Programm Gitassistant ist öffentlich einsehbar als Repository auf Gitlab.
Zum Zoomen klicken.
Der Gitassistant ist dafür gedacht, dass er als GUI Anwendung gestartet werden kann. Er soll dem Entwickler eine Übersicht über die aktuellen Zustände der Git Repos geben, die sich aktuell auf dem Entwickler Computer
befinden. Dazu muss für den Gitassistant mindestens ein Pfad angegeben werden, wo er nach Git Repos suchen soll. Selbstverständlich können dabei auch mehrere Pfade angegeben werden. Sind Pfade zum Suchen eingestellt,
fängt der Gitassistant an, dort jeweils nach Git Repos zu suchen. Das geht in der Regel sehr schnell. Wird der Gitassistant gestartet und es sind bereits Pfade zum suchen bekannt, dann fängt der Gitassistant automatisch mit der
Suche an. Man kann aber auch mit einem Button die Repos erneut suchen lassen.
Nach dem der Gitassistant die Repos gefunden hat, fängt er pro Repo an, dessen aktuellen Status einzusammeln. Da dies pro Repo einen moment dauern kann, macht der Gitassistant das mehrfach parallel. Der Status wird tatsächlich
durch aufrufen des Git client ermittelt, was erfordert, dass dieser installiert ist. Abgefragt wird dann jeweils der Status im allgemeinen, geänderte Dateien, vorhandene Branches, dazu eingehende Branches und eingehende Änderungen
vom Remote.
Der Grund warum ich mit dem Gitassistant wiederum den Git client als Unterprozess starte, liegt in der Auswahl an APIs. So gibt es zwar Bibliotheken, jedoch oft nicht für C++ Programme. Manchmal gibt es welche, jedoch schienen diese
oft nicht mehr gepflegt. Und die Einbindung in das Qt C++ Programm war mir nicht ganz klar. Man hätte an dieser stelle auch immer über die Installation der Bibliothek mit dem Programm und der Kompatibilität zum Linux des
Users bedenken müssen. So erschien es mir einfacher, den Git client zu verwenden, der auf einem Entwickler Computer wahrscheinlich auch installiert ist. Ferner hatte das Programm in Visual Basic unter Windows dort den client auch
verwenden müssen, da dort die Situation ähnlich und komplexer war. Selbst das nutzen eines Git client war in der Windows Version nicht so trivial wie in der Linux Version möglich.
Gitassistant Screenshot der Linux Version (Einstellungen). Zum Zoomen klicken.
In den Einstellungen des Gitassistant kann zunächst der Pfad zu dem Git Client festgelegt werden. Da der Gitassistant diesen benötigt, kann hier der Pfad manuell festgelegt werden. Jedoch versucht der Gitassistant den Pfad selbst
zu bestimmen. Das tut er unter Linux durch die PATH Umgebungsvariable.
In der Liste können Pfade hinzugefügt werden, unter welcher der Gitassistant anfängt nach den Git Repos zu suchen.
Der Gitassistant in der erneuten Entwicklung als Linux Programm ist zunächst noch der Stand, welcher dem für Windows entwickelten Programm. Das damals während der Tätigkeit als Werksstudent entwickelte Original Programm entstand relativ zum Ende der Tätigkeit. Daher hatte es nur die Funktion erreicht, die auch dieses für Linux neu entwickelte Programm aktuell kann. Bereits damals waren noch Erweiterungen der Funktion in meinem Kopf. Doch diese müssen in den Gitassistant für die Linux Welt erst eingebaut werden. Denn dafür habe ich noch keine Entwicklung.
| Funktion | Bescheibung |
|---|---|
| Geänderte Daten Übernehmen |
In der Tabelle der gefundenen Repos ist eigentlich links eine Zelle mit einer Hacken Option gedacht. Auf ausgewählte Repos soll man dann Änderungen wie neue oder geänderte Dateien mit einem Commit übernehmen können. Wenn der Gitassistant bei einem Repo anzeigt, dass dort noch nicht committete Änderungen sind, möchte man diese vielleicht auch gleich mit einem Commit übernehmen können. Ferner soll man die Änderungen auch per Push an den Remote übertragen können. |
| Branches des Repos Verwalten |
Der Gitassistant bietet auch die Branches des Repos zur Auswahl an. So kann man alle Branches sehen. Wählt man einen anderen Branch aus, wird diese Auswahl als Checkout auf den Branch ausgeführt. Ferner ist natürlich auch das anlegen eines neuen Branch angedacht. |
| Verschidene Remote |
Der Gitassistant kann aktuell nur einen Remote verwalten. Dazu muss dieser auch immer "origin" heißen. Jedoch ist es mit dem Git client auch möglich mehrere Remotes auf einem Repository zu nutzen und der Name "origin" wird auch nur oft als default gewählt. Jedoch kann jeder Remote einen eigenen Namen bekommen und die Branches folgen dann einem Branch auf einem Remote. Die Unterstützung dafür muss ebenfalls erst noch eingebaut werden. Dies ist auch ein größerer Umbau. Jedoch wird diese Funktion selten genutzt. Trotzdem soll die Funktion für den Gitassistant entwickelt werden. |