GitWizard

Vorstellungen von Programmen, welche mit Lazarus erstellt wurden.
wennerer
Beiträge: 524
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

GitWizard

Beitrag von wennerer »

Hallo an Alle,
seit dem ich mich vor einiger Zeit mit git beschäftigt habe spukt in mir der Gedanke herum das eine (einfache) Integration von git Befehlen in die Lazarus IDE, zumindest für mich, eine feine Sache wäre.
Ich habe mir deshalb den GitWizard ausgedacht. Der Name verspricht leider mehr als ich anbieten darf :) aber ich sehe es mal als Anfang und sehr Ausbaufähig.
Der Grundgedanke des Programms ist das der Lazarusbenutzer selber kleine Skript-Dateien mit git-Befehlen anlegen kann und diese dann mittels GitWizard ausführt.

Aussehen tut das ganze im angedockten Zustand so:
gitwizard1.png
gitwizard1.png (315.57 KiB) 3303 mal betrachtet
Für alle die es mal testen möchten bitte zuerst hier ein paar Infos lesen:

Zum Installieren Package, Packagedatei öffnen, zum Ordner GitWizard navigieren und dort die laz_gitwizard.lpk öffnen.
Dann auf Verwenden, installieren.
Sobald das Package installiert ist befindet sich im Menü Werkzeuge das Item GitWizard. Klickt man auf dieses öffnet sich das Fenster.
Möchte man die von mir verwendeten Skripte nutzen einmal auf den vorletzten Button (Backup wieder herstellen) klicken. Dann noch den 7. Button (Optionen) klicken und einen Editor (z. Bsp xed, gedit, notepad, etc.) eingeben mit dem man die Skripte oder gitignore öffnen kann. Alle Kommando-Buttons besitzen ein Popup (klick mit rechter Maustaste). Dort kann das Skript geöffnet, gelöscht oder der Button verschoben werden.

Die Toolbar:
Toolbar.png
Toolbar.png (11.86 KiB) 3303 mal betrachtet


An oberster Stelle findet man den Pfad zu dem Verzeichnis das in gitWizard als zu überwachendes Verzeichnis eingestellt ist.
Mit dem ersten SpeedButton setzt man das zuletzt gespeicherte Projekt-Verzeichnis als zu überwachendes Verzeichnis.
Mit dem zweiten kann man das geöffnete Package-Verzeichnis setzen.
Der nächste Speedbutton öffnet einen Verzeichnis-Dialog mit dem man ein beliebiges Verzeichnis setzen kann.
Der vierte Button öffnet das gesetzte Verzeichnis im Explorer.
Mit dem Fünften kann eine Standard gitignore Datei bearbeitet werden welche sich dann ins Verzeichnis kopieren lässt.
Mit dem Plus-Button können neue Befehle hinzugefügt werden. Wird zum ausführen des Befehls eine Eingabe benötigt bitte den Haken unten setzen!
Mit den Options-Button muss derzeit nur zu Beginn der gewünschte Editor zum Öffnen der Skripte eingetragen werden.
Der Backup-Button speichert alle Skripte und die xml Datei in den Ordner backup unter den Befehlsordner.
VORSICHT:
Der Restore-Button löscht erst den Befehlsordner und kopiert dann die Skripte aus dem Backup Ordner in den Befehlsordner.
Der letzte Button öffnet ein kleines Info Fenster.

Natürlich würde mich sehr interessieren ob irgendwo Probleme auftauchen (Hauptsächlich unter Linux Mint getestet).
Falls jemand Verbesserungsvorschläge hat ich bin für alles dankbar! Vor allem hadere ich mit den Rückmeldungen nach den Befehlen. Erstens kommt da noch nicht soviel zurück wie im Terminal und zweitens verwende ich dafür ein einfaches Showmessage. Gerade bei einem Diff wären halt Farben schön.

Alle Icons sind von Roland Hahn (Ally). Herzlichen Dank!!!!

Viele Grüße
Bernd

Edit: Die neuste Version ist auf Git Hub zufinden. https://github.com/wennerer/Gitwizard.git
Wer das alte zip.projekt (aller erste Version) getestet hat und nun die neue Version testen möchte muss unbedingt die alte "gw_commands.xml" und am besten auch die "gw_options.xml" aus seinem LazarusConfig Ordner löschen. Es wird sonst zu Konflikten kommen!

Das hier war die aller erste Version:
Dateianhänge
GitWizard.zip
(1.41 MiB) 45-mal heruntergeladen
Zuletzt geändert von wennerer am So 11. Feb 2024, 10:16, insgesamt 1-mal geändert.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1436
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: GitWizard

Beitrag von fliegermichl »

Ich habe es mal installiert und es funktioniert auch soweit ganz gut. (Windows 11)

Jetzt habe ich einen Button git push hinzugefügt.
Wenn ich das auf der Konsole mache, dann fragt git nach dem Passwort und der Befehl wird ausgeführt.
Bei dem GitWizard kommt nur die Meldung "Der Befehl ist nicht korrekt!".

