Suche Komponente für GIT-Grafik

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7347
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:

Suche Komponente für GIT-Grafik

Beitrag von af0815 »

Ich würde etwas suchen, wie man am besten so Grafiken erstellen kann wie am Bild. (Ausser Git-log)
GitGraph2.png
GitGraph2.png (495.96 KiB) 1105 mal betrachtet
Es geht mir darum diese Linien ähnlich wie am Bild dargestellt hinzubekommen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: Suche Komponente für GIT-Grafik

Beitrag von Mathias »

Geht es dir um eine Universalgrafik, oder spezifisch auf GIT ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7347
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: Suche Komponente für GIT-Grafik

Beitrag von af0815 »

Mathias hat geschrieben: Di 23. Jun 2026, 17:35 Geht es dir um eine Universalgrafik, oder spezifisch auf GIT ?
Eher Universalgrafik, nachdem ich mich aktuell mit der libgit2 beschäftige, ist es dann spezifisch für GIT :-) Es sollte mit Pascal zusammenpassen, nicht irgeneine C-Lib.

Auf der einen Seite ist es ja ein Raster, weil man die Commits dort anzeigt, andererseits braucht man Linien um damit die Branches abzubilden.

Alleine wenn man sich oben die 4 Grafiken ansieht, ist die Analyse der Zweige immer komplett anders dargestellt. Vor alen, wenn versucht die einzelnen Stränge zu verfolgen um zu sehen wie sich der "master" ausgebildet hat, ist das komplett unterschiedlich dargestellt. Kein Wunder wenn die meisten bei GIT aussteigen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Roland Chastain
Beiträge: 199
Registriert: Sa 7. Jul 2012, 21:50
Wohnort: Saargemünd
Kontaktdaten:

Re: Suche Komponente für GIT-Grafik

Beitrag von Roland Chastain »

Um solche Zeichnungen anzufertigen, würde ich TikZ benutzen.

Offenbar bin ich nicht der Einzige, der diese Idee hatte.
Petit poisson deviendra grand,
Pourvu que Dieu lui prête vie.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1791
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: Suche Komponente für GIT-Grafik

Beitrag von corpsman »

in meiner Git Gui habe ich die selbst gemalt, war aber nicht gerade spaßig
--
Just try it

Benutzeravatar
Zvoni
Beiträge: 700
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: Suche Komponente für GIT-Grafik

Beitrag von Zvoni »

Die GIT-Grafiken erinnern mich irgendwie an "Prozessfluss/-Ablauf"

PascalScada als "Ansatz"?
https://wiki.lazarus.freepascal.org/PascalSCADA

Alternativ: LazNodeEditor
https://forum.lazarus.freepascal.org/in ... 064.0.html
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7347
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: Suche Komponente für GIT-Grafik

Beitrag von af0815 »

corpsman hat geschrieben: Mi 24. Jun 2026, 08:58 in meiner Git Gui habe ich die selbst gemalt, war aber nicht gerade spaßig
Werde ich mir ansehen, gut geklaut ist besser als selbst schlecht gemacht. :mrgreen:

PascalScada und LazNodeEditor sind nicht das Mittel zum Zweck, leider. Für andere Zwecke, ist es gut zu wissen. Wobei ich PascalSCADA sehr gut kenne, das macht Sinn für relativ statische Übersichten im Maschinenbau.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7347
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: Suche Komponente für GIT-Grafik

Beitrag von af0815 »

Roland Chastain hat geschrieben: Mi 24. Jun 2026, 08:24 Um solche Zeichnungen anzufertigen, würde ich TikZ benutzen.
Danke für die Info, das ist aber weit vom "pascalischen" Weg entfernt.

Die Lösung von Corpsmann ist IMHO die reine Pascal Lösung. Jetzt muss ich nur die internen Strukturen von Git (über LibGit2) und den Weg von Corpsmann verstehen :-) Git Ding braucht halt Weile.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: Suche Komponente für GIT-Grafik

Beitrag von Mathias »

Roland Chastain hat geschrieben: Mi 24. Jun 2026, 08:24 Um solche Zeichnungen anzufertigen, würde ich TikZ benutzen.

Offenbar bin ich nicht der Einzige, der diese Idee hatte.
Dieses Latex ist eine echt mächtige Sache.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Warf
Beiträge: 2312
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Suche Komponente für GIT-Grafik

Beitrag von Warf »

Am einfachsten ist vermutlich graphviz dot. Das ist ein Konsolenprogramm das du über TProcess aufrufen kannst, die Beschreibung des Graphen als ASCII text in stdin schreiben kannst und die Grafik in stdout zurück bekommst.

Das hat auch alle modernen layouting Algorithmen drin für alle möglichen graph designs. Ich habs für sowas schon sehr oft benutzt.

Benutzeravatar
Roland Chastain
Beiträge: 199
Registriert: Sa 7. Jul 2012, 21:50
Wohnort: Saargemünd
Kontaktdaten:

