Signatur
Beschreibung
svn_fs_revision_root() gehört zur SVN-Dateisystem-API (PECL-Erweiterung svn) und liefert ein sogenanntes Revision-Root-Handle – eine Resource, die den Einstiegspunkt in den Verzeichnisbaum einer konkreten Revision des Subversion-Repositories repräsentiert.
Das zurückgegebene Handle kann anschließend an weitere svn_fs_*-Funktionen übergeben werden, z. B. an svn_fs_dir_entries(), um die Einträge des Wurzelverzeichnisses dieser Revision aufzulisten, oder an svn_fs_file_contents(), um den Inhalt einer Datei zu einer bestimmten Revision abzurufen.
Typischerweise wird zuerst über svn_repos_open() ein Repository geöffnet, danach mit svn_repos_fs() das zugehörige Dateisystem-Handle ermittelt und erst dann svn_fs_revision_root() aufgerufen, um auf eine spezifische Revision zuzugreifen. Dieser dreistufige Ablauf ist das Standardmuster für den direkten Dateisystemzugriff auf ein lokales SVN-Repository.
Die Funktion ist nur verfügbar, wenn die PECL-Erweiterung svn installiert ist, und funktioniert ausschließlich mit lokalen Repository-Pfaden (nicht mit Remote-URLs).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $fs Pflicht | resource | Ein Dateisystem-Handle, wie es von svn_repos_fs() zurückgegeben wird. Repräsentiert das Subversion-Dateisystem eines geöffneten Repositories. |
|
| $revnum Pflicht | int | Die Revisionsnummer, deren Root-Handle ermittelt werden soll. Muss eine gültige, nicht-negative Revisionsnummer des Repositories sein (z. B. 0 für die Anfangsrevision). |
Rückgabewert
false zurückgegeben.Beispiele
Verzeichniseinträge des Roots einer bestimmten Revision auflisten
<?php
// Repository öffnen (lokaler Pfad)
$repos = svn_repos_open('/var/svn/mein-repo');
if ($repos === false) {
die('Repository konnte nicht geöffnet werden.');
}
// Dateisystem-Handle ermitteln
$fs = svn_repos_fs($repos);
// Root-Handle für Revision 42 holen
$root = svn_fs_revision_root($fs, 42);
if ($root === false) {
die('Revision-Root konnte nicht ermittelt werden.');
}
// Einträge des Wurzelverzeichnisses auflisten
$entries = svn_fs_dir_entries($root, '/');
foreach ($entries as $name => $type) {
echo $name . ' (Typ: ' . $type . ')' . PHP_EOL;
}
Inhalt einer Datei aus einer bestimmten Revision lesen
<?php
$repos = svn_repos_open('/var/svn/mein-repo');
$fs = svn_repos_fs($repos);
// Letzte Revisionsnummer ermitteln
$latestRev = svn_fs_youngest_rev($fs);
// Root der neuesten Revision
$root = svn_fs_revision_root($fs, $latestRev);
// Dateiinhalt als Stream lesen
$stream = svn_fs_file_contents($root, '/trunk/README.md');
if ($stream !== false) {
echo stream_get_contents($stream);
fclose($stream);
}
// Wichtig · Fallstricke
Nur für lokale Repositories: Die gesamte svn_fs_*-API arbeitet ausschließlich mit lokal eingebundenen Subversion-Repositories über einen Dateisystempfad. Für entfernte Repositories (z. B. via svn+ssh:// oder https://) stehen diese Funktionen nicht zur Verfügung.
PECL-Abhängigkeit: Die Funktion ist Teil der PECL-Erweiterung svn, die separat kompiliert und installiert werden muss. Sie ist nicht im PHP-Kern enthalten und in modernen Projekten häufig nicht mehr aktiv gewartet.
Revisionsnummer validieren: Eine zu hohe Revisionsnummer (größer als svn_fs_youngest_rev()) führt zu einem Fehler. Stets vorher prüfen, ob die gewünschte Revision existiert.