10 Punkte von GN⁺ 2024-01-08 | 1 Kommentare | Auf WhatsApp teilen

GitUI bietet den Komfort einer GUI im Terminal

  • Schnelle und intuitive Bedienung nur mit der Tastatur
  • Kontextabhängige Hilfe, ohne dass Hotkeys auswendig gelernt werden müssen
  • Änderungen prüfen, committen und Commit-Korrekturen durchführen (inklusive Hooks: pre-commit, commit-msg, post-commit, prepare-commit-msg)
  • Dateien, Hunks und Zeilen stagen, unstagen, verwerfen und zurücksetzen
  • Stashing (speichern, anwenden, löschen, prüfen)
  • Push/Fetch zu bzw. von Remote-Repositories
  • Branch-Liste (erstellen, umbenennen, löschen, auschecken, Remotes)
  • Commit-Log durchsuchen/suchen und Diffs der committeten Änderungen ansehen
  • Reaktionsfähige Terminal-UI
  • Asynchrone git-API für flüssige Bedienung
  • Unterstützung für Submodule

Motivation

  • Die meisten git-Aufgaben werden im Terminal erledigt, aber für einige Anwendungsfälle wie Index, Commits, Diffs, Stash, Blame und Logs wird häufig eine git-GUI verwendet.
  • Beliebte git-GUIs reagieren in großen Repositories oft nicht mehr oder werden unbenutzbar.
  • GitUI bietet die Nutzererfahrung und den Komfort einer git-GUI im Terminal und ist dabei portabel, schnell, kostenlos und Open Source.

Benchmarks

  • In einem Vortrag beim RustBerlin-Meetup wurden lazygit, tig und gitui verglichen, indem das komplette Linux-git-Repository (mit über 900.000 Commits) geparst wurde:
    • gitui: 24 Sekunden ✅, 0,17 GB Speicher ✅, 1,4 MB Binärdatei, keine Hänger ✅, keine Abstürze
    • lazygit: 57 Sekunden, 2,6 GB Speicher, 16 MB Binärdatei, Hänger vorhanden, gelegentliche Abstürze
    • tig: 4 Minuten 20 Sekunden, 1,3 GB Speicher, 0,6 MB Binärdatei ✅, gelegentliche Hänger, keine Abstürze

