Ich habe ein Skript, das in einer Ordnerstruktur als solche platziert ist:
~/wofc/folder1/folder2/script.py
script.py verwendet das Git-Modul, um einige Aufgaben zu erledigen. Wenn ich das Skript jedoch von außerhalb ausführe folder2 dh wenn ich habe cd hinein folder1 ich renne python folder2/script.py arg1 arg2 Ich bekomme die raise InvalidGitRepositoryError(epath) Error. Das Skript läuft gut, wenn ich es von innen ausführe folder2 dh cd hinein folder2 und Renn python script.py arg1 arg2. Unten ist das relevante Code-Snippet. Können Sie mir bitte sagen, was das Problem ist?
gibt das gleiche Problem, mit dem ich derzeit konfrontiert bin
– Anfänger
11. März 2016 um 20:14 Uhr
Laufen git commandssollte der aktuelle Ordner a git repo.
.git repo sollte vorhanden sein, um Git-Befehle auszuführen.
Das ist der Grund für den Fehler.
Das Problem ist, dass Sie verwenden os.getcwd() die das aktuelle Arbeitsverzeichnis zurückgibt. Wenn Sie gerade draußen stehen folder2 diese Funktion kehrt zurück ~/wofc/folder1.
Sie sollten es gegen etwas austauschen wie:
import os
os.path.dirname(os.path.abspath(__file__))
Zum Beispiel so:
import os
path = os.path.dirname(os.path.abspath(__file__))
git = Repo('{}/..'.format(path)).git
git.checkout('master')
git.pull()
falsche Antwort, das Repo-Verzeichnis befindet sich nicht im selben Pfad!
– Ali Nikneschan
11. März 2016 um 20:07 Uhr
qneill
Wie user1846747 sagte, benötigt gitPython ein Repo-Objekt, um einen Git-Befehl auszuführen.
Dies ist ein klassisches Bootstrap-Problem (Huhn-und-Ei-Problem): „Wie kann ich einen Git-Befehl ausführen, der GitPython ausführt, um herauszufinden, wo sich der Repo-Stamm befindet, wenn ich wissen muss, wo der Stamm ist, um ein Repo-Objekt zu erstellen, um einen Git-Befehl auszuführen ?”
@MaxNoe löste dies in Finden Sie den Stamm des Git-Repositorys, in dem sich die Datei befindet, mit seinem python-gitpath-Projekt httpsgithub.com/MaxNoe/python-gitpath