Start · Sprachen · PHP · Referenz · svn_cleanup

svn_cleanup

Funktion

Bereinigt ein SVN-Arbeitskopie-Verzeichnis rekursiv und entfernt dort verbliebene Sperren sowie unvollständige Transaktionen.

Kategorie: misc

Signatur

svn_cleanup(string $workingdir): bool

Beschreibung

svn_cleanup() führt eine Bereinigung (cleanup) auf dem angegebenen Verzeichnis einer Subversion-Arbeitskopie durch. Dies entspricht dem Kommandozeilenaufruf svn cleanup. Die Funktion arbeitet rekursiv und betrifft das angegebene Verzeichnis sowie alle Unterverzeichnisse.

Typischerweise wird diese Funktion benötigt, wenn eine vorherige SVN-Operation (z. B. ein Commit oder ein Update) durch einen Fehler, Absturz oder Abbruch unterbrochen wurde und die Arbeitskopie in einem inkonsistenten Zustand mit aktiven Sperren zurückgelassen hat. In solchen Fällen verweigert SVN weitere Operationen, bis ein Cleanup durchgeführt wurde.

svn_cleanup() entfernt alle administrativen Sperren (locks) im .svn-Verzeichnis und setzt unvollständige Operationen zurück, sodass die Arbeitskopie wieder in einem konsistenten Zustand ist und normale SVN-Operationen wieder möglich sind.

Die Funktion ist Teil der PECL-Extension svn und steht nur zur Verfügung, wenn diese Extension installiert und aktiviert ist.

Parameter

Name Typ Default Beschreibung
$workingdir Pflicht string Pfad zum lokalen Verzeichnis der SVN-Arbeitskopie, das bereinigt werden soll. Der Pfad kann relativ oder absolut angegeben werden.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Bereinigung erfolgreich war. Gibt false zurück, wenn ein Fehler aufgetreten ist (z. B. wenn das angegebene Verzeichnis keine gültige SVN-Arbeitskopie ist oder nicht existiert).

Beispiele

Einfache Bereinigung einer SVN-Arbeitskopie

<?php
$workingDir = '/var/www/mein-projekt';

if (svn_cleanup($workingDir)) {
    echo "SVN-Arbeitskopie erfolgreich bereinigt.";
} else {
    echo "Fehler beim Bereinigen der SVN-Arbeitskopie.";
}
?>
SVN-Arbeitskopie erfolgreich bereinigt.

Cleanup nach fehlgeschlagenem Update durchführen

<?php
$workingDir = '/var/www/mein-projekt';

// Versuche ein Update durchzuführen
$result = svn_update($workingDir);

if ($result === false) {
    echo "Update fehlgeschlagen. Versuche Bereinigung...\n";

    if (svn_cleanup($workingDir)) {
        echo "Bereinigung erfolgreich. Bitte Update erneut versuchen.\n";
        // Erneuter Versuch nach der Bereinigung
        $result = svn_update($workingDir);
        if ($result !== false) {
            echo "Update nach Bereinigung erfolgreich auf Revision: " . $result . "\n";
        }
    } else {
        echo "Bereinigung fehlgeschlagen. Manuelle Eingriff erforderlich.\n";
    }
} else {
    echo "Update erfolgreich auf Revision: " . $result . "\n";
}
?>

// Wichtig · Fallstricke

Voraussetzung: Die PECL-Extension svn muss installiert sein (pecl install svn). Sie ist nicht standardmäßig in PHP enthalten.

Berechtigungen: Das PHP-Skript muss ausreichende Dateisystemrechte besitzen, um die .svn-Verzeichnisse in der Arbeitskopie lesen und schreiben zu können. Andernfalls schlägt die Bereinigung fehl.

Sicherheit: Wird $workingdir aus Benutzereingaben übernommen, muss der Pfad unbedingt validiert und auf erlaubte Verzeichnisse beschränkt werden, um unbeabsichtigte Bereinigungen außerhalb der vorgesehenen Arbeitskopie zu verhindern.

Diese Funktion sollte nicht auf Verzeichnissen verwendet werden, die keine SVN-Arbeitskopien sind, da dies zu einem Fehler führt.