Github: Clonar todos repositórios de uma Organização
Pré-requisito ter o Github CLI instalado e configurado.
Como buscar os repositórios da Organização
Como usar o Github CLI para buscar os repositórios da sua organização no Github. O Github CLI é uma ferramenta de linha de comando que permite interagir com o Github de forma rápida e fácil. Você pode criar e gerenciar pull requests, issues, releases e muito mais.
O comando gh search repos permite buscar repositórios no GitHub usando vários critérios, como nome, descrição, linguagem, estrelas, etc. Você pode ver a lista completa de opções com gh help search repos.
Para buscar todos os repositórios de uma organização, você precisa substituir org-aqui pelo nome da organização que você quer clonar.
$ gh search repos org-aqui --limit 1000
Isso vai retornar uma lista de até 1000 repositórios da organização com o nome,descrição, visibilidade.
Se você quer buscar apenas os repositórios de um time específico dentro da organização, você pode usar o parâmetro --match name para filtrar os resultados pelo nome do time
$ gh search repos org-aqui --match name "seu-time" --limit 1000
Clonando repositórios
O segundo passo é clonar cada repositório da lista usando o comando gh repo clone. Você pode usar um loop para fazer isso de forma automática. Por exemplo:
$ while read -r repo _; do
gh repo clone "$repo" "$repo"
done
Esse loop vai ler cada linha da lista de repositórios e executar o comando gh repo clone com o nome do repositório. O segundo argumento do comando é o nome do diretório onde o repositório será clonado. Neste caso, estamos usando o mesmo nome do repositório, mas você pode alterar isso se quiser.
Agora, basta combinar a busca com o loop acima. Você pode usar um pipe (|) para enviar a saída de um comando para a entrada do outro, 'o pipe pode ser em outra linha'. Por exemplo:
$ gh search repos org-aqui --match name "seu-time" --limit 1000
| while read -r repo _; do
gh repo clone "$repo" "$repo"
done
Esse comando vai buscar os repositórios da organização org-aqui que tenham seu-time no nome e cloná-los em diretórios com o mesmo nome. Você pode adaptar esse comando para as suas necessidades, mudando os argumentos do gh search repos ou do gh repo clone.
Repositório pessoal
Para buscar seu repositórios use:
$ gh search repos --owner "seu-usuario-github" --limit 1000 --visibility public
Aqui o loop é o mesmo, o que muda é a forma de pesquisar.
$ gh search repos --owner "seu-usuario-github" --limit 1000 --visibility public | while read -r repo _; do
gh repo clone "$repo" "$repo"
done
Pronto! Agora você tem uma cópia local de todos os repositórios da organização e pessoais que você queria. Espero que este post tenha sido útil para você. Se tiver alguma dúvida ou sugestão deixo meu Linkedin.