Signatur
Beschreibung
svn_revert() setzt eine Datei oder ein Verzeichnis in der Subversion-Arbeitskopie auf den zuletzt ausgecheckten oder aktualisierten Zustand zurück. Lokale Änderungen (Bearbeitungen, Hinzufügungen, Löschungen) werden verworfen, ohne dass der SVN-Server kontaktiert werden muss. Dies entspricht dem Kommandozeilenbefehl svn revert.
Die Funktion ist nützlich, wenn Änderungen an Arbeitskopie-Dateien programmatisch rückgängig gemacht werden sollen – etwa in automatisierten Build- oder Deployment-Prozessen, die nach einem Fehler aufgeräumt werden müssen.
Wird $recursive auf true gesetzt, werden bei einem Verzeichnispfad alle enthaltenen Dateien und Unterverzeichnisse rekursiv zurückgesetzt. Ohne diese Option werden bei Verzeichnissen nur die Verzeichnis-Properties selbst zurückgesetzt, nicht die enthaltenen Dateien.
Hinweis: Diese Funktion gehört zur PECL-Erweiterung svn und muss separat installiert sein. Sie ist nicht Bestandteil des PHP-Kerns.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $path Pflicht | string | Lokaler Pfad zur Datei oder zum Verzeichnis in der Arbeitskopie, deren Änderungen rückgängig gemacht werden sollen. Relative und absolute Pfade sind möglich. | |
| $recursive | bool | false | Wenn true, wird der Revert rekursiv auf alle Inhalte eines Verzeichnisses angewendet. Bei false (Standard) werden nur die Eigenschaften des angegebenen Verzeichnisses zurückgesetzt, nicht die enthaltenen Dateien. |
Rückgabewert
true zurück, wenn der Revert erfolgreich war, andernfalls false. Im Fehlerfall (z. B. ungültiger Pfad oder kein gültiges SVN-Arbeitskopie-Verzeichnis) wird außerdem eine PHP-Warnung ausgegeben.Beispiele
Einzelne Datei zurücksetzen
<?php
// Lokale Änderungen an einer einzelnen Datei rückgängig machen
$path = '/var/www/meinprojekt/src/config.php';
if (svn_revert($path)) {
echo "Änderungen an '{$path}' erfolgreich zurückgesetzt.";
} else {
echo "Fehler beim Zurücksetzen von '{$path}'.";
}
Gesamtes Verzeichnis rekursiv zurücksetzen
<?php
// Alle lokalen Änderungen im gesamten Projektverzeichnis rückgängig machen
$workingCopy = '/var/www/meinprojekt';
if (svn_revert($workingCopy, true)) {
echo "Alle Änderungen in '{$workingCopy}' wurden rekursiv zurückgesetzt.";
} else {
echo "Fehler beim rekursiven Zurücksetzen von '{$workingCopy}'.";
}
// Wichtig · Fallstricke
Datenverlust: svn_revert() verwirft lokale Änderungen unwiderruflich. Es gibt keine Möglichkeit, die verworfenen Änderungen über SVN wiederherzustellen – sie sind nicht committed und daher nicht im Repository gespeichert. Vor dem Aufruf sollte sichergestellt sein, dass keine wertvollen, noch nicht gesicherten Änderungen verloren gehen.
PECL-Abhängigkeit: Die Funktion ist Teil der PECL-Erweiterung svn (pecl install svn). Sie steht nicht in Standard-PHP-Installationen zur Verfügung. Die Erweiterung setzt außerdem eine installierte Subversion-Bibliothek (APR/APR-Util) voraus.
Nicht verfolgte Dateien: Dateien, die SVN nicht bekannt sind (nicht unter Versionskontrolle stehen), werden von svn_revert() nicht berührt. Nur versionskontrollierte Änderungen werden zurückgesetzt.