Em minha máquina doméstica, uso o script gitpull.sh
para obter simultaneamente todas as alterações nos repositórios git em um determinado diretório.
#!/usr/bin/bash
find $1 -name ".git" | sed -r 's|/[^/]+$||' | parallel git -C {} pull origin master
Meu problema é que parallel
não está instalado no meu computador de trabalho. É possível alterar meu script sem o uso de parallel
?
Em vez de paralelo, você pode usar xargs com o sinalizador -P. Algo como:
Você pode usar esta ferramenta Git-Plus para puxar simultaneamente todas as alterações para os repositórios git em um determinado diretório. Use este comando
Você pode facilmente instalá-lo e usá-lo.
Você pode fazer isso usando apenas bash, readlink e find:
Você pode fazê-lo rodar um pouco mais rápido com o uso cuidadoso da
-maxdepth
opção de localização. por exemplo, se você souber que todos os.git
diretórios serão encontrados apenas nos subdiretórios de nível superior do diretório atual,-maxdepth 3
o impedirá de recorrer a quaisquer subdiretórios inferiores.Eu usei
"$@"
com ofind
comando em vez do sem aspas$1
que você usou para que não apenas um argumento de diretório seja opcional, você pode usar vários argumentos de diretório e/ou adicionar quaisquer opções de localização necessárias à linha de comando.Se a versão de
find
no seu computador de trabalho não fizer-print0
, você pode usar\n
como separador de entrada, mas o script será interrompido se algum nome de diretório contiver uma nova linha (o que é incomum, mas perfeitamente válido).