Start · Sprachen · PHP · Referenz · svn_revert

svn_revert

Funktion

Macht lokale Änderungen an einer Datei oder einem Verzeichnis in der SVN-Arbeitskopie rückgängig, ohne den Server zu kontaktieren.

seit PHP 0.1.0 Kategorie: misc

Signatur

svn_revert(string $path, bool $recursive = false): bool

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

Typ
bool
Beschreibung
Gibt 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}'.";
}
Änderungen an '/var/www/meinprojekt/src/config.php' erfolgreich zurückgesetzt.

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}'.";
}
Alle Änderungen in '/var/www/meinprojekt' wurden rekursiv zurückgesetzt.

// 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.