Sicuro di avere cartelle /.svn/ sul sito live? (Come rimuoverli ma conservare la capacità di aggiornamento svn?)


10

Sto facendo svn update per aggiornare il codice per il mio sito Web PHP, ma lascia le .svn/cartelle dappertutto.

Penso che sia pericoloso lasciare quei file leggibili pubblicamente, ma è molto facile aggiornare il sistema.

C'è un modo per utilizzare svn updateper aggiornare il sistema, ma non per esportare le .svn/cartelle?

Risposte:


21

Se stai usando apache:

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

Ciò impedirà alle persone di accedere alle .svndirectory in remoto (utilizzando il browser) ma è possibile mantenere quindi (e capacità svn) sul progetto.

BTW è possibile sostituire \.svnper \.gito \.cvsse si utilizza qualcosa di diverso rispetto alla sovversione.


e questo bloccherà tutte le directory .svn sul sito Web? ho molte sottodirectory
siliconpi,

attualmente il mio httpd.conf ha <Directory /> Opzioni FollowSymLinks AllowOverride All </Directory> posso aggiungere ciò che hai scritto proprio sotto questo come una cosa separata o le due voci devono essere unite?
siliconpi,

Corrisponderà a qualsiasi directory chiamata, .svnquindi sì.
coredump,

Puoi aggiungerlo separatamente.
coredump,


3

Desideri esportare il codice dall'SVN al sito live ...

Non usare svn updateper quello. L'aggiornamento è destinato all'uso con l'aggiornamento di copie funzionanti, non l'esportazione del codice. Utilizzare svn exportinvece come esporta un albero di directory pulito dal repository specificato.

Il --forceflag consentirà all'esportazione di sovrascrivere i file esistenti.

SVN Esporta immissione manuale


Posso simpatizzare se l'OP non vuole usare export, poiché implica sempre prendere una copia completamente nuova del repository, il che è una seccatura se si tratta di un repository di grandi dimensioni su una piccola connessione (diciamo che il server Web è un server ospitato, ma il tuo repository SVN è nell'ufficio locale e condiviso da un collegamento da 1 Mb). updatesignifica che non è necessario ottenere il tutto ogni volta.
Mark Henderson,

Un punto giusto. Forse esportare in una copia locale del sito, quindi semplicemente risincronizzare le modifiche al server web remoto funzionerebbe in quella situazione? Non ho mai avuto questo problema, quindi non l'ho considerato.
gsreynolds,

2

Non li inserisco nei siti di produzione / live. Perché non voglio che io e / o altri sviluppatori dimentichino la cattiva idea di modificare il codice in tempo reale. Il mio script di installazione filtra i miei file .svn.


@kerner - come li aggiorni allora?
siliconpi,

1
Perché non usare svn exporte non disturbare a filtrarli?
pjmorse,

Ho uno script di installazione che utilizzo per i miei siti e ottimizzo leggermente per soddisfare ciascuno di essi. Di solito fa anche cose come costruire database, tabelle db e utenti db, impostare utenti o amministratori predefiniti, ecc. Quindi, per fare un'esportazione in prod, l'utente prod (come essere umano o uno script) controlla un svn funzionante copia da qualche parte lungo ~ /, quindi esegue lo script di installazione che è un membro di detta copia di lavoro, quindi elimina facoltativamente la copia di lavoro.
ekerner

1

Dovresti cercare un sistema di distribuzione adeguato, come Capistrano . Ciò significa che i server di produzione non necessitano di sovversione e che è possibile distribuire su più server e aggiungere logica personalizzata alle distribuzioni. Inoltre, rende relativamente semplice il rollback delle distribuzioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.