Start · Sprachen · PHP · Referenz · svn_fs_change_node_prop

svn_fs_change_node_prop

Funktion

Ändert oder setzt eine Eigenschaft (Property) eines Knotens im Subversion-Dateisystem.

Kategorie: misc

Signatur

svn_fs_change_node_prop(resource $fsroot, string $path, string $name, string $value): bool

Beschreibung

svn_fs_change_node_prop ist Teil der SVN-Dateisystemfunktionen in PHP und ermöglicht es, eine benannte Eigenschaft (Property) eines bestimmten Knotens (Datei oder Verzeichnis) im Subversion-Repository direkt zu setzen oder zu ändern. Die Funktion arbeitet auf einer Transaktion oder Revision innerhalb des Subversion-Dateisystems.

Knotenproperties sind Metadaten, die an Dateien oder Verzeichnisse in einem Subversion-Repository angehängt werden können. Typische Beispiele sind svn:mime-type, svn:eol-style oder eigene benutzerdefinierte Properties. Mit dieser Funktion können solche Werte programmatisch gesetzt oder überschrieben werden.

Der Parameter $fsroot muss ein gültiges Dateisystem-Wurzel-Resource sein, das aus einer schreibbaren Transaktion stammt (z. B. erstellt mit svn_fs_begin_txn2 und svn_fs_txn_root). Das Setzen einer Property auf einen leeren String kann die Property entfernen oder löschen, abhängig von der SVN-Implementierung.

Die Funktion ist nur verfügbar, wenn die PECL-Erweiterung svn installiert ist. Sie eignet sich für Automatisierungs-Skripte, die direkt mit dem Subversion-Dateisystem interagieren müssen, ohne einen externen SVN-Client aufzurufen.

Parameter

Name Typ Default Beschreibung
$fsroot Pflicht resource Ein Dateisystem-Wurzel-Resource, das aus einer beschreibbaren SVN-Transaktion stammt. Wird z. B. mit svn_fs_txn_root() erzeugt.
$path Pflicht string Der Pfad des Knotens innerhalb des Repositories, dessen Eigenschaft geändert werden soll, z. B. /trunk/README.txt.
$name Pflicht string Der Name der Knoteneigenschaft, die gesetzt oder geändert werden soll, z. B. svn:mime-type oder eine benutzerdefinierte Property wie myapp:status.
$value Pflicht string Der neue Wert der Eigenschaft. Ein leerer String kann je nach SVN-Implementierung dazu führen, dass die Property entfernt wird.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. ungültiger Pfad, nicht beschreibbarer Dateisystem-Wurzel-Resource).

Beispiele

MIME-Type einer Datei im Repository setzen

<?php
// Repository öffnen
$repo = svn_repos_open('/pfad/zum/repository');
$fs   = svn_repos_fs($repo);

// Neue Transaktion starten
$txn     = svn_fs_begin_txn2($fs, svn_fs_youngest_rev($fs));
$txnRoot = svn_fs_txn_root($txn);

// MIME-Type der Datei setzen
$result = svn_fs_change_node_prop(
    $txnRoot,
    '/trunk/index.html',
    'svn:mime-type',
    'text/html'
);

if ($result) {
    // Transaktion committen
    svn_repos_fs_commit_txn($txn);
    echo "Property erfolgreich gesetzt.\n";
} else {
    echo "Fehler beim Setzen der Property.\n";
}
Property erfolgreich gesetzt.

Benutzerdefinierte Property setzen und anschließend lesen

<?php
$repo    = svn_repos_open('/pfad/zum/repository');
$fs      = svn_repos_fs($repo);
$txn     = svn_fs_begin_txn2($fs, svn_fs_youngest_rev($fs));
$txnRoot = svn_fs_txn_root($txn);

// Benutzerdefinierte Property setzen
svn_fs_change_node_prop(
    $txnRoot,
    '/trunk/config.xml',
    'myapp:reviewed',
    'yes'
);

// Transaktion committen
svn_repos_fs_commit_txn($txn);

// Neueste Revision lesen
$revRoot = svn_fs_revision_root($fs, svn_fs_youngest_rev($fs));
$value   = svn_fs_node_prop($revRoot, '/trunk/config.xml', 'myapp:reviewed');
echo "Property-Wert: " . $value . "\n";
Property-Wert: yes

// Wichtig · Fallstricke

Achtung: Diese Funktion ist Teil der PECL-Erweiterung svn, die separat installiert werden muss und nicht zum PHP-Kern gehört. Die Verfügbarkeit ist abhängig von der installierten PECL-Version und der nativen Subversion-Bibliothek (libsvn).

Änderungen an Properties sind nur dauerhaft, wenn die zugehörige Transaktion erfolgreich mit svn_repos_fs_commit_txn() abgeschlossen wird. Wird die Transaktion verworfen, gehen alle Änderungen verloren.

Das Übergeben eines leeren Strings als $value kann die Eigenschaft je nach SVN-Version entfernen oder auf einen leeren Wert setzen. Für das explizite Löschen einer Property sollte dies getestet werden.