-
Notifications
You must be signed in to change notification settings - Fork 9
/
clonarRepositorio.py
73 lines (59 loc) · 2.51 KB
/
clonarRepositorio.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# -*- coding: utf-8 -*-
# Clono un repositorio online a mi disco duro local.
# Genero una carpeta en la que almacenaré, en diferentes subcarpetas, todas las ramas que vaya a necesitar clonar
# Posteriormente comprimo toda la clonación en un archivo .zip con la fecha actual del sistema.
# Si ya existiese dicho archivo lo sobrescribiré.
# Posteriormente borro las carpetas creadas para dejar solo el .zip
import git # Requiere librería GitPython
import time
import zipfile
import os
import shutil
import sys
# Info del repositorio
usuario = "user"
password = "pass"
# En los repositorios privados es necesario usuario y contraseña
# después del protocolo https.
# En repos publicos no es necesario
# repositorioPublico = "https://@bitbucket.org/repoPrivado/repoPrivado.git"
repositorioPrivado = "https://" + usuario + ":" + password + "@bitbucket.org/repoPrivado/repoPrivado.git"
carpetaDescarga = "repositorio" # Carpeta principal donde se guardaran las ramas
ramas = ["master", "release", "dev"] # Ramas que queremos clonar
# Detectar Sistema Operativo
if sys.platform == "win32":
cmd = "rmdir " + carpetaDescarga + "/s /q"
else:
cmd = "rm -rf " + carpetaDescarga
# Creo la estructura de carpetas
if os.path.exists(carpetaDescarga):
os.system(cmd)
os.makedirs(carpetaDescarga)
for i in ramas:
if not os.path.exists(carpetaDescarga + "/" + i):
os.makedirs(carpetaDescarga + "/" + i)
# Clonar repositorios
print("##################################")
print(" CLONACIÓN DE REPOSITORIO")
print("##################################")
print("\n")
for i in ramas:
print("Clonando rama " + i)
nuevoDirectorio = carpetaDescarga + "/" + i
repo = git.Repo.clone_from(repositorio, nuevoDirectorio, branch = i)
print("Rama " + i + " clonada")
# Generación del archivo .zip
nombreArchivoZip = time.strftime("%Y_%m_%d")
if os.path.exists(nombreArchivoZip + ".zip"):
os.remove(nombreArchivoZip + ".zip")
archivoZip = zipfile.ZipFile(nombreArchivoZip + ".zip", "w")
for carpeta, subcarpetas, archivos in os.walk(carpetaDescarga):
for archivo in archivos:
archivoZip.write(os.path.join(carpeta, archivo), os.path.relpath(os.path.join(carpeta, archivo), carpetaDescarga), compress_type = zipfile.ZIP_DEFLATED)
archivoZip.close()
# Elimino carpeta clonación repositorio
shutil.rmtree(carpetaDescarga, True)
os.system(cmd) # Fuerzo a la eliminación del directorio porque shutil no me borra la carpeta raíz
# Mensaje de final de ejecución
print("\nClonación finalizada. Hasta mañana!")
time.sleep(3)