git clone с использованием библиотеки GitPython

Как клонировать с отключенной проверкой SSL, используя библиотеку GitPython. Следующий код...

import git
x = git.Repo.clone_from('https://xxx', '/home/xxx/lala')

... выдает эту ошибку:

Error: fatal: unable to access 'xxx': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

Я знаю об «экспорте GIT_SSL_NO_VERIFY=1», но как реализовать его в библиотеке Python?


person themis    schedule 23.07.2015    source источник


Ответы (2)


Два следующих метода были протестированы с GitPython 2.0.8, но должны работать как минимум с версии 1.0.2 (из документа).

Как предложил @Byron:

git.Repo.clone_from(
  'https://example.net/path/to/repo.git',
  'local_destination',
  branch='master', depth=1,
  env={'GIT_SSL_NO_VERIFY': '1'},
)

Как предложил @Christopher:

git.Repo.clone_from(
  'https://example.net/path/to/repo.git',
  'local_destination',
  branch='master', depth=1,
  config='http.sslVerify=false',
)
person bufh    schedule 07.09.2016

Кажется, проще всего передать переменную окружения GIT_SSL_NO_VERIFY для всех вызовов git. К сожалению, Git.update_environment(...) может быть только используется в существующем экземпляре, поэтому вам придется манипулировать средой Python следующим образом:

import git
import os

os.environ['GIT_SSL_NO_VERIFY'] = "1"
repo = git.Repo.clone_from('https://xxx', '/home/xxx/lala')
person Byron    schedule 23.07.2015