¿Cómo manejar las excepciones de clones de gitpython?

Intento escribir un script de clonación por lotes con GitPython, sin embargo, no encuentro un ejemplo válido de problemas como git url no exsits, download interupt, etc.

¿Cómo podría hacer esto?

mi código actual:

giturl = 'https://github.com/'+username+'/'+hwName+'.git' targeturl = os.path.join(hwfolder,username+'-'+hwName) try: repo = Repo.clone_from(giturl, targeturl, branch='master') except: #git url not reachable #download interupt #target local path problem 

Solutions Collecting From Web of "¿Cómo manejar las excepciones de clones de gitpython?"

Para empezar ,

exception git.exc.GitError

Clase base para todas las excepciones de package

Entonces, ¿quién dijo que tienes que manejar todo o alguna exception? Solo puede manejar razonablemente aquellos sobre los que puede hacer algo inteligente. El git subyacente y la stack TCP ya son lo suficientemente inteligentes como para manejar problemas transitorios como una connection no confiable, por lo que si falla, no puedes, por regla general, intentar nuevamente y esperar que funcione esta vez.

A los efectos de un trabajo por lotes, solo propague el error en sentido ascendente para que el script falle con elegancia. Por ejemplo, en un file .bat , debe escribir algo como <command> || exit 1 <command> || exit 1 para que la secuencia de commands finalice en caso de error en lugar de continuar a ciegas.


Ahora, de tus 3 casos específicos:

  • los elementos 1 y 2 probablemente harán que falle un git subyacente, todos esos casos producen GitCommandError
  • NoSuchPathError solo se NoSuchPathError en la initialization de NoSuchPathError si la ruta al repository local no existe