Sicher, dass /.svn/ Ordner auf der Live-Site sind? (Wie entferne ich sie, aber behalte die SVN-Aktualisierungsfunktion bei?)

10

Ich mache ein SVN-Update, um den Code für meine PHP-Website zu aktualisieren, aber es .svn/bleiben überall Ordner.

Ich denke, es ist gefährlich, diese Dateien öffentlich lesbar zu lassen, aber es ist sehr einfach, das System zu aktualisieren.

Gibt es eine Möglichkeit, svn updatedas System zu aktualisieren, die .svn/Ordner jedoch nicht zu exportieren ?

siliconpi
quelle

Antworten:

21

Wenn Sie Apache verwenden:

<Directory ~ "\.svn">
    Order allow,deny
    Deny from all
</Directory>

Dadurch wird verhindert, dass Benutzer .svnremote (mithilfe des Browsers) auf Verzeichnisse zugreifen können. Sie können dann jedoch (und die SVN-Funktionen) im Projekt behalten.

BTW können Sie ersetzen \.svnfür \.gitoder \.cvswenn Sie etwas anderes als Subversion verwenden.

Core-Dump
quelle
und dies wird alle .svn-Verzeichnisse auf der Website blockieren? Ich habe viele Unterverzeichnisse
Siliconpi
Derzeit verfügt meine httpd.conf über <Directory /> -Optionen FollowSymLinks AllowOverride All </ Directory> Kann ich das, was Sie direkt darunter geschrieben haben, als separate Sache hinzufügen oder müssen die beiden Einträge zusammengeführt werden?
Siliconpi
Es wird mit jedem Verzeichnis übereinstimmen, das .svnso ja genannt wird.
Coredump
Sie können es separat hinzufügen.
Coredump
3

Sie möchten Ihren Code vom SVN auf die Live-Site exportieren ...

Nicht dafür verwenden svn update. update ist für die Aktualisierung von Arbeitskopien und nicht für den Export des Codes vorgesehen. Verwenden Sie svn exportstattdessen, wenn ein sauberer Verzeichnisbaum aus dem angegebenen Repository exportiert wird.

Mit dem --forceFlag kann der Export die vorhandenen Dateien überschreiben.

SVN Export manuelle Eingabe

gsreynolds
quelle
Ich kann mitfühlen, wenn das OP nicht verwenden möchte export, da immer eine neue Kopie des Repositorys abgerufen werden muss. Dies ist ein Problem, wenn es sich um ein großes Repo für eine kleine Verbindung handelt (sagen wir, der Webserver ist ein gehosteter Server, aber Ihr SVN-Repo befindet sich in Ihrem lokalen Büro und wird von einem 1-MB-Link gemeinsam genutzt. updatebedeutet, dass Sie nicht jedes Mal das Ganze bekommen müssen.
Mark Henderson
Ein fairer Punkt. Vielleicht würde es in dieser Situation funktionieren, auf eine lokale Kopie der Site zu exportieren und dann nur die Änderungen auf den Remote-Webserver zu synchronisieren? Ich hatte dieses Problem nie, also hatte ich es nicht in Betracht gezogen.
Gsreynolds
2

Ich stelle sie nicht in Produktions- / Live-Sites. Weil ich nicht möchte, dass ich und / oder andere Entwickler vergessen, was für eine schlechte Idee es ist, Live-Code zu bearbeiten. Mein Installationsskript filtert meine .svn-Dateien heraus.

ekerner
quelle
@kerner - wie aktualisiert man sie dann?
Siliconpi
1
Warum nicht einfach verwenden svn exportund nicht filtern?
pjmorse
Ich habe ein Installationsskript, das ich für meine Websites verwende, und passe es leicht an. Normalerweise werden auch Datenbanken, DB-Tabellen und DB-Benutzer erstellt, Standardbenutzer oder Administratoren eingerichtet usw. Um einen Export nach Prod durchzuführen, überprüft der Prod-Benutzer (als Mensch oder Skript) einen funktionierenden SVN kopieren Sie irgendwo entlang ~ / und führen Sie dann das Installationsskript aus, das Mitglied der Arbeitskopie ist, und löschen Sie dann optional die Arbeitskopie.
ekerner
1

Sie sollten sich ein geeignetes Bereitstellungssystem wie Capistrano ansehen . Dies bedeutet, dass Ihre Produktionsserver keine Subversion benötigen und Sie auf mehreren Servern bereitstellen und Bereitstellungen benutzerdefinierte Logik hinzufügen können. Es macht es auch relativ einfach, Bereitstellungen zurückzusetzen.

Dhasenan
quelle