Um script bash que pode automatizar o conteúdo da mensagem de commit do git

0

Normalmente, quando eu faço uma alteração em um submódulo no Git (e se essa é a única alteração), fornecerei o resultado de git diff <submodule-name> ao corpo da mensagem de confirmação (com diff.submodule definido como log em minha configuração do git). Então a mensagem seria algo como:

Updated Core Submodule

Submodule Core eaedd3f..0721763:
  < Fixed ZA-123: Crash in rendering module
  < Merge 'develop' into 'master'

Eu tenho tentado escrever um script que irá automatizar isso, ao qual eu posso vincular a um alias na minha configuração do git. Para gerar o texto acima, idealmente gostaria de executar um comando como:

$ git submodule-commit Core

Isso executaria o seguinte (aproximadamente):

  1. Encene qualquer alteração no submódulo especificado ( Core neste caso)
  2. Diff a mudança no submódulo e armazene esse texto de saída para a mensagem gerada posteriormente
  3. Execute git commit e forneça a linha de assunto ( Updated $1 Submodule ou algo desse tipo, em que $1 é Core neste exemplo).
  4. Adicione o resultado do diff armazenado de antes à mensagem de confirmação, bem

Eu não tive a menor sorte de escrever um script simples para isso. Eu não sou muito experiente com scripts bash / shell. Alguém poderia ajudar a fornecer uma implementação que realize isso?

    
por void.pointer 28.06.2015 / 17:13

1 resposta

5

A parte chave da sintaxe que você está perdendo aqui é:

git commit -m "$(printf "Updated $submodule Submodule\n\n" ; git diff $submodule)"

O uso da forma $() de substituição de comandos entre aspas duplas envia a saída de git diff... para git commit como uma mensagem de confirmação com as novas linhas intactas.

Eu usei printf aqui em vez de echo para preceder a linha de assunto, pois para qualquer coisa, até mesmo um pouco complexa - como lidar com vazamentos embutidos - echo é basicamente não-portáteis , por razões históricas.

O restante do roteiro é deixado como um exercício para o aluno. :)

    
por 28.06.2015 / 20:18

Tags