10 points par GN⁺ 2024-01-08 | 1 commentaires | Partager sur WhatsApp

GitUI apporte le confort d’une GUI dans le terminal

  • Utilisation rapide et intuitive au clavier uniquement
  • Aucune nécessité de mémoriser des raccourcis grâce à une aide contextuelle
  • Revue des modifications, commit, amend de commit (avec hooks : pre-commit, commit-msg, post-commit, prepare-commit-msg)
  • Staging, unstaging, annulation et réinitialisation des fichiers, hunks et lignes
  • Stash (enregistrer, appliquer, supprimer, inspecter)
  • Push/fetch depuis et vers les dépôts distants
  • Liste des branches (création, renommage, suppression, checkout, distantes)
  • Parcours/recherche dans l’historique des commits, consultation des diff des modifications validées
  • UI terminal responsive
  • API git asynchrone pour une utilisation fluide
  • Prise en charge des submodules

Motivation

  • La plupart des opérations git sont effectuées dans le terminal, mais pour certains usages comme l’index, les commits, les diff, le stash, le blame ou les logs, une GUI git est souvent utilisée.
  • Dans les grands dépôts, les GUI git populaires deviennent souvent non réactives ou inutilisables.
  • GitUI offre l’expérience utilisateur et le confort d’une GUI git dans le terminal, tout en étant portable, rapide, gratuit et open source.

Benchmark

  • Lors d’une présentation au meetup RustBerlin, lazygit, tig et gitui ont été comparés en analysant l’ensemble du dépôt git du noyau Linux (avec plus de 900 000 commits) :
    • gitui : 24 secondes ✅, 0.17GB de mémoire ✅, binaire de 1.4MB, aucun gel ✅, aucun crash
    • lazygit : 57 secondes, 2.6GB de mémoire, binaire de 16MB, gels présents, crashs occasionnels
    • tig : 4 minutes 20 secondes, 1.3GB de mémoire, binaire de 0.6MB ✅, gels occasionnels, aucun crash

Feuille de route vers la 1.0

  • Objectifs de haut niveau avant de déclarer la 1.0 :
    • Visualisation de la structure des branches dans l’onglet log (#81)
    • Rebase interactif (#32)

Limitations connues

  • Pas de prise en charge des sparse repos (#1226)
  • Pas de prise en charge de la signature GPG (#97)
  • Pas de prise en charge de git-lfs (#1089)
  • Le credential.helper requis pour https doit être configuré explicitement (#800)
  • À ce stade, cet outil ne remplace pas complètement le git shell, mais les deux fonctionnent bien ensemble.
  • La priorité de gitui porte sur les fonctionnalités peu pratiques dans le git shell, comme le stash ou le staging ligne par ligne ou par hunk.
  • À terme, gitui pourrait devenir une solution tout-en-un, mais cela demandera de l’aide — c’est actuellement un projet mené sur le temps libre.
  • Tous les soutiens et parrainages sont les bienvenus ! ❤️

Installation

  • GitUI est en bêta et peut contenir des bugs ainsi que des fonctionnalités manquantes. Il reste toutefois assez stable pour un usage personnel et est déjà utilisé pendant son développement.
  • L’installation est possible via différents gestionnaires de paquets.

Build

  • Version minimale prise en charge pour rust/cargo : 1.65
  • Pré-requis pour compiler la dépendance openssl (voir https://docs.rs/openssl/latest/openssl/)
  • Python est nécessaire pour exécuter la suite complète de tests (doit pouvoir être invoqué via python)
  • Le moyen le plus simple de compiler et installer gitui est via cargo install gitui.

Questions fréquentes (FAQ)

  • Voir la page des FAQ

Diagnostic

  • En lançant gitui -l avec le logging activé, des logs sont enregistrés.

Thème de couleurs

  • gitui fonctionne automatiquement aussi bien dans les terminaux à thème clair que sombre.
  • Tout peut être personnalisé selon vos préférences.

Raccourcis clavier

  • Les raccourcis clavier peuvent être personnalisés.

Soutien

Inspiration

  • Inspiré de lazygit, tig, GitUp, etc.
  • Il serait intéressant d’imaginer un moyen d’utiliser une vue en carte dans un outil terminal.

Avis de GN⁺

  • GitUI offre aux utilisateurs qui préfèrent le terminal la commodité d’une GUI, tout en se distinguant par sa rapidité et sa faible consommation mémoire. C’est particulièrement important pour le travail sur de grands dépôts.
  • En tant que projet open source, il continue d’évoluer grâce au soutien et aux contributions de la communauté des développeurs, tout en améliorant ses fonctionnalités à partir des retours des utilisateurs.
  • GitUI semble être un outil qui aide les développeurs à effectuer efficacement leurs tâches git dans un environnement terminal, et il sera particulièrement utile à ceux qui sont à l’aise avec l’utilisation du clavier.

1 commentaires

 
GN⁺ 2024-01-08
Commentaires Hacker News
  • Contrôle rapide et intuitif uniquement au clavier

    • L’auteur a sans doute créé ce programme avec de bonnes intentions, mais lors du premier essai après l’installation, il était impossible de redimensionner la fenêtre xterm ou le panneau de l’arborescence des fichiers. Il a aussi été impossible de trouver cette fonctionnalité au clavier, et si le redimensionnement à la souris était possible, ce serait bien plus simple et rapide.
  • Un projet inspiré par lazygit

    • En tant qu’utilisateur de lazygit, je me demande ce qui manque à lazygit. lazygit est utilisé de manière très utile.
  • L’échec des interfaces git populaires sur les grands dépôts

    • J’ai déjà rencontré le problème des vérifications d’état git qui prennent du temps sur de grands dépôts ou avec des structures de répertoires profondes. Je me demande s’il existe réellement une différence entre GUI, TUI et ligne de commande.
  • Des attentes pour un nouveau projet

    • J’aimerais que GitExtensions soit porté comme application native Linux. J’ai essayé diverses interfaces utilisateur, mais je n’ai rien trouvé d’aussi bon que GitExtensions.
  • Une question sur les interfaces en cliquer-glisser

    • Je me demande s’il existe une interface pour git permettant de gérer les branches par glisser-déposer.
  • Retour d’expérience avec le plugin Neogit

    • Cela ressemble au plugin Neogit que j’ai commencé à utiliser il y a environ un mois. Au début, les raccourcis clavier étaient difficiles, mais une fois habitué, c’est bien plus rapide que mon workflow précédent.
  • Expérience personnelle avec les outils

    • J’ai essayé divers outils, mais il leur manque toujours une fonctionnalité importante ou ils ne fonctionnent pas comme je le souhaite, si bien que je finis par revenir à tig. Dans GitUI, il manque une fonctionnalité qui montre bien la structure des branches.
  • Un outil utilisé au quotidien

    • En tant qu’outil utilisé tous les jours, c’est très simple et excellent. À noter qu’il faut utiliser Git lui-même pour signer les commits.
  • Liens associés

    • Lien fourni vers une compilation de commentaires Hacker News sur GitUI: Terminal UI for Git, Terminal-UI for Git written in Rust.
  • Une question sur les avantages spécifiques de l’usage d’une GUI

    • Un utilisateur qui n’a jamais utilisé de GUI aimerait comprendre quels avantages précis il pourrait en retirer.