Git-модуль Python Ошибка неверного репозитория Git

1

У меня есть script, который помещается в структуру папок как таковую:

~/wofc/folder1/folder2/script.py

script.py использует модуль git для выполнения некоторых задач. Однако, когда я запускаю script извне folder2, то есть когда у меня есть cd в folder1, я запускаю python folder2/script.py arg1 arg2, я получаю ошибку raise InvalidGitRepositoryError(epath). script отлично работает, когда я запускаю его изнутри folder2 i.e. cd в folder2 и запускаю python script.py arg1 arg2. Ниже приведен соответствующий фрагмент кода. Не могли бы вы сообщить мне, в чем проблема?

    git = Repo('{}/..'.format(os.getcwd())).git
    git.checkout('master')
    git.pull()
Теги:

4 ответа

1

Вместо Repo('{}/..'.format(os.getcwd())).git используйте os.path.abspath:

git = Repo(os.path.abspath('{}/..'.format(os.getcwd())).git
git.checkout('master')
git.pull()
  • 0
    дает ту же проблему, с которой я сталкиваюсь в настоящее время
1

Для запуска git commands текущая папка должна быть git repo.

.git необходимо выполнить repo для выполнения команд git.

В этом причина ошибки.

0

Как и user1846747, gitPython требует, чтобы объект Repo запускал команду git.

Это классическая проблема начальной загрузки (проблема с курицей и яйцом): "Как я могу запустить команду git, запускающую gitPython, чтобы найти, где находится корень Repo, когда мне нужно знать, где корень должен создать объект Repo для запуска команды git?

@MaxNoe решил это в Найти корень репозитория git, где файл живет, с его проектом python-gitpath httpsgithub.com/MaxNoe/python-gitpath

0

Проблема заключается в том, что вы используете os.getcwd(), который возвращает текущий рабочий каталог. Если вы стоите снаружи folder2, эта функция вернет ~/wofc/folder1.

Вы должны поменять его на что-то вроде:

import os
os.path.dirname(os.path.abspath(__file__))

Например, например:

import os
path = os.path.dirname(os.path.abspath(__file__))
git = Repo('{}/..'.format(path)).git
git.checkout('master')
git.pull()
  • 0
    неправильный ответ, каталог репо находится не по тому же пути!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню