Usando o rebase interativo do git dentro de um script bash

1

Gostaria de criar um script bash para automatizar uma sequência de ações do Git que faço com muita frequência para aplicar minhas alterações não sincronizadas a um commit anterior, como em:

  • Alterações do Stash;
  • Insira rebase interativa;
  • Edite o commit em questão;
  • Aplique o estoque a ele;
  • Finalize o rebase.

O problema é que algumas dessas ações abrem o Vim e não sei como editar / gravar no arquivo usando um script bash. Eu não quero fazer isso manualmente.

Existe uma maneira de automatizar a edição no Vim usando o bash? Existe uma maneira melhor de fazer isso que cobre casos em que o Vim não é o editor padrão?

    
por vanamerongen 09.11.2018 / 10:46

1 resposta

2

Eu acho que o VIM sempre abre quando o git espera que você digite uma mensagem descritiva. Você pode contornar isso, fornecendo a mensagem para o comando git relevante através da opção "-m".

por exemplo. veja: git stash --help

...
git stash store [-m|--message <message>] [-q|--quiet] <commit>
...

informações adicionais após o esclarecimento nos comentários:

Existe um modo não interativo (o ex original) no VIM: "vim -e", a execução do comando "ex" do bash também deve funcionar. Mas você ainda precisaria canalizar os comandos do vim para ele. Abusar o env de $ EDITOR pouco antes da sua chamada de rebase do git deve fazê-lo, por ex. (o -s é para o modo silencioso):

export EDITOR="cat commands.vim | vim -es"

Mas quando você já está abusando do $ EDITOR env, você também pode simplesmente escrever outro script bash que faça as modificações do arquivo e use-o como editor:

export EDITOR="/path/to/your/script/"

De qualquer forma, não se esqueça de redefinir seu $ EDITOR depois disso.

    
por 09.11.2018 / 11:00