Start · Sprachen · PHP · Referenz · svn_fs_revision_root

svn_fs_revision_root

Funktion

Gibt ein Handle (Resource) auf den Root-Verzeichnisknoten einer bestimmten Revision des Subversion-Dateisystems zurück.

Kategorie: misc

Signatur

svn_fs_revision_root(resource $fs, int $revnum): resource

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

Typ
resource
Beschreibung
Gibt eine Resource zurück, die als Handle auf den Root-Verzeichnisknoten der angegebenen Revision dient. Im Fehlerfall (z. B. ungültige Revisionsnummer oder ungültiges Dateisystem-Handle) wird 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;
}
branches (Typ: 1) tags (Typ: 1) trunk (Typ: 1)

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.