Как пропустить Windows Диспетчер учетных данных с помощью GitPython - PullRequest
0 голосов
/ 16 марта 2020

Я использую GitPython для выполнения git команд, требующих аутентификации, таких как git clone. Я использую Windows. Мой настроенный помощник по учетным данным - Windows 'Диспетчер учетных данных, и я не хочу его менять. Вот почему, когда программа запускается, я ввожу свои учетные данные через GUI, что нормально. Но во время тестов я хочу иметь возможность предоставлять их статически, я не хочу вводить их с помощью или GUI, или любым другим интерактивным способом. Также я не хочу изменять глобальную конфигурацию для credential.helper даже в течение ограниченного времени (например, во время выполнения), потому что это может иметь некоторые побочные эффекты. Есть ли способ, которым я могу справиться с этим?

1 Ответ

0 голосов
/ 18 марта 2020

Я использовал атрибут _persistent_git_options класса Git с патчами обезьян. Таким образом, git слово в командах сопровождается -c credential.helper= по умолчанию.

import git as gitpy
'''Keep the original __init__ implementation of gitpy.cmd.Git'''
old__init__ = gitpy.cmd.Git.__init__

'''
Method redefining ``__init__`` method of ``gitpy.cmd.Git``.

The new definition wraps original implementation and adds
"-c credential.helper=" to persistent git options so that
it will be included in every git command call.
'''
def new__init__(self, *args, **kwargs):
    old__init__(self, *args, **kwargs)
    self._persistent_git_options = ["-c", "credential.helper="]


'''Set __init__ implementation of gitpy.cmd.Git to that is implemented above'''
gitpy.cmd.Git.__init__ = new__init__
...