Signatur
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
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.";
}
?>
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.";
}
?>
// 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.