Obsługa repozytoriów SVN za pomocą pySVN

Instalacja modułu pySVN do obsługi repozytoriów kontroli wersji SVN z poziomu Pythona. Artykuł opisuje sposób instalacji, oraz proste przykłady jego wykorzystania

Instalacja ze źródeł

Niektóre dystrybucje dostarczają pySVN w gotowych pakietach a jeżeli nie to można łatwo zainstalować tą bibliotekę. Pobieramy źródła z pysvn.tigris.org a następnie: - Rozpakowujemy źródła
- Przechodzimy do katalogu Source i wykonujemy:
python setup.py configure
make
Jeżeli kompilacja nie powiedzie się z powodu błędów związanych z kerberosem edytuj setup.py i usuń:
-lgssapi_krb5 -lkrb5 -lk5crypto -lkrb5support
A następnie ponów:
python setup.py configure
make

Po udanej kompilacji jako root tworzymy katalog pysvn i kopiujemy bibliotekę:
mkdir /usr/python*/site-packages/pysvn
cp pysvn/__init__.py /usr/python*/site-packages/pysvn
cp pysvn/_pysvn.so /usr/python*/site-packages/pysvn
I gotowe.

Przykłady zastosowań

W katalogu Docs znajdziemy opis API oraz przykładowe zastosowania. Oto dwa przykłady:
Potrzebujemy jakiś checkout z repozytorium SVN. Podajemy do niego ścieżkę oraz dokonujemy kilka zmian w zawartych plikach:
import pysvn
client = pysvn.Client()
changes = client.status('/jakis/checkout')
print 'pliki do dodania:'
print [f.path for f in changes if f.text_status == pysvn.wc_status_kind.added]
print 'pliki do usuniecia:'
print [f.path for f in changes if f.text_status == pysvn.wc_status_kind.deleted]
print 'pliki zmodyfikowane:'
print [f.path for f in changes if f.text_status == pysvn.wc_status_kind.modified]
print 'pliki z konfliktami:'
print [f.path for f in changes if f.text_status == pysvn.wc_status_kind.conflicted]
print 'pliki nie podlegajace wersjonowaniu:'
print [f.path for f in changes if f.text_status == pysvn.wc_status_kind.unversioned]
Bierzącą kopię wybranego repozytorium (checkout) możemy pobrać również z pomocą pySVN:
import pysvn
client = pysvn.Client()
client.checkout('http://localhost/repozytorium/trunk', './pobrane/pysvn')
blog comments powered by Disqus

Kategorie

Strony