Signatur
Beschreibung
svn_repos_recover ist Teil der PECL-Erweiterung svn und führt die Wiederherstellungsroutinen an einem lokalen Subversion-Repository durch. Dies entspricht dem Kommandozeilenbefehl svnadmin recover. Die Funktion ist nützlich, wenn ein Repository nach einem Systemabsturz oder einem unerwarteten Prozessabbruch in einem inkonsistenten Zustand hinterlassen wurde.
Typische Anwendungsfälle sind automatisierte Wartungsskripte oder administrative Tools, die ein Repository nach einem Fehler wieder in einen nutzbaren Zustand versetzen müssen. Die Funktion prüft dabei intern die Datenbankstrukturen des Repositories und versucht, ausstehende Transaktionen sauber abzuschließen oder zurückzurollen.
Wichtig: Die Funktion sollte nur aufgerufen werden, wenn kein anderer Prozess auf das Repository zugreift, da ansonsten Datenverlust oder weitere Inkonsistenzen entstehen können. Vor dem Aufruf sollte sichergestellt werden, dass alle Repository-Zugriffe gesperrt sind.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $path Pflicht | string | Lokaler Dateisystempfad zum Subversion-Repository, z. B. /var/svn/myrepo. Ein URL-Pfad (wie svn://...) ist nicht gültig — es muss ein direkter Dateisystempfad sein. |
Rückgabewert
true zurück, wenn die Wiederherstellungsprozedur erfolgreich abgeschlossen wurde. Gibt false zurück oder erzeugt eine Warnung, wenn das Repository nicht gefunden wurde, nicht lesbar ist oder die Wiederherstellung fehlschlug.Beispiele
Einfache Repository-Wiederherstellung
<?php
$repoPath = '/var/svn/meinprojekt';
if (svn_repos_recover($repoPath)) {
echo "Wiederherstellung erfolgreich abgeschlossen.";
} else {
echo "Fehler: Wiederherstellung fehlgeschlagen.";
}
Automatisiertes Wartungsskript mit Pfadprüfung
<?php
$repos = [
'/var/svn/projekt-alpha',
'/var/svn/projekt-beta',
];
foreach ($repos as $repoPath) {
if (!is_dir($repoPath)) {
echo "Warnung: Verzeichnis nicht gefunden: {$repoPath}\n";
continue;
}
echo "Starte Wiederherstellung für: {$repoPath}\n";
$result = svn_repos_recover($repoPath);
if ($result) {
echo " -> Erfolgreich wiederhergestellt.\n";
} else {
echo " -> Wiederherstellung fehlgeschlagen!\n";
}
}
// Wichtig · Fallstricke
Achtung: Diese Funktion gehört zur PECL-Erweiterung svn, die separat installiert werden muss (pecl install svn). Sie ist nicht in der Standard-PHP-Distribution enthalten.
Exklusiver Zugriff erforderlich: Die Wiederherstellungsprozedur darf nur durchgeführt werden, wenn kein anderer Prozess (z. B. Apache mit mod_dav_svn oder ein laufender svnserve-Daemon) auf das Repository zugreift. Andernfalls kann die Operation fehlschlagen oder zu Datenbeschädigung führen.
Es wird empfohlen, vor dem Aufruf alle Repository-Zugriffe zu sperren und nach der Wiederherstellung ein svnadmin verify (über svn_repos_verify oder die Kommandozeile) durchzuführen, um die Integrität sicherzustellen.