如何处理gitpython克隆异常?

6

我想使用GitPython编写一个批量克隆脚本,但是我找不到处理git url不存在、下载中断等情况的有效示例。

我该如何实现这个功能呢?

以下是我的现有代码:

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

Gitpython有一系列自定义异常在这里 - Suever
但显然,那里的异常无法涵盖所有情况。 - tomriddle_1234
GitPython 似乎在许多操作中都运行 git 二进制文件,包括 clone。如果是这样,克隆失败将被表示为通用命令失败。(中断当然只是 KeyboardInterrupt。) - torek
1个回答

4

首先,

异常 git.exc.GitError

所有包异常的基类

那么,谁说你必须处理所有或任何异常?您只能合理地处理可以进行智能处理的异常。底层的 git 和 TCP 栈已经足够聪明以处理类似于不可靠连接之类的暂时性问题,因此,如果它失败了,您不能遵循规则,只需再次尝试并希望这次它工作。

为了批量作业的目的,仅将错误向上传递,以使您的脚本优雅地失败。例如,在.bat文件中,您需要编写像<command> || exit 1这样的内容,使脚本在出现错误时终止而不是盲目继续。


现在针对您的三个具体情况:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接