10 pontos por GN⁺ 2024-01-08 | 1 comentários | Compartilhar no WhatsApp

O GitUI oferece o conforto de uma GUI no terminal

  • Operação rápida e intuitiva apenas com o teclado
  • Sem necessidade de decorar atalhos, com ajuda contextual
  • Revisão de alterações, commit, emenda de commit (com hooks: pre-commit, commit-msg, post-commit, prepare-commit-msg)
  • Stage, unstage, reversão e reset de arquivos, hunks e linhas
  • Stashing (salvar, aplicar, excluir, inspecionar)
  • Push/fetch de remotos
  • Lista de branches (criar, renomear, excluir, checkout, remotos)
  • Navegação/busca no log de commits, verificação do diff de alterações commitadas
  • UI de terminal responsiva
  • API assíncrona do git para uma operação fluida
  • Suporte a submódulos

Motivação

  • Embora a maioria das tarefas de git seja feita no terminal, GUIs de git são usadas com frequência para alguns casos de uso, como índice, commit, diff, stash, blame e log.
  • GUIs de git populares em repositórios grandes muitas vezes deixam de responder ou se tornam inutilizáveis.
  • O GitUI oferece a experiência de uso e o conforto de uma GUI de git dentro do terminal, sendo ao mesmo tempo portátil, rápido, gratuito e de código aberto.

Benchmark

  • Em uma apresentação no meetup RustBerlin, lazygit, tig e gitui foram comparados analisando todo o repositório git do Linux (com mais de 900 mil commits):
    • gitui: 24 segundos ✅, 0.17GB de memória ✅, binário de 1.4MB, sem travamentos ✅, sem crashes
    • lazygit: 57 segundos, 2.6GB de memória, binário de 16MB, com travamentos, crashes ocasionais
    • tig: 4 minutos e 20 segundos, 1.3GB de memória, binário de 0.6MB ✅, travamentos ocasionais, sem crashes

Roadmap para a versão 1.0

  • Objetivos de alto nível antes de declarar a versão 1.0:
    • Visualização da estrutura de branches na aba de log (#81)
    • Rebase interativo (#32)

Limitações conhecidas

  • Sem suporte a repositórios esparsos (sparse repo) (#1226)
  • Sem suporte a assinatura GPG (#97)
  • Sem suporte a git-lfs (#1089)
  • O credential.helper necessário para https deve ser configurado explicitamente (#800)
  • Atualmente, esta ferramenta não substitui totalmente o git shell, mas os dois trabalham bem juntos.
  • A prioridade do gitui está em recursos menos confortáveis de usar no git shell, como stashing e stage de linhas ou hunks.
  • No fim, talvez seja possível transformar o gitui em uma solução completa, mas para isso é preciso ajuda — por enquanto, é um projeto de tempo livre.
  • Todo apoio e patrocínio são bem-vindos! ❤️

Instalação

  • O GitUI está em beta e pode ter bugs e recursos ausentes. Ainda assim, é bastante estável para uso pessoal e já é usado durante o próprio desenvolvimento.
  • É possível instalá-lo por meio de vários gerenciadores de pacotes.

Build

  • Versão mínima suportada de rust/cargo: 1.65
  • Requisitos para compilar a dependência openssl (consulte https://docs.rs/openssl/latest/openssl/)
  • Python é necessário para executar a suíte completa de testes (deve poder ser chamado como python)
  • A forma mais simples de compilar e instalar o gitui é com cargo install gitui.

Perguntas frequentes (FAQs)

  • Consulte a página de FAQs

Diagnóstico

  • Ao executar gitui -l com o logging ativado, os logs serão registrados.

Tema de cores

  • O gitui funciona automaticamente tanto em terminais com tema claro quanto escuro.
  • É possível personalizar tudo conforme sua preferência.

Key bindings

  • Os atalhos de teclado podem ser personalizados.

Patrocínio

Inspiração

  • Inspirado em lazygit, tig, GitUp e outros.
  • Seria interessante pensar em como disponibilizar uma visualização em mapa em ferramentas de terminal.

Opinião do GN⁺

  • O GitUI oferece a conveniência de uma GUI para quem prefere o terminal, ao mesmo tempo em que se destaca pela velocidade e pelo baixo uso de memória. Isso é especialmente importante ao lidar com repositórios grandes.
  • Como projeto de código aberto, continua evoluindo com o apoio e as contribuições da comunidade de desenvolvedores, incorporando feedback dos usuários para melhorar seus recursos.
  • O GitUI parece ser uma ferramenta que ajuda desenvolvedores a trabalhar com git de forma eficiente mesmo em ambiente de terminal, sendo especialmente útil para quem já está acostumado à operação por teclado.

1 comentários

 
GN⁺ 2024-01-08
Comentários do Hacker News
  • Controle rápido e intuitivo apenas com o teclado

    • O usuário provavelmente criou o programa com boas intenções, mas na primeira tentativa após a instalação não foi possível redimensionar a janela do xterm nem o painel da árvore de arquivos. Também não foi possível encontrar essa função pelo teclado, e, se fosse possível redimensionar com o mouse, seria muito mais fácil e rápido.
  • Projeto inspirado no lazygit

    • Como usuário do lazygit, fica a curiosidade sobre o que estaria faltando nele. O lazygit tem sido muito útil.
  • Falha de GUIs populares de git em grandes repositórios

    • Já houve experiência com o problema de a verificação do estado do git demorar muito em grandes repositórios ou em estruturas de diretórios profundas. Fica a dúvida se existe realmente diferença entre GUI, TUI e linha de comando.
  • Expectativa em relação ao novo projeto

    • Há o desejo de que o GitExtensions seja portado como um aplicativo nativo para Linux. Várias UIs já foram testadas, mas nada foi encontrado que seja tão bom quanto o GitExtensions.
  • Pergunta sobre UI de clicar e arrastar

    • Há curiosidade se existe alguma UI para git que permita trabalhar com branches por drag and drop.
  • Experiência de uso do plugin Neogit

    • Parece semelhante ao plugin Neogit, que começou a ser usado há cerca de um mês. No início, os atalhos de teclado eram difíceis, mas, depois de se acostumar, ele se torna muito mais rápido do que o workflow anterior.
  • Experiência pessoal com ferramentas

    • Várias ferramentas foram testadas, mas sempre faltava alguma função importante ou algo não funcionava do jeito desejado, então no fim a pessoa sempre volta ao tig. No GitUI, falta uma função que mostre bem a estrutura de branches.
  • Ferramenta usada no dia a dia

    • Como ferramenta usada diariamente, é muito simples e excelente. Vale notar que, para assinar commits, é preciso usar o próprio Git.
  • Link relacionado

    • Foi fornecido um link com uma coletânea de comentários do Hacker News sobre GitUI: Terminal UI for Git e Terminal-UI for Git written in Rust.
  • Pergunta sobre vantagens específicas de usar GUI

    • Um usuário que nunca usou GUI gostaria de entender quais vantagens específicas poderia obter ao passar a usá-la.