2013-05-15 14 views
17

Zasadniczo chcę napisać skrypt Pythona, który wykonuje kilka rzeczy i jednym z nich będzie uruchomienie kasy w repozytorium za pomocą subversion (SVN) i może preform kilka dodatkowych poleceń svn. Jaki jest najlepszy sposób na zrobienie tego? Będzie działał jako skrypt Crond.Jak uruchamiać polecenia SVN ze skryptu Pythona?

+2

Brałeś spojrzeć na [Python] Interfejs do Subversion (http: // pysvn. tigris.org/docs/pysvn.html)? –

+0

Nie potrzebowałem tego, ale dzięki za napiwek. –

Odpowiedz

18

Czy to działa?

p = subprocess.Popen("svn info svn://xx.xx.xx.xx/project/trunk | grep \"Revision\" | awk '{print $2}'", stdout=subprocess.PIPE, shell=True) 
(output, err) = p.communicate() 
print "Revision is", output 
+1

Oto odpowiedź, której szukałem. Dzięki –

+4

@Ricardo Jeśli zamierzasz używać tej techniki, myślę, że byłoby prostsze, gdyby dane wyjściowe były wymagane jako XML. Coś jak 'svn info --xml'. W ten sposób wyniki będą łatwiejsze do analizowania i przetwarzania. –

+1

dzięki za heads up @EdwinDalorzo –

14

Spróbuj pysvn

Daje doskonały dostęp miarę Przetestowałem go. Oto kilka przykładów: http://pysvn.tigris.org/docs/pysvn_prog_guide.html

Powodem, dla którego mówię o ile testowałem to, ponieważ przeniosłem się do Git .. ale jeśli pamiętam pysvn jest (tylko i) najlepszym biblioteka dla svn.

+0

Dzięki za to! – Danijel

+0

W rzeczywistości istnieją dwa moduły pythona dla subversion: pysvn i svn (biblioteka SWIG wokół subversion C lib): http://svnbook.red-bean.com/en/1.7/svn.developer.usingapi.html#svn.developer .usingapi.otherlangs W zależności od tego, co próbujesz zrobić, większość ludzi używa pysvn. –

0

Spójrz do modułu Pythona xonsh: http://xon.sh/tutorial.html

może wywołać poleceń powłoki plus orurowanie i wyjście przekierowanie z bliskim kontakcie z pytona kodu natywnego (zagnieżdżonych) bez konieczności gry z pytona komunikowania bullshet i uciec z postaciami dookoła.

Przykłady:

env | uniq | sort | grep PATH

COMMAND1 e>o < input.txt | COMMAND2 > output.txt e>> errors.txt

echo "my home is $HOME"

echo @(7+3)

Powiązane problemy