Roadmap zu 1.0

  • Hochrangige Ziele vor der Ausrufung von 1.0:
    • Visualisierung der Branch-Struktur im Log-Tab (#81)
    • Interaktives Rebase (#32)

Bekannte Einschränkungen

  • Keine Unterstützung für Sparse-Repositories (#1226)
  • Keine Unterstützung für GPG-Signaturen (#97)
  • Keine Unterstützung für git-lfs (#1089)
  • Der für https erforderliche credential.helper muss explizit gesetzt werden (#800)
  • Dieses Tool ersetzt derzeit die git shell noch nicht vollständig, aber beide Werkzeuge arbeiten gut zusammen.
  • Die Priorität von gitui liegt derzeit auf Funktionen, die in der git shell unbequem sind, etwa Stashing oder das Stagen von Zeilen bzw. Hunks.
  • Langfristig könnte gitui zu einer One-Stop-Lösung werden, dafür wird jedoch Hilfe benötigt – aktuell ist es ein Freizeitprojekt.
  • Jede Unterstützung und Förderung ist willkommen! ❤️

Installation

  • GitUI ist eine Beta-Version und kann Bugs sowie fehlende Funktionen enthalten. Für den persönlichen Einsatz ist es jedoch recht stabil und wird auch während der Entwicklung verwendet.
  • Die Installation ist über verschiedene Paketmanager möglich.

Build

  • Minimal unterstützte rust/cargo-Version: 1.65
  • Anforderungen für den Build der openssl-Abhängigkeit (siehe https://docs.rs/openssl/latest/openssl/)
  • Zum Ausführen der vollständigen Test-Suite wird Python benötigt (muss als python aufrufbar sein)
  • Am einfachsten lässt sich gitui mit cargo install gitui bauen und installieren.

Häufig gestellte Fragen (FAQs)

  • Siehe die FAQ-Seite

Diagnose

  • Wenn gitui -l mit aktiviertem Logging ausgeführt wird, werden Logs geschrieben.

Farbthemen

  • gitui funktioniert automatisch sowohl in Terminals mit hellem als auch mit dunklem Theme.
  • Alles kann nach den eigenen Vorlieben angepasst werden.

Tastenbelegung

  • Die Tastenbelegung kann angepasst werden.

Unterstützung

Inspiration

  • Inspiriert von lazygit, tig, GitUp und anderen.
  • Es wäre gut, einen Weg zu finden, eine Map-Ansicht in Terminal-Tools nutzbar zu machen.

Meinung von GN⁺

  • GitUI bietet Nutzern, die das Terminal bevorzugen, den Komfort einer GUI und überzeugt zugleich mit hoher Geschwindigkeit und geringem Speicherverbrauch. Das ist besonders wichtig beim Arbeiten mit großen Repositories.
  • Als Open-Source-Projekt entwickelt es sich dank Unterstützung und Beiträgen der Entwickler-Community kontinuierlich weiter und verbessert seine Funktionen anhand von Nutzerfeedback.
  • GitUI scheint ein Werkzeug zu sein, das Entwickler dabei unterstützt, git-Aufgaben auch in der Terminal-Umgebung effizient auszuführen, und dürfte besonders für Nutzer sehr nützlich sein, die an die Tastaturbedienung gewöhnt sind.

1 Kommentare

 
GN⁺ 2024-01-08
Hacker-News-Kommentare
  • Schnelle und intuitive Steuerung nur mit der Tastatur

    • Der Nutzer hat das Programm vermutlich in guter Absicht erstellt, aber beim ersten Versuch nach der Installation war es nicht möglich, die Größe des xterm-Fensters oder des Dateibaum-Fensters zu ändern. Auch per Tastatur ließ sich diese Funktion nicht finden, und wenn eine Größenanpassung mit der Maus möglich wäre, wäre das viel einfacher und schneller.
  • Ein von lazygit inspiriertes Projekt

    • Als lazygit-Nutzer fragt man sich, was bei lazygit fehlt. lazygit wird als sehr nützlich empfunden.
  • Das Scheitern populärer git-GUIs in großen Repositories

    • Das Problem, dass die Prüfung des git-Status in großen Repositories oder bei tiefen Verzeichnisstrukturen lange dauert, ist bekannt. Es wird bezweifelt, ob es in der Praxis tatsächlich Unterschiede zwischen GUI, TUI und Kommandozeile gibt.
  • Erwartungen an ein neues Projekt

    • Es besteht der Wunsch, dass GitExtensions auf eine Linux-native Anwendung portiert wird. Es wurden verschiedene UIs ausprobiert, aber nichts gefunden, das so gut ist wie GitExtensions.
  • Frage zu einer Click-and-Drag-UI

    • Es wird gefragt, ob es für git eine UI gibt, in der sich Branch-Arbeit per Drag-and-Drop erledigen lässt.
  • Erfahrungen mit dem Neogit-Plugin

    • Es wirkt ähnlich wie das Neogit-Plugin, das seit etwa einem Monat verwendet wird. Anfangs waren die Keybindings schwierig, aber sobald man sich daran gewöhnt hat, ist es deutlich schneller als der bisherige Workflow.
  • Persönliche Erfahrungen mit Tools

    • Es wurden viele verschiedene Tools ausprobiert, aber am Ende kehrt man immer wieder zu tig zurück, weil stets irgendeine wichtige Funktion fehlt oder etwas nicht wie gewünscht funktioniert. In GitUI fehlt eine gute Darstellung der Branch-Struktur.
  • Ein Tool für den täglichen Einsatz

    • Als täglich genutztes Tool ist es sehr einfach und hervorragend. Man sollte beachten, dass man zum Signieren von Commits Git selbst verwenden muss.
  • Relevanter Link

    • Es wird ein Link zu einer Sammlung von Hacker-News-Kommentaren zu GitUI bereitgestellt: Terminal UI for Git, Terminal-UI for Git written in Rust.
  • Frage nach konkreten Vorteilen der GUI-Nutzung

    • Ein Nutzer, der noch nie eine GUI verwendet hat, möchte lernen, welche konkreten Vorteile die Nutzung einer GUI bringt.