Re: Suche Komponente für GIT-Grafik

Beitrag von Roland Chastain »

@af0815

Könnten Sie uns ein Beispiel für den Anfangstext geben? Welchen Befehl verwenden Sie, um die zu visualisierenden Daten abzurufen?
Petit poisson deviendra grand,
Pourvu que Dieu lui prête vie.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7347
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: Suche Komponente für GIT-Grafik

Beitrag von af0815 »

Roland Chastain hat geschrieben: Mi 24. Jun 2026, 20:52 @af0815

Könnten Sie uns ein Beispiel für den Anfangstext geben? Welchen Befehl verwenden Sie, um die zu visualisierenden Daten abzurufen?
Es gibt keinen Anfangstext, die Daten werden mittels LibGit2 https://libgit2.org/ und https://github.com/libgit2/libgit2 abgerufen, Der Zugriff erfolgt über die https://github.com/todaysoftware/libgit2-delphi und einen eigenen Wrapper der die Objekt besser in Lazarus umsetzt. Da ich gerade die ersten Schritte mit dem Wrapper mache, wollte ich auch gleich sehen, was für Daten ich für die Grafiken buw. Informationen brauche. GIT ist da unter der Haube zeitweise doch etwas komplexer und man muss die Daten sich erst zusammensuchen, dazu sollte man wissen, was man sucht :-)

Meine Gehversuche sind an die C-Examples von LibGit2 im Ordner examples angelehnt. Dort werden die Populären Git-Befehle nachgestellt. Anhand der Beispiel kann man (meistens) Nachvollziehen, wie ein Kommando ala "git add" oder "git log" intern in Wirklichkeit funktioniert.

Kurzes Beispiel "git push" (Ist noch eines der einfachsten)

Code: Alles auswählen

	check_lg2(git_remote_lookup(&remote, repo, "origin" ), "Unable to lookup remote", NULL);
	check_lg2(git_remote_init_callbacks(&callbacks, GIT_REMOTE_CALLBACKS_VERSION), "Error initializing remote callbacks", NULL);
	callbacks.credentials = cred_acquire_cb;
	check_lg2(git_push_options_init(&options, GIT_PUSH_OPTIONS_VERSION ), "Error initializing push", NULL);
	options.callbacks = callbacks;
	check_lg2(git_remote_push(remote, &refspecs, &options), "Error pushing", NULL);
Was ich nicht will, ist über TProzess die Daten irgendwie hinauszuwürgen und mit einem externen Programm anzuzeigen. Corpsmann hat da schon den richtigen ANsatz gewählt und die Anzeige der Grafik in reinen Pascal umgesetzt.

Und letztlich will ich, das die Lösungen unter allen populären Plattformen laufen und ich nicht von anderen Programmen und deren Ideen abhängig bin. Deswegen der reine Pascalweg, solange es irgendwie sinnvoll ist.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Warf
Beiträge: 2312
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Suche Komponente für GIT-Grafik

Beitrag von Warf »

Geht es nur um das Zeichnen der Graphen oder auch um das Layouting? Wenn du das Layout schon kennst ist das einfachste es einfach mit TCanvas selbst zu zeichnen.
Graphviz ist so das größte Open Source graph rendering tool und ist ziemlich am Puls der Forschung und hat sehr viele Informationen zu layouting Algorithmen auch auf ihrer Website verlinkt: https://graphviz.org/docs/layouts/
(Der GIT Graph ist quasi eine variante des Hierachical Layered Graph)

Das problem ist die meisten dieser Algorithmen sind NP-Hart, d.h. effiziente Algorithmen lassen sich quasi nur mit Heuristiken bauen und die werden nach wie vor sehr aktiv erforscht und das ist tatsächlich erstaunlich kompliziert (ich durfte das mal in JavaScript from scratch implementieren und das ist wirklich kein Spaß).

Die Wahrscheinlichkeit das es in Pascal eine fertige Lösung gibt ist quasi 0 und vom selbst bauen würde ich abraten. Graphviz gibts aber auch als C bibliothek, wenn du die Pascal Bindings schreibst kannst du das aber dann auch benutzen

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7347
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: Suche Komponente für GIT-Grafik

Beitrag von af0815 »

Warf hat geschrieben: Do 25. Jun 2026, 19:30 Geht es nur um das Zeichnen der Graphen oder auch um das Layouting?
Corpsmann hat es sehr gut getroffen. In seinem Beispiel steckt alles drinnen. Einer der großen Unterschiede liegt daran, das ich nicht mittels TProcess auf GIT selbst losgehen will, sondern mit LibGit2. Für mich halt eine ziemliche Lernkurve, aber vielleicht verstehe ich dann GIT noch besser, zumindest ist das das Ziel. Also Weg ist das Ziel.
Corpsmann.png
Corpsmann.png (108.35 KiB) 618 mal betrachtet
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten