Start · Sprachen · PHP · Referenz · svn_fs_props_changed

svn_fs_props_changed

Funktion

Prüft, ob sich die Eigenschaften (Properties) eines Pfades zwischen zwei Subversion-Dateisystem-Roots unterscheiden.

Kategorie: misc

Signatur

svn_fs_props_changed(resource $root1, string $path1, resource $root2, string $path2): bool

Beschreibung

svn_fs_props_changed() vergleicht die Eigenschaften (Properties) eines Knotens (Datei oder Verzeichnis) an einem bestimmten Pfad in zwei verschiedenen Subversion-Dateisystem-Roots und gibt zurück, ob Unterschiede vorhanden sind.

Diese Funktion ist nützlich, wenn man effizient feststellen möchte, ob sich ausschließlich die Metadaten (Properties) eines Pfades geändert haben, ohne den eigentlichen Inhalt zu vergleichen. Typische Anwendungsfälle sind Versionsverwaltungs-Tools oder Analyse-Skripte, die auf Basis von SVN-Repositorys arbeiten.

Die Funktion arbeitet direkt auf dem Subversion-Dateisystem (über die SVNFS-Schnittstelle) und erfordert gültige Root-Ressourcen, wie sie etwa von svn_fs_revision_root() oder svn_fs_txn_root() zurückgegeben werden.

Hinweis: Diese Funktion ist Teil der svn-PECL-Erweiterung, die auf den Subversion-Bibliotheken basiert und separat installiert werden muss.

Parameter

Name Typ Default Beschreibung
$root1 Pflicht resource Ein Dateisystem-Root-Ressource (z. B. von svn_fs_revision_root()) für den ersten Vergleichspunkt.
$path1 Pflicht string Der Pfad des Knotens im ersten Root, dessen Eigenschaften verglichen werden sollen.
$root2 Pflicht resource Ein Dateisystem-Root-Ressource für den zweiten Vergleichspunkt.
$path2 Pflicht string Der Pfad des Knotens im zweiten Root, dessen Eigenschaften verglichen werden sollen.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn sich die Eigenschaften der beiden Knoten unterscheiden, andernfalls false. Im Fehlerfall kann false zurückgegeben werden.

Beispiele

Properties zweier Revisionen vergleichen

<?php
// Repository öffnen
$repos = svn_repos_open('/var/svn/myrepo');
$fs    = svn_repos_fs($repos);

// Root-Ressourcen für Revision 10 und Revision 11 holen
$root10 = svn_fs_revision_root($fs, 10);
$root11 = svn_fs_revision_root($fs, 11);

$path = '/trunk/README.txt';

if (svn_fs_props_changed($root10, $path, $root11, $path)) {
    echo "Die Properties von '{$path}' haben sich zwischen Revision 10 und 11 geändert.";
} else {
    echo "Keine Property-Änderungen an '{$path}' zwischen Revision 10 und 11.";
}
?>
Die Properties von '/trunk/README.txt' haben sich zwischen Revision 10 und 11 geändert.

Properties desselben Pfades in unterschiedlichen Branches vergleichen

<?php
$repos = svn_repos_open('/var/svn/myrepo');
$fs    = svn_repos_fs($repos);

$headRev = svn_fs_youngest_rev($fs);
$root    = svn_fs_revision_root($fs, $headRev);

$pathTrunk  = '/trunk/config.php';
$pathBranch = '/branches/feature-x/config.php';

$changed = svn_fs_props_changed($root, $pathTrunk, $root, $pathBranch);

if ($changed) {
    echo "Die Properties unterscheiden sich zwischen trunk und feature-x.";
} else {
    echo "Die Properties sind identisch.";
}
?>
Die Properties unterscheiden sich zwischen trunk und feature-x.

// Wichtig · Fallstricke

Voraussetzung: Die PECL-Erweiterung svn muss installiert und aktiviert sein. Sie ist nicht Bestandteil der Standard-PHP-Distribution.

Achte darauf, dass beide übergebenen Root-Ressourcen und Pfade gültig sind. Ungültige oder nicht existierende Pfade können zu Fehlern oder unerwarteten Rückgabewerten führen. Es empfiehlt sich, vorher mit svn_fs_check_path() die Existenz des Knotens zu prüfen.

Diese Funktion prüft ausschließlich die Properties (Metadaten wie svn:mime-type, svn:eol-style etc.) und nicht den eigentlichen Dateiinhalt. Für einen Inhaltsvergleich sollte stattdessen svn_fs_contents_changed() verwendet werden.