Signatur
Beschreibung
svn_repos_open() öffnet ein auf dem lokalen Dateisystem vorhandenes Subversion-Repository anhand seines Pfades und gibt eine Repository-Ressource zurück, die für weitere Operationen auf dem Repository (z. B. Revision-Abfragen, Zugriff auf das Dateisystem des Repositories) verwendet werden kann.
Die Funktion erwirbt dabei eine gemeinsame Sperre (Shared Lock) auf das Repository. Das bedeutet, mehrere Prozesse können das Repository gleichzeitig lesend öffnen, jedoch werden exklusive Sperren (z. B. für Schreiboperationen) so lange blockiert, bis alle gemeinsamen Sperren aufgehoben wurden.
Diese Funktion ist Bestandteil der SVNLIB-Erweiterung (pecl/svn) für PHP und dient typischerweise als Einstiegspunkt für administrative oder analytische Skripte, die direkt auf ein lokales Subversion-Repository zugreifen, ohne einen svnserve- oder Apache-Prozess als Vermittler zu benötigen.
Das übergebene Verzeichnis muss ein gültiges SVN-Repository sein (erstellt z. B. mit svnadmin create). Der Pfad wird als lokaler Dateisystempfad interpretiert und unterstützt keine file://- oder Remote-URLs.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $path Pflicht | string | Absoluter oder relativer Dateisystempfad zum lokalen Subversion-Repository-Verzeichnis. Das Verzeichnis muss ein gültiges SVN-Repository enthalten (erkennbar an den Unterverzeichnissen conf, db, format, hooks usw.). |
Rückgabewert
false zurückgegeben.Beispiele
Repository öffnen und Ressource prüfen
<?php
// Pfad zum lokalen SVN-Repository
$repoPath = '/var/svn/meinprojekt';
$repos = svn_repos_open($repoPath);
if ($repos === false) {
echo 'Fehler: Das Repository konnte nicht geöffnet werden.';
} else {
echo 'Repository erfolgreich geöffnet.';
// Hier können weitere Operationen mit $repos durchgeführt werden
}
?>
Repository öffnen und neueste Revision abfragen
<?php
$repoPath = '/var/svn/meinprojekt';
$repos = svn_repos_open($repoPath);
if ($repos !== false) {
// Zugriff auf das versionierte Dateisystem des Repositories
$fs = svn_repos_fs($repos);
if ($fs !== false) {
$latestRevision = svn_fs_youngest_rev($fs);
echo 'Neueste Revision: ' . $latestRevision;
} else {
echo 'Fehler beim Zugriff auf das Dateisystem des Repositories.';
}
} else {
echo 'Repository konnte nicht geöffnet werden.';
}
?>
// Wichtig · Fallstricke
Erweiterung erforderlich: Diese Funktion ist nur verfügbar, wenn die PHP-Erweiterung svn (PECL) installiert und geladen ist. Sie ist nicht Teil der PHP-Standardinstallation.
Dateiberechtigungen: Der PHP-Prozess muss ausreichende Leserechte auf das Repository-Verzeichnis besitzen. Bei Webserver-Prozessen (z. B. www-data) ist dies häufig eine Quelle von Fehlern.
Nur lokale Repositories: svn_repos_open() funktioniert ausschließlich mit lokal erreichbaren Repositories. Remote-URLs wie svn://, https:// oder file://remotehost/... werden nicht unterstützt.
Ressourcenverwaltung: Die zurückgegebene Ressource sollte nach Gebrauch freigegeben werden, um die Sperre aufzuheben und Ressourcen zurückzugeben. Dies geschieht entweder implizit am Ende des Skripts oder explizit, falls entsprechende Freigabefunktionen verfügbar sind.