Zugriff auf SVN-Repository
Alex
- webserver
0 Cheatah0 Alex
0 Nachtrag
Alex0 Harlequin0 Alex
0 Christian Seiler0 Alex
Guten Abend,
ich hab ein etwas seltsames Problem mit dem Zugang zu einem SVN-Repository. SVN läuft als Apache-Modul und kann über https://example.com/svn erreicht werden. Über einen Browser funktioniert das auch:
[05/Nov/2008:18:47:25 +0100] "GET /svn HTTP/1.1" 301 329
[05/Nov/2008:18:47:26 +0100] "GET /svn/ HTTP/1.1" 200 318
Falls der abschließende Slash in der URL fehlt, hängt Apache ihn automatisch an, wie man sieht. Soweit alles prima. Ein Zugriff mit dem SVN-Client Tortoise SVN (TSVN) auf die gleiche URL wie oben sieht in den Logs dann so aus:
[05/Nov/2008:18:47:47 +0100] "PROPFIND /svn HTTP/1.1" 401 1287
[05/Nov/2008:18:47:47 +0100] "PROPFIND /svn HTTP/1.1" 301 329
Im Gegensatz zum GET per Browser wird der Slash hier nicht angehängt. Und selbst, wenn ich in TSVN die URL zum Repository _mit_ Slash am Ende aufrufe, wird nur /svn an den Server gesendet. Auf die Weise krieg ich in TSVN allerdings nicht den gewünschten Inhalt zu Gesicht, weil der abschließende Slash hier Pflicht ist.
Ist das ein Fehler in TSVN? Läßt sich der Apache auch einfach so konfigurieren, daß für PROPFIND ebenfalls ein Slash angehängt wird?
Viele Grüße
Alex
Hi,
[05/Nov/2008:18:47:47 +0100] "PROPFIND /svn HTTP/1.1" 401 1287
Läßt sich der Apache auch einfach so konfigurieren, daß für PROPFIND ebenfalls ein Slash angehängt wird?
der Apache ist augenscheinlich so konfiguriert, dass er bei der Methode PROPFIND an dieser Stelle eine Authentifizierung verlangt. Konfiguriere den Client so, dass er sie mitsendet, oder den Server, dass er keine benötigt. Ab dieser Stelle kann ich Dir leider nicht weitr helfen.
Cheatah
Hallo,
[05/Nov/2008:18:47:47 +0100] "PROPFIND /svn HTTP/1.1" 401 1287
Läßt sich der Apache auch einfach so konfigurieren, daß für PROPFIND ebenfalls ein Slash angehängt wird?der Apache ist augenscheinlich so konfiguriert, dass er bei der Methode PROPFIND an dieser Stelle eine Authentifizierung verlangt. Konfiguriere den Client so, dass er sie mitsendet, oder den Server, dass er keine benötigt.
TSVN nimmt die Logindaten vom Benutzer entgegen und schickt sie dem Apachen auch ordnungsgemäß -- zumindest funktioniert es bei Resourcen unterhalb von /svn. Auf den Authentifizierungsmechanismus kann ich nicht verzichten. Das Problem stellt anscheinend wirklich nur der abschließende Slash dar, da die angeforderte Resource eine "Collection" ist (um mal bei der WebDAV-Bezeichnung zu bleiben) ...
Viele Grüße
Alex
Hallo,
ich merke gerade, daß ich einen Teil im ersten Posting etwas ungenau beschrieben habe:
Das Verzeichnis /svn auf dem Server ist nicht das eigentliche Repository sondern das Elternverzeichnis, in dem alle Repositories gesammelt sind. Beim Aufruf von https://example.com/svn/ bekomme ich im Browser demzufolge die Übersicht aller Repositories -- nur über TSVN eben nicht.
Direkt auf dem Server ausgeführt sieht das übrigens so aus:
~> svn list https://example.com/svn/
Anmeldebereich: https://example.com:443 SVN Repos
Passwort für »alex«:
svn: Das Projektarchiv wurde permanent nach »https://example.com/svn/« verschoben; bitte umplatzieren
~>
Vielleicht findet das ja jemand erhellend. Mich verwirrt es nur noch mehr. Was sagt mir diese Fehlermeldung? Konnte Archiv nicht, wie gefordert, an Position A finden, weil es nach Position A verschoben wurde?!
Eine andere Sache noch: Wenn ich den oben beschriebenen Anmeldeprozeß nun nochmal starte, werde ich nicht mehr nach einem Paßwort gefragt; auch nicht nach Neuanmeldung auf dem Server. Offensichtlich in irgendeinem Cache File gelandet. Weiß jemand wo ich fündig werden könnte? In meinem Homeverzeichnis ist mir auf den ersten Blick jedenfalls nichts aufgefallen ...
Viele Grüße
Alex
Yerf!
Direkt auf dem Server ausgeführt sieht das übrigens so aus:
~> svn list https://example.com/svn/
Anmeldebereich: https://example.com:443 SVN Repos
Passwort für »alex«:
svn: Das Projektarchiv wurde permanent nach »https://example.com/svn/« verschoben; bitte umplatzieren
~>Vielleicht findet das ja jemand erhellend. Mich verwirrt es nur noch mehr. Was sagt mir diese Fehlermeldung? Konnte Archiv nicht, wie gefordert, an Position A finden, weil es nach Position A verschoben wurde?!
Hm, ich hab zwar keinen Plan von SVN (hab nur mal interessehalber in den Thread geschaut), aber evtl. hab ich ein Erklärung für das Verhalten:
Beim Zugriff auf /svn Antwortet der Webserver mit einem 301 (moved permanently) und der Angabe auf den neuen Ort (/svn/). Der Browser folgt dieser Umleitung auch sofort wärend TSVN scheinbar nur den Benutzer über das "moved permanently" Informiert. Blöd ist da nur, dass TSVN scheinbar immer den abschließenden / entfernt und somit kein direkter Zugriff auf die "richtige" Adresse möglich ist...
Evtl. kann man den Apachen so umstellen, dass er keinen 301 liefert, sondern per mod_rewrite intern umschreibt (könnte aber auch Folgeprobleme mit Pfaden geben...)
Gruß,
Harlequin
Hallo,
Beim Zugriff auf /svn Antwortet der Webserver mit einem 301 (moved permanently) und der Angabe auf den neuen Ort (/svn/). Der Browser folgt dieser Umleitung auch sofort wärend TSVN scheinbar nur den Benutzer über das "moved permanently" Informiert. Blöd ist da nur, dass TSVN scheinbar immer den abschließenden / entfernt und somit kein direkter Zugriff auf die "richtige" Adresse möglich ist...
So sieht's wohl aus. Deshalb frage ich mich eben, ob das ein Fehlverhalten von TSVN ist. Der abschließende Slash ist für das Abrufen solcher Collections Pflicht, und das sollte eigentlich auch TSVN wissen.
Was mir allerdings das Ergebnis des nachgetragenen Tests direkt auf dem Server (also ohne TSVN) sagen soll, versteh ich immer noch nicht. Dort ist der Slash ja vorhanden. Scheint so, als läge das Problem also doch an anderer Stelle ...
Evtl. kann man den Apachen so umstellen, dass er keinen 301 liefert, sondern per mod_rewrite intern umschreibt (könnte aber auch Folgeprobleme mit Pfaden geben...)
Wäre bestimmt eine Möglichkeit. Ich hoffe momentan noch darauf, daß irgendjemand, der Erfahrung mit dem SVN-Kram auf dem Apachen hat, hier etwas "einfacheres" aus dem Hut zaubert. ;-)
Viele Grüße
Alex
Hallo Alex,
Das Verzeichnis /svn auf dem Server ist nicht das eigentliche Repository sondern das Elternverzeichnis, in dem alle Repositories gesammelt sind. Beim Aufruf von https://example.com/svn/ bekomme ich im Browser demzufolge die Übersicht aller Repositories -- nur über TSVN eben nicht.
Das geht grundsätzlich mit SVN nicht. Sorry.
Im Browser wird ja nur eine HTML-Seite angezeigt unter der URI (die SVN bereitstellt, damit man als Mensch sich wenigstens etwas zurechtfinden kann), d.h. dort klappt es. Allerdings greifen SVN-Clients über eine WebDAV-Erweiterung zu und nicht über normales HTTP - und diese WebDAV-Erweiterung kennt so etwas wie "Repositories auflisten" nicht.
Du hast keine Chance, ohne Subversion (Client und Server vermutlich!) zu patchen - und das stelle ich mir auch nicht ganz einfach vor, da ein SVN-Client beim ls ja einige Annahmen macht... (nämlich, dass das ls *innerhalb* eines *einzigen* Repositories stattfindet)
Du kannst ja mal im Bugtracker von denen nachsehen, ob jemand schon einen ähnlichen Feature-Request gestellt hat und wenn nicht selbst einen stellen.
Eine andere Sache noch: Wenn ich den oben beschriebenen Anmeldeprozeß nun nochmal starte, werde ich nicht mehr nach einem Paßwort gefragt; auch nicht nach Neuanmeldung auf dem Server. Offensichtlich in irgendeinem Cache File gelandet. Weiß jemand wo ich fündig werden könnte? In meinem Homeverzeichnis ist mir auf den ersten Blick jedenfalls nichts aufgefallen ...
Unter Linux werden diese Infos in $HOME/.subversion/auth/svn.simple/ gecached (Dateinamen sind irgend ein Hash - vmtl. vom URI).
Viele Grüße,
Christian
Hallo,
Beim Aufruf von https://example.com/svn/ bekomme ich im Browser demzufolge die Übersicht aller Repositories -- nur über TSVN eben nicht.
Das geht grundsätzlich mit SVN nicht. Sorry.
Im Browser wird ja nur eine HTML-Seite angezeigt unter der URI (die SVN bereitstellt, damit man als Mensch sich wenigstens etwas zurechtfinden kann), d.h. dort klappt es. Allerdings greifen SVN-Clients über eine WebDAV-Erweiterung zu und nicht über normales HTTP - und diese WebDAV-Erweiterung kennt so etwas wie "Repositories auflisten" nicht.
Achso, da kann ich natürlich lange probieren. ;-) Ich ging in der Annahme, daß ich diese Übersicht auch über WebDAV erhalten könnte, weil der Client ja eigentlich nicht wissen muß, daß es sich um SVN-Repositories handelt. Letztendlich sind es ja auch nur Verzeichnisse.
Danke für Deinen Hinweis.
Eine andere Sache noch: Wenn ich den oben beschriebenen Anmeldeprozeß nun nochmal starte, werde ich nicht mehr nach einem Paßwort gefragt
Unter Linux werden diese Infos in $HOME/.subversion/auth/svn.simple/ gecached (Dateinamen sind irgend ein Hash - vmtl. vom URI).
Danke auch dafür. Da hatte ich gestern beim Suchen wohl Tomaten auf den Augen.
Viele Grüße
Alex