Die Verbindung zum remote Repository läuft über ssh, deshalb die Passwortabfrage.
Ich wüßte jetzt nicht, wie ich dem git push Befehl das Passwort auf der Kommandozeile unterjubeln könnte.

Mathias
Beiträge: 6209
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: GitWizard

Beitrag von Mathias »

Ich wüßte jetzt nicht, wie ich dem git push Befehl das Passwort auf der Kommandozeile unterjubeln könnte.
Ich habe folgende Datei auf meinem PC, da muss ich keine Passwort mehr beim push eingeben.
~/.netrc
Der Inhalt der Datei:

Code: Alles auswählen

machine github.com login meinname password ghp_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Die XXX... sind der Tokenschlüssel.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
photor
Beiträge: 445
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: GitWizard

Beitrag von photor »

Moin,

Man kann SSH auch so einrichten, dass kein Passwort abgefragt wird, sondern das Einloggen über ein Schlüsselpaar geregelt wird.

So habe ich das (lokal) zwischen meinem Arbeitslappy und dem Git-Server (auf NAS) geregelt. git push funktioniert einfach so (von der Konsolle) - aus irgendeiner GUI habe ich das aber auch noch nicht probiert.

Ciao,
Photor

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: GitWizard

Beitrag von corpsman »

@photor
Das funktioniert überall so.
Ich habe ein Paswortfreies SSH Schlüsselpaar auf meinem Github Account und meinem Laptop (egal ob Windoof oder Linux) und schon kannst du ohne PW eingaben Pushen nach belieben ;)

@wennerer
Du willst quasi Tortoise Git funktionen in der Gui haben, oder verstehe das falsch ?
--
Just try it

wennerer
Beiträge: 524
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: GitWizard

Beitrag von wennerer »

Hallo,
fliegermichl schrieb:
Die Verbindung zum remote Repository läuft über ssh, deshalb die Passwortabfrage.
Ich wüßte jetzt nicht, wie ich dem git push Befehl das Passwort auf der Kommandozeile unterjubeln könnte.
Ich benutze auch die SSH-Public-Keys und hab mir das nach der Anleitung eingerichtet:
https://git-scm.com/book/de/v2/Git-auf- ... te_ssh_key

corpsman schrieb:
Du willst quasi Tortoise Git funktionen in der Gui haben, oder verstehe das falsch ?
Naja die Qualität hat das wohl nicht. Ich habe halt festgestellt das ich eigentlich immer die gleichen git Befehle benutze. Oft bin ich aber zu Faul einen Commit im Terminal zu machen und bereue es dann :D
Deshalb die Integration der Befehle in die Lazarus IDE. Wie ich ja schon schrieb da ist noch Luft nach oben. Ich habe jetzt bei mir den Output in ein Synedit verlagert. Ist schon mal besser als showmessage. Eventuell teste ich mal mit Highlighter herum, wobei es viel besser wäre ich bekäme irgendwie vom Output die Formatierung (Escape Sequenzen???). Wobei ich dann noch nicht weiß wie ich Farbe realisieren könnte.
Zunächst möchte ich aber die Befehlsbuttons auf eine PageControl mit Tabsheets legen um die Befehle besser zu sortieren. Hab da schon mal angefangen, mal sehen was draus wird:
tab.png
tab.png (15.9 KiB) 3091 mal betrachtet
Viele Grüße
Bernd

Mathias
Beiträge: 6209
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: GitWizard

Beitrag von Mathias »

Oft bin ich aber zu Faul einen Commit im Terminal zu machen und bereue es dann :D
Dafür habe ich ein kleines Script geschrieben.

Code: Alles auswählen

#!/bin/bash
cd meinOrdner
git add .
git commit -m "$1"
git push
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: GitWizard

Beitrag von corpsman »

@Matthias
und ich hab mir eine GIT_Gui für Linux und Windows gebaut die auf den ersten blick wie Tortoise Git aussieht und in Caja integriert ist ;)
--
Just try it

Benutzeravatar
photor
Beiträge: 445
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: GitWizard

Beitrag von photor »

corpsman hat geschrieben:
Di 23. Jan 2024, 16:40
@photor
Das funktioniert überall so.
Schon klar 8) Aber in 90% der Fälle kommt dann aber Fragenden zurück: "Bei mir nicht!" - warum auch immer. Dager das relativierende "bei mir". :wink:

Ciao,
Photor

CCRDudeLaz
Beiträge: 29
Registriert: Do 25. Jan 2024, 08:33
OS, Lazarus, FPC: Win/macOS/Linux (L trunk FPC trunk)
CPU-Target: 32+64

Re: GitWizard

Beitrag von CCRDudeLaz »

Für Windows habe ich da vor Ewigkeiten auch mal ein IDE-Package für die Integration von TortoiseGit (TortoiseHg, TortoiseSvn. &c.) gebaut.
https://gitlab.com/ccrdude-lazarus-ide/lazvcshelper
Einfach um die GUI nicht ganz neu erfinden zu müssen :)

