for rep in */; do
printf '%s:\t' "$rep"
( cd "$rep" && git status --short --branch --untracked-files=no )
done
ou, usando opções curtas,
for rep in */; do
printf '%s:\t' "$rep"
( cd "$rep" && git status -sbuno )
done
Isso muda para cada diretório no diretório atual e executa o comando git status
fornecido. A saída pode parecer algo como
gnomad_browser/: ## master...origin/master
swefreq-browser/: ## gnomad-remerge...origin/gnomad-remerge
swefreq-config/: ## develop...origin/develop
swefreq/: ## feature/schema-update...origin/feature/schema-update
M sql/swefreq.sql
(Eu tenho um arquivo não confirmado no repositório swefreq
)
As opções escolhidas para git status
mostrarão apenas a ramificação atual e todos os arquivos modificados, mas você poderá modificá-la facilmente para mostrar arquivos não rastreados como wull removendo -uno
ou --untracked-files=no
.
Veja git status --help
.
Sua ideia de usar o prompt para mostrar informações sobre cada diretório pode funcionar dependendo de como o prompt está configurado. Meu prompt é uma string com aspas simples que deve ser avaliada:
for rep in */; do
( cd "$rep" && eval echo "$PS1" )
done
Eu não acho que essa é uma solução muito boa, e também não é muito flexível no que ela pode fazer e falar sobre cada repositório.