Estou escrevendo um script de shell que precisa executar determinadas operações com base na mensagem do último commit de minhas ramificações locais com um nome começando com "task".
Veja como meu script se parece
#!/bin/bash
git branch | while read branch_name;
do
if [[ $branch_name == task* ]];
then
git log --format=%s -n 1 ${branch_name}
fi
done
Quando executo esse script, recebo a seguinte saída:
fatal: ambiguous argument 'task/foo': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this: 'git [...] -- [...]'
O que é estranho porque eu tenho uma ramificação chamada task/foo
(e também porque o nome é lido diretamente da saída de git branch
).
Eu tentei adicionar --
no final do git log
, como sugerido, mas recebo o seguinte erro:
fatal: bad revision 'task/foo'
Quando eu faço exatamente o mesmo comando dentro de um shell, tudo funciona bem:
$ git log --format=%s -n 1 task/foo
Initial commit (Readme, license)
Editar
Como sugerido, tentei colocar minha variável entre aspas duplas, como abaixo, mas ainda tenho o mesmo resultado.
#!/bin/bash
git branch | while read branch_name;
do
if [[ $branch_name == task* ]];
then
git log --format=%s -n 1 "${branch_name}"
fi
done
Eu também tentei o script sugerido por Klaatu, mas isso também me deu o mesmo erro.
Editar 2
Aqui está a saída quando adiciono set -x
ao meu script:
+ git branch
+ read branch_name
+ [[ * develop == task* ]]
+ read branch_name
+ [[ master == task* ]]
+ read branch_name
+ [[ task/foo == task* ]]
+ git log --format=%s -n 1 'task/foo'
fatal: ambiguous argument 'task/foo': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
+ read branch_name
Use '-' para separar os caminhos das revisões, assim: 'git [...] - [...]' + leia o branch_name
Tags git shell shell-script