Signatur
Beschreibung
svn_export ist Teil der PECL-Erweiterung svn und ermöglicht es, den Inhalt eines Subversion-Repositories oder einer lokalen Arbeitskopie in ein angegebenes Zielverzeichnis zu exportieren. Im Gegensatz zu svn_checkout enthält das Exportverzeichnis keine .svn-Verwaltungsordner, sodass das Ergebnis direkt für Deployments oder Archivierungen verwendet werden kann.
Wenn der Parameter working_copy auf true gesetzt ist (Standard), wird eine bereits ausgecheckte lokale Arbeitskopie exportiert. Ist er false, wird direkt aus dem Repository-URL exportiert. Mit dem optionalen Parameter revision_no kann eine bestimmte Revision angegeben werden; der Wert -1 steht für die aktuellste Revision (HEAD).
Diese Funktion ist besonders nützlich in Deployment-Skripten, bei denen man einen sauberen Stand des Quellcodes ohne Versionskontroll-Metadaten auf einen Produktionsserver übertragen möchte. Sie ersetzt damit den üblichen Shell-Aufruf svn export durch einen nativen PHP-API-Aufruf.
Voraussetzung ist die installierte und aktivierte PECL-Erweiterung svn (pecl install svn). Ohne diese Erweiterung steht die Funktion nicht zur Verfügung.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $from Pflicht | string | Pfad zur lokalen Arbeitskopie oder URL zum SVN-Repository, aus dem exportiert werden soll. Beispiel: https://svn.example.com/repos/myproject/trunk oder /var/www/working-copy. |
|
| $to Pflicht | string | Lokaler Zielpfad, in den der Export geschrieben wird. Das Verzeichnis wird erstellt, wenn es nicht existiert. | |
| $working_copy | bool | true | Gibt an, ob aus einer lokalen Arbeitskopie (true) oder direkt aus dem Repository (false) exportiert wird. |
| $revision_no | int | -1 | Die zu exportierende SVN-Revisionsnummer. Der Wert -1 steht für die neueste Revision (HEAD). Wird nur berücksichtigt, wenn working_copy auf false gesetzt ist. |
Rückgabewert
true zurück, wenn der Export erfolgreich war, andernfalls false. Im Fehlerfall (z. B. ungültige URL, fehlende Rechte) wird eine PHP-Warnung ausgelöst.Beispiele
Export aus einem SVN-Repository-URL
<?php
// Export des Trunks aus einem Remote-Repository in ein lokales Verzeichnis
$repositoryUrl = 'https://svn.example.com/repos/myproject/trunk';
$exportPath = '/var/www/deploy/myproject';
$success = svn_export($repositoryUrl, $exportPath, false);
if ($success) {
echo "Export erfolgreich nach: " . $exportPath;
} else {
echo "Fehler beim Export!";
}
Export einer bestimmten Revision aus dem Repository
<?php
// Export einer spezifischen Revision (z. B. Revision 42) für ein Rollback-Szenario
$repositoryUrl = 'https://svn.example.com/repos/myproject/trunk';
$exportPath = '/tmp/rollback_r42';
$revision = 42;
$success = svn_export($repositoryUrl, $exportPath, false, $revision);
if ($success) {
echo "Revision {$revision} wurde erfolgreich nach {$exportPath} exportiert.";
} else {
echo "Export fehlgeschlagen.";
}
Export aus einer lokalen Arbeitskopie
<?php
// Lokale Arbeitskopie sauber exportieren (ohne .svn-Ordner)
$workingCopy = '/home/developer/myproject';
$exportPath = '/tmp/myproject_clean';
if (svn_export($workingCopy, $exportPath, true)) {
echo "Sauberer Export der Arbeitskopie abgeschlossen.";
} else {
echo "Fehler beim Export der Arbeitskopie.";
}
// Wichtig · Fallstricke
PECL-Abhängigkeit: svn_export ist Teil der PECL-Erweiterung svn und steht nicht in der Standard-PHP-Distribution zur Verfügung. Die Erweiterung muss separat installiert werden.
Sicherheit: Werden Repository-URLs oder Pfade aus Benutzereingaben übernommen, müssen diese streng validiert werden. Andernfalls könnte ein Angreifer beliebige Pfade im Dateisystem exportieren oder auf unberechtigte Repository-Bereiche zugreifen.
Authentifizierung: Für passwortgeschützte Repositories muss die SVN-Authentifizierung vorab über svn_auth_set_parameter konfiguriert werden.
Plattformhinweis: Die Funktion setzt eine funktionierende Subversion-Client-Bibliothek (libsvn) auf dem System voraus. Auf manchen Hosting-Umgebungen ist diese nicht verfügbar.