spree Geschrieben 10. Februar 2006 Teilen Geschrieben 10. Februar 2006 Hi alle, folgendes Problem: Ich habe eine Aufgabenstellung, in der ich ein subversion repository mit Hilfe von perl verwalten soll, heißt im endeffekt daten herausholen, updaten und wieder reinladen. Es gibt da schon fast fertigen code, den ich zur Verfügung habe, jedoch hat der ein relativ großes Problem. Der Code verwendet das Modul SVN::Client (teil vom debian-package libsvn-core-perl). Wenn man damit einen Aufruf macht, funktioniert das einwandfrei, allerdings beendet sich der svn-serve prozess danach nicht mehr. Heißt, dass pro anfrage ein Prozess forkt und ich somit ziemlich schnell den Speicher vollkrieg und die Kiste steht. Meine Frage nun: Gibts dafür einen Fix? Gibts eine andere Möglichkeit SVN mit Perl anzusprechen? Komischerweise finde ich zum perl modul SVN::Client fast gar nichts im Web, auf CPAN überhaupt nichts. Ich finde nur was zu den sog. "Perl Bindings" und Begriffen wie SWIG, allerdings steht nirgends was konkretes (auch nicht im SVNbuch, dort steht nur ein Beispiel zu python) und wo man die herbekommt. Vielleicht könnt ihr mir ja helfen. LG Matthias Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
iscariot Geschrieben 13. Februar 2006 Teilen Geschrieben 13. Februar 2006 Heißt, dass pro anfrage ein Prozess forkt und ich somit ziemlich schnell den Speicher vollkrieg und die Kiste steht. Mh.. Das hoert sich aber boese an... Sicher, dass das an den Perlmodulen liegt? Gibts eine andere Möglichkeit SVN mit Perl anzusprechen? system("svn", ...); waere eine Moeglichkeit, allerdings waere ein XS Modul schon schoener. Komischerweise finde ich zum perl modul SVN::Client fast gar nichts im Web, auf CPAN überhaupt nichts. http://search.cpan.org/search?query=svn&mode=module - Da findest du genuegend Module, die funktionieren. Ich finde nur was zu den sog. "Perl Bindings" und Begriffen wie SWIG, allerdings steht nirgends was konkretes (auch nicht im SVNbuch, dort steht nur ein Beispiel zu python) und wo man die herbekommt. Ich glaub' du hast da was falsch verstanden. Die "Perl Bindings", per SWIG, sind in SVN::Client zu finden. So sieht das Paket subversion-perl bei mir aus: /usr/lib/libsvn_swig_perl-1.so.0 /usr/lib/libsvn_swig_perl-1.so.0.0.0 /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN/Base.pm /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN/Client.pm /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN/Core.pm /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN/Delta.pm /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN/Fs.pm /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN/Ra.pm /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN/Repos.pm /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/SVN/Wc.pm /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Client /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Client/_Client.so /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Core /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Core/_Core.so /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Delta /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Delta/_Delta.so /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Fs /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Fs/_Fs.so /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Ra /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Ra/_Ra.so /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Repos /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Repos/_Repos.so /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Wc /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi/auto/SVN/_Wc/_Wc.so /usr/share/man/man3/SVN::Base.3pm.gz /usr/share/man/man3/SVN::Client.3pm.gz /usr/share/man/man3/SVN::Core.3pm.gz /usr/share/man/man3/SVN:: Delta.3pm.gz /usr/share/man/man3/SVN::Fs.3pm.gz /usr/share/man/man3/SVN::Ra.3pm.gz /usr/share/man/man3/SVN::Repos.3pm.gz /usr/share/man/man3/SVN::Wc.3pm.gz Hoffe, dass ich weiterhelfen konnte. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
spree Geschrieben 14. Februar 2006 Autor Teilen Geschrieben 14. Februar 2006 hi! danke für deine Antwort Also das mit den Perl Bindings hab ich nun auch mitgekriegt, dass die in SVN::Base, SVN::Client usw untergebracht sind. Das Problem, das ich habe gibts aber immer noch. Ich hab ja wie gesagt schon teilweise fertigen code bekommen, der funktioniert aber das problem mit dem svnserve prozess hat. Svnserve wird durch inetd aufgerufen, aber das Problem soll auch bestehen, wenn man svnserve als daemon laufen lässt. Ich werde das nocheinmal überprüfen. Danke erstmal! LG Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
spree Geschrieben 14. Februar 2006 Autor Teilen Geschrieben 14. Februar 2006 Vielleicht noch eine Ergänzung dazu: Das perl skript, das die svn checkouts/updates macht, wird über apache ausgeführt (ist ein cgi/mason skript). Es scheint so, als würde apache die connections zum svnserve prozess nicht mehr schließen. Erst wenn ich den apachen neustarte sind die prozesse und verbindungen weg. Woran kanns liegen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.