Signatur
Beschreibung
svn_repos_fs_commit_txn() schreibt eine mit svn_repos_fs_begin_txn2() oder einer ähnlichen Funktion erstellte Transaktion dauerhaft in das Subversion-Repository. Nach dem Commit ist die Transaktion abgeschlossen und eine neue, unveränderliche Revision entsteht im Repository.
Die Funktion ist Teil der PHP-SVN-Erweiterung (pecl/svn) und wird verwendet, wenn man programmatisch Änderungen an einem SVN-Repository vornimmt – etwa beim automatisierten Einspielen von Dateien, Build-Artefakten oder generiertem Code in ein Repository. Ein typischer Arbeitsablauf besteht darin, eine Transaktion zu öffnen, Änderungen daran vorzunehmen (z. B. Dateien hinzufügen oder ändern) und sie dann mit dieser Funktion zu committen.
Schlägt der Commit fehl (z. B. bei Konflikten oder Berechtigungsproblemen), gibt die Funktion -1 zurück oder löst einen Fehler aus. Es empfiehlt sich daher, den Rückgabewert stets zu prüfen und Transaktionen bei Fehlern mit der entsprechenden Abbruchfunktion zu verwerfen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $txn Pflicht | resource | Eine SVN-Transaktions-Ressource, wie sie z. B. von svn_repos_fs_begin_txn2() zurückgegeben wird. |
Rückgabewert
-1 zurückgegeben.Beispiele
Datei in ein SVN-Repository committen
<?php
// Repository und Dateisystem öffnen
$repos = svn_repos_open('/var/svn/myrepo');
$fs = svn_repos_fs($repos);
// Aktuelle HEAD-Revision ermitteln
$headRev = svn_fs_youngest_rev($fs);
// Neue Transaktion basierend auf HEAD starten
$txn = svn_repos_fs_begin_txn2($repos, $headRev, 'deploy-script', 'deploy@example.com');
// Wurzel-Verzeichnis der Transaktion holen
$txnRoot = svn_fs_txn_root($txn);
// Neue Datei anlegen und Inhalt setzen
svn_fs_make_file($txnRoot, 'release-notes.txt');
$stream = svn_fs_apply_text($txnRoot, 'release-notes.txt', null);
fwrite($stream, "Version 1.0 released\n");
fclose($stream);
// Commit durchführen
$newRevision = svn_repos_fs_commit_txn($txn);
if ($newRevision > 0) {
echo "Commit erfolgreich. Neue Revision: " . $newRevision . "\n";
} else {
echo "Commit fehlgeschlagen.\n";
}
// Wichtig · Fallstricke
Voraussetzung: Die PHP-SVN-Erweiterung (pecl/svn) muss installiert und aktiviert sein. Diese Erweiterung ist nicht im PHP-Kern enthalten und muss separat über PECL bezogen werden.
Berechtigungen: Der PHP-Prozess muss Schreibzugriff auf das SVN-Repository haben. Bei unzureichenden Dateisystem-Berechtigungen schlägt der Commit still oder mit einem Fehler fehl.
Fehlerbehandlung: Bei einem nicht erfolgreichen Commit sollte die Transaktion verworfen werden, um Ressourcen freizugeben und inkonsistente Zustände zu vermeiden. Prüfe den Rückgabewert immer auf -1.
Achtung: Diese Funktion arbeitet direkt auf dem Repository-Dateisystem, nicht über das SVN-Netzwerkprotokoll. Sie eignet sich daher nur für lokalen Zugriff auf das Repository.