10 puntos por GN⁺ 2024-01-08 | 1 comentarios | Compartir por WhatsApp

GitUI ofrece la comodidad de una GUI en la terminal

  • Operación rápida e intuitiva usando solo el teclado
  • Ayuda contextual sin necesidad de memorizar atajos
  • Revisión de cambios, commits y amend de commits (incluyendo hooks: pre-commit, commit-msg, post-commit, prepare-commit-msg)
  • Staging, unstaging, revert y reset de archivos, hunks y líneas
  • Stash (guardar, aplicar, eliminar, inspeccionar)
  • Push/fetch desde remotos
  • Lista de ramas (crear, renombrar, eliminar, checkout, remotas)
  • Navegación/búsqueda del log de commits, ver diff de cambios committeados
  • UI de terminal responsiva
  • API asíncrona de git para una operación fluida
  • Soporte para submódulos

Motivación

  • Aunque la mayoría del trabajo con git se hace en la terminal, con frecuencia se usan GUIs de git para algunos casos como índice, commits, diff, stash, blame y log.
  • En repositorios grandes, las GUIs de git populares a menudo dejan de responder o se vuelven inutilizables.
  • GitUI ofrece la experiencia de usuario y la comodidad de una GUI de git dentro de la terminal, manteniéndose portátil, rápido, gratuito y de código abierto.

Benchmarks

  • En una presentación del meetup de RustBerlin se compararon lazygit, tig y gitui, parseando por completo el repositorio de git de Linux (con más de 900 mil commits):
    • gitui: 24 segundos ✅, 0.17GB de memoria ✅, binario de 1.4MB, sin congelamientos ✅, sin fallos
    • lazygit: 57 segundos, 2.6GB de memoria, binario de 16MB, con congelamientos, fallos ocasionales
    • tig: 4 minutos 20 segundos, 1.3GB de memoria, binario de 0.6MB ✅, congelamientos ocasionales, sin fallos

Hoja de ruta hacia la 1.0

  • Objetivos de alto nivel antes de declarar 1.0:
    • Visualización de la estructura de ramas en la pestaña de log (#81)
    • Rebase interactivo (#32)

Limitaciones conocidas

  • Sin soporte para repositorios dispersos (sparse repo) (#1226)
  • Sin soporte para firma GPG (#97)
  • Sin soporte para git-lfs (#1089)
  • En https, un credential.helper requerido debe configurarse explícitamente (#800)
  • Actualmente esta herramienta no reemplaza por completo al git shell, pero ambas funcionan bien en conjunto.
  • La prioridad de gitui está en funciones incómodas de realizar en el git shell, como stash o staging de líneas y hunks.
  • Eventualmente gitui podría convertirse en una solución integral, pero para eso necesita ayuda; por ahora es un proyecto de tiempo libre.
  • ¡Todo apoyo y patrocinio es bienvenido! ❤️

Instalación

  • GitUI está en beta y puede tener bugs y funciones faltantes. Aun así, es bastante estable para uso personal y se usa activamente durante su desarrollo.
  • Se puede instalar a través de varios gestores de paquetes.

Build

  • Versión mínima soportada de rust/cargo: 1.65
  • Requisitos para compilar la dependencia openssl (ver https://docs.rs/openssl/latest/openssl/)
  • Se necesita Python para ejecutar la suite completa de pruebas (debe poder invocarse como python)
  • La forma más sencilla de compilar e instalar gitui es con cargo install gitui.

Preguntas frecuentes (FAQs)

  • Consulta la página de FAQs

Diagnóstico

  • Si se ejecuta gitui -l con el logging activado, se registrarán logs.

Temas de color

  • gitui funciona automáticamente tanto en terminales con tema claro como oscuro.
  • Todo puede personalizarse según tus preferencias.

Asignación de teclas

  • La asignación de teclas puede personalizarse.

Patrocinio

Inspiración

  • Inspirado en lazygit, tig, GitUp y otros.
  • Sería bueno idear una forma de usar vistas de mapa en herramientas de terminal.

Opinión de GN⁺

  • GitUI ofrece a quienes prefieren la terminal la comodidad de una GUI, además de gran velocidad y bajo consumo de memoria, algo especialmente importante al trabajar con repositorios grandes.
  • Como proyecto de código abierto, sigue evolucionando gracias al apoyo y las contribuciones de la comunidad de desarrolladores, incorporando el feedback de los usuarios para mejorar sus funciones.
  • GitUI parece una herramienta que ayuda a los desarrolladores a trabajar con git de forma eficiente incluso en entornos de terminal, y será especialmente útil para quienes están acostumbrados a operar con el teclado.

1 comentarios

 
GN⁺ 2024-01-08
Comentarios en Hacker News
  • Control rápido e intuitivo solo con el teclado

    • Seguramente el usuario creó el programa con buenas intenciones, pero en el primer intento tras instalarlo no fue posible redimensionar la ventana de xterm ni el panel del árbol de archivos. Tampoco pudo encontrar esa función con el teclado, y si se pudiera redimensionar con el mouse sería mucho más fácil y rápido.
  • Proyecto inspirado en lazygit

    • Como usuario de lazygit, tiene curiosidad por saber qué es lo que le falta a lazygit. Lo ha estado usando de forma muy útil.
  • El fracaso de GUIs populares de git en repositorios grandes

    • Ha experimentado el problema de que revisar el estado de git tarda mucho en repositorios grandes o con estructuras de directorios profundas. Se pregunta si realmente hay una diferencia entre GUI, TUI y línea de comandos.
  • Expectativa por un nuevo proyecto

    • Espera que GitExtensions sea porteado como aplicación nativa para Linux. Ha probado varias interfaces, pero no ha encontrado nada tan bueno como GitExtensions.
  • Pregunta sobre una UI de clic y arrastre

    • Tiene curiosidad por saber si existe una interfaz para git que permita trabajar con ramas mediante arrastrar y soltar.
  • Experiencia usando el plugin Neogit

    • Empezó a usar el plugin Neogit hace aproximadamente un mes y le parece similar. Al principio los atajos de teclado fueron difíciles, pero una vez que se acostumbra, es mucho más rápido que su flujo de trabajo anterior.
  • Experiencia personal con herramientas

    • Ha probado varias herramientas, pero siempre les falta alguna función importante o no funcionan como quiere, así que al final vuelve a tig. En GitUI siente que falta una función que muestre bien la estructura de ramas.
  • Herramienta de uso diario

    • Como herramienta que usa todos los días, es muy simple y excelente. Eso sí, hay que tener en cuenta que para firmar commits se debe usar Git directamente.
  • Enlace relacionado

    • Se proporciona un enlace a una recopilación de comentarios de Hacker News relacionados con GitUI: Terminal UI for Git, Terminal-UI for Git written in Rust.
  • Pregunta sobre ventajas específicas de usar una GUI

    • Un usuario que nunca ha usado una GUI quiere aprender qué ventajas específicas puede obtener al usar una.