Automatiza o processo de atualização de múltiplos repositórios Git localizados em subdiretórios a partir do diretório onde o script é executado. O script aceita o nome de uma branch como argumento, faz checkout dessa branch em cada repositório encontrado e, em seguida, executa um git pull para atualizar os repositórios com as últimas mudanças do repositório remoto.

Jarod Cavalcante
2024-05-24T16:27:21Z

gitc.py

| import os
| import sys
| import subprocess
|
| def main():
| if len(sys.argv) != 2:
| print("Uso: python script.py <BRANCH_NAME>")
| sys.exit(1)
|
| branch_name = sys.argv[1]
| current_directory = os.getcwd()
|
| # Listar todas as pastas no diretório atual
| directories = [d for d in os.listdir(current_directory) if os.path.isdir(os.path.join(current_directory, d))]
|
| for directory in directories:
| repo_path = os.path.join(current_directory, directory)
| try:
| # Navegar até o diretório do repositório
| os.chdir(repo_path)
| print(f"Acessando diretório: {repo_path}")
|
| # Executar git checkout <VALOR_AQUI>
| subprocess.run(["git", "checkout", branch_name], check=True)
| print(f"Executado 'git checkout {branch_name}' em {repo_path}")
|
| # Executar git pull
| subprocess.run(["git", "pull"], check=True)
| print(f"Executado 'git pull' em {repo_path}")
|
| except subprocess.CalledProcessError as e:
| print(f"Erro ao executar comandos git no diretório {repo_path}: {e}")
| except Exception as e:
| print(f"Erro geral no diretório {repo_path}: {e}")
| finally:
| # Retornar ao diretório inicial
| os.chdir(current_directory)
|
| if __name__ == "__main__":
| main()
|