Module git Python Erreur de repository Git invalide

J'ai un script qui est placé dans une structure de dossier en tant que tel:

~/wofc/folder1/folder2/script.py

script.py utilise le module git pour effectuer certaines tâches. Cependant, quand je lance le script depuis l'extérieur de folder2 c'est-à-dire quand j'ai cd dans folder1 je lance python folder2/script.py arg1 arg2 je reçois l' raise InvalidGitRepositoryError(epath) . Le script s'exécute folder2 lorsque je l'exécute à l'intérieur de folder2 c'est-à folder2 dire que cd dans le folder2 et exécute python script.py arg1 arg2 . Voici l'extrait de code pertinent. Pouvez-vous s'il vous plaît laissez-moi savoir quel est le problème?

  git = Repo('{}/..'.format(os.getcwd())).git git.checkout('master') git.pull() 

Solutions Collecting From Web of "Module git Python Erreur de repository Git invalide"

Au lieu de Repo('{}/..'.format(os.getcwd())).git os.path.abspath , utilisez os.path.abspath :

 git = Repo(os.path.abspath('{}/..'.format(os.getcwd())).git git.checkout('master') git.pull() 

Pour exécuter les git commands , le dossier actuel doit être un git repo .

.git repo devrait être présent pour exécuter les commands git.

C'est la raison de l'erreur.

Le problème est que vous utilisez os.getcwd() qui returnne le directory de travail actuel. Si vous vous trouvez juste à l'extérieur de folder2 cette fonction renverra ~/wofc/folder1 .

Vous devriez l'échanger pour quelque chose comme:

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

Par exemple comme ceci:

 import os path = os.path.dirname(os.path.abspath(__file__)) git = Repo('{}/..'.format(path)).git git.checkout('master') git.pull() 

Comme l'a dit user1846747, gitPython nécessite un object Repo pour exécuter une command git.

C'est un problème classique de bootstrap (problème de poulets et d'oeufs): "comment exécuter une command git en exécutant gitPython pour find la racine Repo, quand j'ai besoin de savoir où est la racine pour créer un object Repo pour lancer une command git ? "

@MaxNoe a résolu ceci dans Trouver la racine du repository git où le file vit avec son projet python-gitpath httpsgithub.com/MaxNoe/python-gitpath