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?
Odpowiedz
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
Oto odpowiedź, której szukałem. Dzięki –
@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. –
dzięki za heads up @EdwinDalorzo –
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.
Dzięki za to! – Danijel
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. –
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)
Brałeś spojrzeć na [Python] Interfejs do Subversion (http: // pysvn. tigris.org/docs/pysvn.html)? –
Nie potrzebowałem tego, ale dzięki za napiwek. –