2011-01-13 14 views
8

Sono nuovo di SVN e c'è qualcosa in cui sono bloccato. Per molto tempo ho sviluppato siti Web localmente (configurazione MAMP) e poi ftping l'intero sito dal vivo quando è pronto. Qualsiasi piccola modifica aggiuntiva che faccio direttamente sul sito live e ogni tanto scaricherò nuovamente tutti i file sul server live sul mio localhost (dato che non riesco mai a ricordare tutti i file che ho modificato). Ovviamente questo non è il modo migliore di fare le cose. Ero curioso di sapere come installare SVN su un server web live, quindi ogni modifica che apporto localmente verrà inviata sul sito web quando lo dirò. Dove posso creare il repository SVN? /domain.com/www/svn? Posso creare la directory www come il repository effettivo, e se è così questa cattiva pratica?Come usare svn su un server live Apache?

+1

Il server Web live dispone di connettività al server Subversion? – jgifford25

risposta

7

Non creare il repository nella directory del server Web! Questa è la prima parte del tuo problema.

Il repository può essere utilizzato ovunque, ma non inserirlo nella directory del server web.

Quando si configura Apache httpd (se è quello che si sta utilizzando), configurarlo per ignorare .svn cartelle in questo modo:

<DirectoryMatch \.svn> 
    Order allow,deny 
    Deny from all 
</DirectoryMatch> 

Ora, da qualche altra parte, diverso da server web, creare un Subversion repository. Effettua il checkout da quel repository in una directory di lavoro da qualche altra parte che non è nella directory del tuo server web. Ora puoi importare tutti i file presenti nel tuo repository e trasferirli nel tuo repository Subversion.

Una volta fatto, è possibile andare nella directory del server Web in cui si desidera visualizzare questi file e fare un checkout.

Si dovrebbe avere tre cose:

  1. un repository Subversion che è non nella directory del server web.
  2. Una directory di lavoro che contiene tutti i file nel tuo sito Web che è non nella directory del server web.
  3. Una directory di lavoro che si trova nella directory del server web.

Il piano è questo: si apportano le modifiche nella directory di lavoro che non si trova nella directory del server Web. Puoi fare i tuoi test qui e commettere le tue modifiche qui. Anche tu fai tutti i tuoi test qui.

Una volta che sei soddisfatto di tutto, puoi quindi fare uno svn update nella directory di lavoro di Subversion che si trova nella directory del tuo server web. Quindi, fai il tuo lavoro al di fuori del webserver, prova, e poi fai un svn update nella directory del webserver.

Se si vuole essere davvero fantasiosi, è possibile creare un ramo Web che rappresenterebbe il codice nella directory del server web. Quindi, puoi controllare il tuo codice dentro e fuori tutto quello che vuoi. Quando sei pronto per implementarlo nel tuo sito Web, puoi unirlo al ramo web. Quando aggiorni la directory di lavoro nella directory del tuo server web, verrà solo inserito il codice sul ramo web.

In effetti, è possibile automatizzare tale processo con una sorta di cronjob. Si porta giù il sito Web, si aggiorna la directory di lavoro di subversion nella directory del server Web e quindi si riavvia il sito Web. Ciò garantisce che i file visualizzati da un utente Web non vengano modificati da sotto di essi.

+0

Grazie mille, penso che tu abbia risposto alla mia domanda, ma devo ancora fare qualche altra ricerca su svn da parte mia per assicurarmi di capirlo. Ho trovato un diagramma veloce, puoi controllare questo e vedere se sto capendo correttamente? http://danramosd.com/svn_diagram.png – dan

+0

Siamo spiacenti, non ho visto il diagramma. I primi due capitoli del [libro di Subversion] (http://svnbook.red-bean.com/en/1.5/index.html) spiegano come funziona. È uno dei migliori manuali open source che abbia mai visto. Poiché Subversion è gratuito, scaricalo e segui gli esempi nel libro. Con in una settimana, avrai un'idea eccellente di come funziona Subversion. Uso Git e Subversion per i miei progetti, ma preferisco Subversion per vari motivi. –

+0

buon consiglio per bloccare le cartelle .svn dalle richieste http. –

1

vorrei impostare una struttura in checkout svn (sulla propria macchina locale) che corrisponde ai file necessari per memorizzare (e non corrispondono necessariamente la struttura del server), per esempio:

my-project 
my-project/docs/README.txt  (any documentation you want to write) 
my-project/www/index.html (etc) 

e presto. Poi,

(1) Se si ha accesso a eseguire comandi sul server, vorrei accedere e fare ad esempio:

cd /domain.com 
rm -rf www 
svn co https://svn.myserver.com/my-project/www www 

(2) In caso contrario, vorrei estrarre i file sul computer locale e inviarli via ftp al server.

L'opzione (1) è migliore ma anche con l'opzione (2) si hanno dei vantaggi rispetto alla configurazione attuale. Se si modificano i file sul server, è possibile reindirizzare l'intera directory alla propria casella locale in una nuova directory, quindi "impegnare" i file sul server di subversion. Subversion (con le directory .svn, che è necessario copiare/dal server) saprà quali file sono stati modificati.

Problemi correlati