Signatur
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
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 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";
}
// 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.