Este script em Bash é utilizado para sincronizar repositórios entre Bitbucket e GitHub, verificando a existência dos repositórios em ambas as plataformas, clonando do Bitbucket e espelhando para o GitHub. O script controla a execução simultânea de subprocessos e registra operações em arquivos de log para monitorar o progresso e o estado de cada repositório.
repos.txt: Arquivo de entrada com a lista de nomes dos repositórios no Bitbucket a serem processados.processamento.log: Arquivo de log para registrar o status e os resultados das operações de sincronização.repositorios_ignorados.log: Arquivo para registrar os repositórios que foram ignorados devido à presença de arquivos grandes (acima de 100MB).
- Verificação de Existência no Bitbucket: Valida se o repositório existe no Bitbucket antes de qualquer operação.
- Verificação de Existência no GitHub: Confirma se o repositório já existe no GitHub.
- Clonagem e Atualização: Clona o repositório do Bitbucket em modo espelho e atualiza se ele já existe localmente.
- Verificação de Arquivos Grandes: Ignora repositórios que contenham arquivos maiores que 100MB, registrando-os em um arquivo separado.
- Sincronização com GitHub: Cria o repositório no GitHub, se necessário, e empurra todas as alterações para ele.
- Controle de Subprocessos: Limita o número de operações simultâneas, evitando sobrecarga do sistema.
BITBUCKET_WORKSPACE: Define o workspace do Bitbucket.ORG_NAME: Nome da organização no GitHub.LOG_FILE: Arquivo onde logs serão armazenados.SKIP_FILE: Arquivo de registro dos repositórios ignorados.MAX_JOBS: Define o número máximo de subprocessos simultâneos.
- Configuração Inicial: Defina as variáveis
BITBUCKET_WORKSPACEeORG_NAMEcom os valores apropriados. - Criar Arquivos Necessários: Certifique-se de que
repos.txtcontenha uma lista dos repositórios que deseja sincronizar. - Execução do Script: Execute o script no terminal com o comando:
./script_migracao.sh
- Monitoramento: Acompanhe o arquivo
processamento.logpara verificar o progresso erepositorios_ignorados.logpara os repositórios ignorados.
repositório1
repositório2
repositório3
- É importante garantir que os comandos
gitegh(GitHub CLI) estejam instalados e configurados com as credenciais apropriadas. - O script exclui os repositórios clonados localmente após cada execução para economizar espaço em disco.