Github: Clonar todos repositórios
Pré-requisito ter o Github CLI instalado e configurado.
Como buscar os repositórios da Organização
Neste post, vou mostrar 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.
1
2$ gh search repos org-aqui --limit 1000
3
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
1
2$ gh search repos org-aqui --match name "seu-time" --limit 1000
3
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:
1
2$ while read -r repo _; do
3 gh repo clone "$repo" "$repo"
4done
5
Esse loop vai ler cada linha da lista de repositórios e executar o comando
gh repo clonecom 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. Por exemplo:
1
2$ gh search repos org-aqui --match name "seu-time" --limit 1000
3| while read -r repo _; do
4 gh repo clone "$repo" "$repo"
5done
6
Esse comando vai buscar os repositórios da organização
org-aquique tenhamseu-timeno nome e cloná-los em diretórios com o mesmo nome. Você pode adaptar esse comando para as suas necessidades, mudando os argumentos dogh search reposou dogh repo clone.
Repositório pessoal
Para buscar seu repositórios use:
1
2$ gh search repos --owner "seu-usuario-github" --limit 1000 --visibility public
3
Aqui o loop é o mesmo, o que muda é a forma de pesquisar.
1
2$ gh search repos --owner "seu-usuario-github" --limit 1000 --visibility public | while read -r repo _; do
3 gh repo clone "$repo" "$repo"
4done
5
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, me envie uma mensagem no meu Linkedin.