Pular para o conteúdo

Git

O plugin Git lê o que o repositório sabe sobre a raiz. Ele escreve a tag que eidos version record --tag pede, o git mv ou git rm atrás de um renomeio ou exclusão, o commit, o pull e a publicação que uma pessoa faz no Source control e, só onde você os liga nas suas configurações privadas, um auto fetch, um auto save e a sua publicação. Ligado por padrão onde a raiz está dentro de um repositório, desligado fora de um.

  • File history, uma visão na barra lateral auxiliar: os commits que tocaram o Blueprint (o plano) aberto, do mais recente ao mais antigo, seguindo renomeios, cada um com um botão Diff que abre as duas versões no visualizador desta máquina.
  • Source control, uma atividade na barra de atividades com a contagem de mudanças no ícone: o que mudou sob a raiz (git status só sobre a raiz), cada caminho com a sua marca e uma caixa marcada por padrão, uma mensagem e Commit, que prepara e commita os caminhos marcados e nada mais (git add -A -- <paths>, depois git commit -m <message> -- <paths>). Uma renomeação commita também o caminho de onde veio, e uma exclusão já preparada (a página exclui com git rm) entra como está. As recusas do git são mostradas como o git as disse. Os últimos 50 commits do repositório ficam abaixo, e um olho em uma linha abre a página do arquivo.
  • Summarize, ao lado de Commit quando o Plato está ligado, pede ao Plato uma mensagem de uma linha para as mudanças marcadas e a põe na caixa para editar ou commitar como está. O que se pede ao Plato é a raiz que redige, em Commit messages na página do Plato.
  • Fetch, sob o cabeçalho do Source control quando o branch tem um remoto, lê o que o remoto tem sem mudar nada sob a raiz, e a linha ao lado diz quantos commits há para puxar do upstream (“2 commits to pull from origin/main”). Pull, presente enquanto houver commits para puxar, faz fetch e depois leva o branch até o seu upstream só quando é um fast-forward: nunca cria um commit de merge nem faz rebase, e quando o seu branch e o upstream avançaram cada um por seu lado, diz o que o git disse e deixa o resto para a sua própria ferramenta.
  • Publish, no cabeçalho do Source control quando o branch tem um remoto, faz fetch e depois push do branch para ele (para o seu upstream, ou para origin definindo o upstream na primeira vez), mostrando quantos commits o remoto ainda não viu. Enquanto o upstream tiver commits que o seu branch não tem, Publish fica desativado e a linha sob o cabeçalho diz para puxá-los primeiro.
  • Auto save, uma configuração privada na página do plugin, commita toda mudança sob a raiz a cada 5, 15, 30 ou 60 minutos, com o resumo do Plato como mensagem quando o Plato responde e uma lista simples dos arquivos quando não responde; com publish ligado, é feito push de cada um assim que é criado, depois de um fetch, e fica sem push enquanto houver commits para puxar, dizendo quantos. O último aparece no topo do Source control. Um commit ou um push que espera por uma chave de assinatura ou por um remoto é interrompido depois de um tempo e diz isso, e a página nunca espera por ele.
  • Auto fetch, uma configuração privada na página do plugin, faz fetch a cada 5, 15, 30 ou 60 minutos, a primeira vez pouco depois de o servidor iniciar, para que a contagem de commits para puxar fique em dia. Desligado por padrão. Um fetch nunca para para pedir uma senha, e no macOS e no Linux também não a frase secreta de uma chave: um remoto que precisa de uma que o seu gerenciador de credenciais ou o seu agente ssh não dá falha com as palavras do git.
  • Um comentário quando ninguém está agindo como um usuário listado é assinado pela identidade do git, casada com um usuário listado onde um tem aquele email. Comments →
  • Um renomeio ou exclusão de um arquivo rastreado, da página ou do shell, é git mv ou git rm, então o histórico segue. Um caminho não rastreado, uma raiz fora de um repositório ou um git que recusa devolve a operação e um renomeio ou exclusão comum segue.

Um documento de nível superior, o documento do Framework (a estrutura) e um canvas não têm visão de histórico. Não há blame, nem troca de branch, nem merge ou rebase: um pull só avança em fast-forward.

  • .eidos/plugins/git/local.yaml: as configurações de uma pessoa, definidas na página do plugin sob privado e nunca commitadas: diff_viewer, um comando com {a} e {b} para os dois arquivos (code --diff {a} {b}); auto_save, off ou 5, 15, 30, 60 minutos; publish, se é feito push de cada auto save; auto_fetch, off ou 5, 15, 30, 60 minutos. Um auto save nunca começa em um clone porque outra pessoa ligou o seu.

O plugin não tem configuração partilhada além do seu interruptor e não guarda nenhum outro arquivo.

Não há eidos git: o repositório é lido com o próprio git. O que o plugin fornece à CLI são as versões registradas.

Janela do terminal
eidos version record 1.0.0 # a row naming HEAD
eidos version record 1.0.0 --commit a1b2c3d --tag # names that commit and tags it blueprints/1.0.0
git log --follow -- Blueprints/specs/login.md # the commits that touched a blueprint
git show a1b2c3d:Blueprints/specs/login.md # the blueprint as it was

Com o plugin desligado, registrar diz isso e eidos version lista o que está registrado. eidos version →

Nada próprio. Desligado, fora de um repositório ou sem um binário git, o plugin responde vazio, não inicia nada e a sua página diz qual dos três casos é.