Start · Sprachen · PHP · Referenz · svn_update

svn_update

Funktion

Aktualisiert eine SVN-Arbeitskopie auf eine bestimmte Revision oder auf den neuesten Stand des Repositories.

seit PHP 0.1.0 Kategorie: misc

Signatur

svn_update(string $path, int $revno = SVN_REVISION_HEAD, bool $recurse = true): int|false

Beschreibung

svn_update() führt eine SVN-Update-Operation auf dem angegebenen lokalen Pfad (Arbeitskopie) durch – vergleichbar mit dem Befehl svn update auf der Kommandozeile. Dabei werden lokale Dateien mit den Änderungen aus dem Repository synchronisiert.

Mit dem Parameter $revno kann eine spezifische Revision angegeben werden, auf die aktualisiert werden soll. Standardmäßig wird SVN_REVISION_HEAD verwendet, was der aktuellsten Revision im Repository entspricht. Dies ist nützlich, wenn man eine Arbeitskopie auf einen bestimmten historischen Stand bringen möchte.

Der Parameter $recurse steuert, ob das Update rekursiv auf Unterverzeichnisse angewendet wird. Bei true (Standard) werden alle Unterverzeichnisse mitaktualisiert; bei false wird nur das angegebene Verzeichnis selbst aktualisiert.

Diese Funktion ist Teil der PECL-Erweiterung svn und muss separat installiert werden. Sie eignet sich für Deploymentskripte oder automatisierte Build-Prozesse, bei denen SVN-Arbeitskopien programmatisch aktuell gehalten werden sollen.

Parameter

Name Typ Default Beschreibung
$path Pflicht string Lokaler Dateisystempfad zur SVN-Arbeitskopie, die aktualisiert werden soll. Kann ein absoluter oder relativer Pfad sein.
$revno int SVN_REVISION_HEAD Revisionsnummer, auf die die Arbeitskopie aktualisiert werden soll. Standardmäßig wird SVN_REVISION_HEAD verwendet, was der neuesten Revision im Repository entspricht.
$recurse bool true Gibt an, ob das Update rekursiv auf alle Unterverzeichnisse angewendet werden soll. Bei false wird nur das direkte Verzeichnis aktualisiert.

Rückgabewert

Typ
int|false
Beschreibung
Gibt die Revisionsnummer zurück, auf die die Arbeitskopie nach dem Update zeigt, oder false bei einem Fehler (z. B. wenn der Pfad keine gültige SVN-Arbeitskopie ist oder das Repository nicht erreichbar ist).

Beispiele

Arbeitskopie auf den neuesten Stand aktualisieren

<?php
// Arbeitskopie im Verzeichnis /var/www/meinprojekt auf HEAD aktualisieren
$revision = svn_update('/var/www/meinprojekt');

if ($revision !== false) {
    echo "Arbeitskopie erfolgreich auf Revision {$revision} aktualisiert.\n";
} else {
    echo "Fehler beim Aktualisieren der Arbeitskopie.\n";
}
Arbeitskopie erfolgreich auf Revision 142 aktualisiert.

Arbeitskopie auf eine bestimmte Revision zurücksetzen

<?php
// Arbeitskopie auf Revision 100 zurücksetzen (ohne Rekursion in Unterordner)
$zielRevision = 100;
$ergebnis = svn_update('/var/www/meinprojekt', $zielRevision, false);

if ($ergebnis !== false) {
    echo "Arbeitskopie steht jetzt auf Revision {$ergebnis}.\n";
} else {
    echo "Update auf Revision {$zielRevision} fehlgeschlagen.\n";
}
Arbeitskopie steht jetzt auf Revision 100.

// Wichtig · Fallstricke

Installation: Die Funktion erfordert die PECL-Erweiterung svn (pecl install svn). Auf vielen Standardinstallationen ist sie nicht verfügbar.

Berechtigungen: Der PHP-Prozess muss Schreibrechte auf die Arbeitskopie besitzen und Lesezugriff auf das SVN-Repository (ggf. inkl. Zugangsdaten). Credentials können mit svn_auth_set_parameter() gesetzt werden.

Konflikte: Bei Merge-Konflikten zwischen lokalen Änderungen und Repository-Änderungen kann das Update fehlschlagen. In solchen Fällen sollte svn_revert() oder eine manuelle Konfliktlösung erfolgen.

Sicherheit: Pfade, die aus Benutzereingaben stammen, sollten vor der Übergabe validiert und bereinigt werden, um Path-Traversal-Angriffe zu verhindern.