2016-03-14 2 views
2

Я пытаюсь написать пакетный клон сценарий с GitPython, однако я не могу найти правильный пример hanlding, таких как мерзавец URL не exsits, скачать ПРЕРЫВАЙТЕ т.д.Как справиться с исключениями клонирования gitpython?

Как я мог это сделать?

мой exsiting код:

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 
+0

В Gitpython есть список пользовательских исключений [здесь] (http://gitpython.readthedocs.org/en/stable/reference.html#mod ule-git.exc) – Suever

+0

Но, очевидно, исключения там не могут охватывать все ситуации. –

+0

GitPython запускает двоичный файл git для многих операций, включая клон. Если это так, отказ клона будет представлен как общий отказ команды. (Прерывание - это просто 'KeyboardInterrupt', конечно.) – torek

ответ

0

For starters,

exception git.exc.GitError

Базовый класс для всех исключений пакета

тогда, кто сказал, что вы имеют обрабатывать все или любые исключения? Вы можете только разумно обращаться с теми, над которыми вы можете делать что-то умное. Основополагающие git и стек TCP уже достаточно умны, чтобы обрабатывать временные проблемы, такие как ненадежное соединение, поэтому, если это не удалось, вы не можете, как правило, просто повторить попытку и надеяться, что это произойдет на этот раз.

В целях пакетного задания просто распространяйте ошибку вверх по потоку, чтобы ваш скрипт изящно вышел из строя. Например. в файле .bat вам нужно написать что-то вроде <command> || exit 1, чтобы сценарий завершился с ошибкой, а не продолжил вслепую.


Теперь ваши 3 конкретных случаев:

Смежные вопросы