Start · Sprachen · PHP · Referenz · svn_cat

svn_cat

Funktion

Gibt den Inhalt einer Datei aus einem Subversion-Repository als String zurück.

seit PHP 0.1.0 Kategorie: misc

Signatur

svn_cat(string $repos_url, int $revision_no = SVN_REVISION_HEAD): string|false

Beschreibung

svn_cat() liest den Inhalt einer Datei direkt aus einem SVN-Repository aus, ähnlich wie das Kommandozeilenwerkzeug svn cat. Die Funktion gehört zur PECL-Erweiterung svn und ermöglicht es, auf Repository-Inhalte zuzugreifen, ohne eine lokale Arbeitskopie auschecken zu müssen.

Als erstes Argument wird die vollständige URL zur Datei im Repository übergeben (z. B. http://svn.example.com/repos/projekt/trunk/datei.txt). Optional kann eine Revisionsnummer angegeben werden, um den Dateiinhalt einer bestimmten Revision abzurufen. Wird keine Revisionsnummer übergeben, liefert die Funktion den Inhalt der HEAD-Revision (neueste Version).

Die Funktion ist besonders nützlich, wenn Skripte automatisiert auf Repository-Inhalte zugreifen sollen, beispielsweise um Konfigurationsdateien, Changelog-Einträge oder Quellcode-Dateien aus einem SVN-Repository direkt in eine Webanwendung einzubinden, ohne ein vollständiges Checkout durchzuführen.

Schlägt der Zugriff fehl (z. B. wegen ungültiger URL, fehlender Berechtigungen oder nicht vorhandener Revision), gibt die Funktion false zurück und erzeugt eine PHP-Warnung.

Parameter

Name Typ Default Beschreibung
$repos_url Pflicht string Die vollständige URL zur Datei im SVN-Repository, z. B. http://svn.example.com/repos/trunk/README.txt. Lokale Pfade mit file:///-Schema sind ebenfalls möglich.
$revision_no int SVN_REVISION_HEAD Die Revisionsnummer, deren Dateiinhalt abgerufen werden soll. Standardmäßig wird SVN_REVISION_HEAD verwendet, was der neuesten Revision entspricht.

Rückgabewert

Typ
string|false
Beschreibung
Gibt den Inhalt der angegebenen Datei als String zurück. Im Fehlerfall (ungültige URL, Berechtigungsproblem, nicht vorhandene Revision) wird false zurückgegeben.

Beispiele

Inhalt der HEAD-Revision einer Datei abrufen

<?php
// PECL-Erweiterung 'svn' muss installiert sein
$url = 'http://svn.example.com/repos/meinprojekt/trunk/README.txt';

$inhalt = svn_cat($url);

if ($inhalt === false) {
    echo 'Fehler: Datei konnte nicht geladen werden.';
} else {
    echo htmlspecialchars($inhalt);
}
# Mein Projekt Dies ist die README-Datei des Projekts...

Dateiinhalt einer bestimmten Revision abrufen

<?php
// Inhalt von README.txt in Revision 42 abrufen
$url = 'http://svn.example.com/repos/meinprojekt/trunk/README.txt';
$revision = 42;

$inhalt = svn_cat($url, $revision);

if ($inhalt !== false) {
    echo "Inhalt aus Revision $revision:\n";
    echo htmlspecialchars($inhalt);
} else {
    echo "Revision $revision konnte nicht geladen werden.";
}
Inhalt aus Revision 42: # Mein Projekt (v1.0) Erste stabile Version...

Changelog-Datei aus Repository in Webanwendung einbinden

<?php
// Lokales Repository über file://-Schema ansprechen
$url = 'file:///var/svn/repos/meinprojekt/trunk/CHANGELOG.md';

$changelog = svn_cat($url);

if ($changelog !== false) {
    // Ausgabe sicher für HTML aufbereiten
    echo '<pre>' . htmlspecialchars($changelog, ENT_QUOTES, 'UTF-8') . '</pre>';
} else {
    echo '<p>Changelog nicht verfügbar.</p>';
}
<pre>## Version 2.1.0 - Feature X hinzugefügt - Bugfix Y behoben </pre>

// Wichtig · Fallstricke

Voraussetzung: Die PECL-Erweiterung svn muss installiert und aktiviert sein (pecl install svn). Diese Erweiterung ist nicht im PHP-Kern enthalten und muss separat installiert werden.

Sicherheitshinweis: Wenn die Repository-URL aus Benutzereingaben stammt, muss sie unbedingt validiert und auf erlaubte Präfixe geprüft werden, um den Zugriff auf unbeabsichtigte Ressourcen zu verhindern. Geben Sie den Rückgabewert niemals ungefiltert an den Browser aus – verwenden Sie stets htmlspecialchars().

Authentifizierung: Falls das Repository eine Authentifizierung erfordert, können Zugangsdaten direkt in der URL eingebettet werden (http://user:password@svn.example.com/...). Sicherer ist jedoch die Verwendung von svn_auth_set_parameter().

Binäre Dateien: svn_cat() kann auch binäre Dateien zurückgeben; der Rückgabewert ist in diesem Fall ein roher Byte-String. Für Textdateien empfiehlt es sich, die Zeichenkodierung zu beachten.