2012-03-19 11 views
5

Próbuję wykonać proste polecenie git za pomocą następującego skryptu Pythona.próbuje wykonać polecenie git za pomocą skryptu python

#!/usr/bin/python 

import commands 
import subprocess 
import os 
import sys 

pr = subprocess.Popen("/usr/bin/git log" , cwd = os.path.dirname('/ext/home/rakesh.kumar/workspace/myproject'), shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE) 
(out, error) = pr.communicate() 


print "Error : " + str(error) 
print "out : " + str(out) 

ale pojawia się następujący błąd, mimo że uruchamiam skrypt Pythona w tym samym katalogu, w którym znajduje się git reposetory.

Error : fatal: Not a git repository (or any of the parent directories): .git 

I podejrzewał, że może mnie correputed git, ale pliki git są w porządku i polecenia git działa, jeśli mogę wykonać na normalnej wiersza polecenia.

Próbowałem wyszukiwać w sieci, ale nie mogłem uzyskać przydatnych informacji. Pomóżcie, będzie to bardzo docenione.

+0

Co jest nie tak z kodem, który otacza 79 znaków? –

Odpowiedz

4

Spróbuj tego:

#!/usr/bin/python 

import commands 
import subprocess 
import os 
import sys 

pr = subprocess.Popen("/usr/bin/git log" , cwd = os.path.dirname('/ext/home/rakesh.kumar/workspace/myproject/'), shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE) 
(out, error) = pr.communicate() 


print "Error : " + str(error) 
print "out : " + str(out) 

ścieżka katalog powinien mieć '/' na końcu.

+0

Dzięki za szybką odpowiedź Adam, działa teraz. – Rakesh

+0

Zauważ, że ten błąd może również wystąpić, jeśli masz ustawioną zmienną środowiskową 'GIT_DIR' (szczególnie na względną ścieżkę, która może się zdarzyć w hakach git) –

5

Problemem jest korzystanie z os.path.dirname():

os.path.dirname('/ext/home/rakesh.kumar/workspace/myproject') 

daje:

>>> os.path.dirname('/ext/home/rakesh.kumar/workspace/myproject') 
'/ext/home/rakesh.kumar/workspace' 

które założę, nie to, co chcesz.

Powiązane problemy