Start · Sprachen · PHP · Referenz · svn_delete

svn_delete

Funktion

Löscht eine Datei oder ein Verzeichnis aus einer SVN-Arbeitskopie oder direkt aus einem Subversion-Repository.

seit PHP 0.1.0 Kategorie: misc

Signatur

svn_delete(string $path, bool $force = false): bool

Beschreibung

svn_delete() markiert eine Datei oder ein Verzeichnis in einer lokalen SVN-Arbeitskopie zur Löschung (ähnlich dem Befehl svn delete auf der Kommandozeile) oder löscht ein Element direkt aus einem Repository-URL. Nach dem Aufruf auf einer Arbeitskopie muss die Änderung noch mit svn_commit() übertragen werden, damit sie dauerhaft im Repository wirksam wird.

Wenn $path eine Arbeitskopienpfad ist, wird die Datei oder das Verzeichnis als gelöscht vorgemerkt. Ist $path hingegen eine Repository-URL (beginnend mit z. B. http://, svn:// oder file:///), wird das Element sofort und direkt im Repository gelöscht, ohne dass ein separater Commit notwendig ist.

Der optionale Parameter $force erzwingt die Löschung auch dann, wenn die Datei lokal verändert wurde oder noch nicht eingecheckte Änderungen enthält. Ohne $force schlägt der Aufruf bei solchen Dateien fehl, um versehentlichen Datenverlust zu vermeiden.

Diese Funktion gehört zur PECL-Extension svn und steht nur zur Verfügung, wenn diese Extension installiert und aktiviert ist. Sie ist besonders nützlich in automatisierten Build- oder Deployment-Skripten, die SVN-Repositories programmatisch verwalten.

Parameter

Name Typ Default Beschreibung
$path Pflicht string Pfad zu einer Datei oder einem Verzeichnis in einer lokalen Arbeitskopie oder eine Repository-URL. Bei einer URL wird das Element sofort im Repository gelöscht.
$force bool false Wenn true, wird die Löschung auch bei lokal veränderten oder nicht eincheckten Dateien erzwungen. Standardmäßig false, um versehentlichen Datenverlust zu verhindern.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. wenn der Pfad nicht existiert, nicht versioniert ist oder die Datei lokal geändert wurde und $force nicht gesetzt ist).

Beispiele

Datei in lokaler Arbeitskopie zur Löschung vormerken

<?php
// Arbeitskopie liegt unter /var/www/mein-projekt
$pfad = '/var/www/mein-projekt/veraltete-datei.txt';

if (svn_delete($pfad)) {
    echo "Datei erfolgreich zur Löschung vorgemerkt.\n";
    // Jetzt den Commit durchführen, um die Löschung ins Repository zu übertragen
    $ergebnis = svn_commit('Veraltete Datei entfernt', ['/var/www/mein-projekt']);
    if ($ergebnis) {
        echo "Commit erfolgreich. Revision: " . $ergebnis['revision'] . "\n";
    } else {
        echo "Commit fehlgeschlagen.\n";
    }
} else {
    echo "Fehler beim Vormerken der Löschung.\n";
}
?>
Datei erfolgreich zur Löschung vorgemerkt. Commit erfolgreich. Revision: 42

Direktes Löschen eines Elements über Repository-URL

<?php
// Direktes Löschen aus dem Repository (kein separater Commit nötig)
$repoUrl = 'svn://localhost/mein-repo/trunk/veraltetes-verzeichnis';

if (svn_delete($repoUrl)) {
    echo "Verzeichnis direkt aus dem Repository gelöscht.\n";
} else {
    echo "Fehler beim Löschen aus dem Repository.\n";
}
?>
Verzeichnis direkt aus dem Repository gelöscht.

Erzwungenes Löschen einer lokal veränderten Datei

<?php
// Eine lokal veränderte Datei soll trotzdem gelöscht werden
$pfad = '/var/www/mein-projekt/geaenderte-datei.php';

if (svn_delete($pfad, true)) {
    echo "Datei wurde erzwungen zur Löschung vorgemerkt.\n";
} else {
    echo "Fehler beim erzwungenen Löschen.\n";
}
?>
Datei wurde erzwungen zur Löschung vorgemerkt.

// Wichtig · Fallstricke

Achtung: Beim Einsatz von $force = true gehen alle lokalen, noch nicht übertragenen Änderungen an der betroffenen Datei unwiederbringlich verloren. Dieser Parameter sollte daher nur mit Bedacht eingesetzt werden.

Die Funktion erfordert die PECL-Extension svn (pecl.php.net/package/svn), die nicht standardmäßig in PHP enthalten ist und separat installiert werden muss. Auf vielen Systemen ist diese Extension nicht verfügbar; prüfe die Verfügbarkeit mit extension_loaded('svn').

Bei der Übergabe von Repository-URLs aus Benutzereingaben ist besondere Vorsicht geboten, da ansonsten unerwünschte Repository-Inhalte gelöscht werden könnten. Eingaben sollten stets validiert und auf erlaubte Pfade eingeschränkt werden.