Cool, dass Du etwas plattformübergreifendes gebaut hast. Ich spiele schon eine Weile immer mal wieder mit dem Gedanken, statt TortoiseGit libgit zu verwenden, umd as auch auf meinen Mac nutzen zu können - libgit stat git, um die Daten direkt zu haben und nicht erst Konsolenoutput parsen zu müssen.

Ideen:
* im Projektmanager den Git-Status zu den Dateien mit anzeigen (committed, neu, staged, unstaged, &c.)
* zusätzliche linke farbliche Leiste, die Änderungen gegenüber repo anzeigt (was jetzt ja nur lokale Änderungen anzeigt)

Bzgl. Rückmeldungen bei Fehlern: wertest Du denn auch die Error-Pipe oder nur die Output-Pipe aus?
Ich sehe bei Dir spontan nur RunCommandInDir, wäre es da nicht sinnvoller, selber TProcess zu verwenden, um Zugriff auf Exitcode, Error-Pipe &c. zu haben?

wennerer
Beiträge: 524
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: GitWizard

Beitrag von wennerer »

Hallo CCRDudeLaz,
Danke für deine Antwort.

Du schriebst:
Bzgl. Rückmeldungen bei Fehlern: wertest Du denn auch die Error-Pipe oder nur die Output-Pipe aus?
Ich sehe bei Dir spontan nur RunCommandInDir, wäre es da nicht sinnvoller, selber TProcess zu verwenden, um Zugriff auf Exitcode, Error-Pipe &c. zu haben?
RunCommandInDir war für mich jetzt erstmal das einfachste Mittel zum Zweck. Mittlerweile habe ich es auch schon mit der zusätzlichen ProcessOption poStderrToOutput probiert.
Mir ist aber ehrlich gesagt kein Unterschied aufgefallen.

Code: Alles auswählen

RunCommandInDir(PathToGitDirectory,pathtobash,Com,s,[poStderrToOutput],swOptions)
Mit TProcess habe ich bis dato nur Kleinigkeiten gemacht, werde ich aber bestimmt auch noch Testen. Falls du da fit bist kannst du dich gerne einbringen. :D

Zu deinen Ideen: Ja da gibt es noch so einiges was man einbauen könnte. Weißt du wie ich an den Git-Status komme um ihn anzuzeigen?

Zunächst möchte ich aber (sobald ich Zeit finde) die Befehlsbuttons auf Tabsheets verteilen können. Wenn ich das fertig habe werde ich das Projekt nach GitHub pushen.
Wie gesagt Vorschläge, Verbesserungen etc. sehr willkommen.

Viele Grüße
Bernd

CCRDudeLaz
Beiträge: 29
Registriert: Do 25. Jan 2024, 08:33
OS, Lazarus, FPC: Win/macOS/Linux (L trunk FPC trunk)
CPU-Target: 32+64

Re: GitWizard

Beitrag von CCRDudeLaz »

Zu TProcess kannst Du einfach in den Source von RunCommandInDir schauen. Das ruft ja TProcess.RunCommandInLoop auf, welches auch errorstring und exitstatus zurück liefert. Damit kannst Du dann explizit Fehler erkennen.

Ich habe spontan mal geschaut, wie schwer das mit libgit ist, hier nur mal ein PoC, dass das kein Hexenwerk ist:
https://gitlab.com/ccrdude-pascal/firefly-git
Evtl. arbeite ich da noch spontan ein wenig dran, ich hatte für ein Projekt überlegt, bestimmte Dateien per git-repository zu aktualisieren, da wäre das auch hilfreich...

wp_xyz
Beiträge: 4893
Registriert: Fr 8. Apr 2011, 09:01

Re: GitWizard

Beitrag von wp_xyz »

wennerer hat geschrieben:
Fr 19. Jan 2024, 22:39
Integration von git Befehlen in die Lazarus IDE
Im internationalen Forum sucht jemand eine IDE-Erweiterung für git (https://forum.lazarus.freepascal.org/in ... cseen.html). Vielleicht könntest du dort dein Projekt präsentieren?

wennerer
Beiträge: 524
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: GitWizard

Beitrag von wennerer »

Hallo,
ich habe eben das Projekt Gitwizard nach GitHub gepusht. Ich hab einiges geändert und hinzugefügt, hoffentlich ist mir kein Fehler unterlaufen.
Wer das alte Projekt getestet hat und nun die neue Version testen möchte muss unbedingt die alte "gw_commands.xml" und am besten auch die "gw_options.xml" aus seinem LazarusConfig Ordner löschen. Es wird sonst zu Konflikten kommen!

https://github.com/wennerer/Gitwizard.git

@wp_xyz: ich teste noch etwas herum ob mir noch ein Fehler auffällt und dann werd ich mein Glück im Internationalen Forum versuchen.

Viele Grüße
Bernd

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6216
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: GitWizard

Beitrag von af0815 »

Wenn es bei den konfigs zu Problemen kommt, sollte man darüber Nachdenken und entweder ein Upgrade machen oder den User darin führen was er machen soll.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten