2011-02-05 15 views
6

Usiamo un server SVN DIY in ufficio da circa un anno. È una semplice installazione con SVN installato su un server domestico. Usiamo il tortoise SVN per accedervi Vorrei solo aver imparato un sistema di contol versione anni fa .. Comunque, ovviamente l'accesso al server è perfetto in ufficio sulla LAN 1Gbps ma all'esterno è utilizzabile ma povero, limitato dal Velocità di upload di 50k byte/sec della nostra linea ADSL sul web. Immagino che questo possa migliorare un giorno con "infinito" ma potremmo morire in attesa.Posso creare un repository SVN ospitato "parallelo" sul mio server del mio ufficio?

Mi piacerebbe avere un repository "parallelo" ospitato, per il quale mi rendo conto che pagherò, dove l'accesso è molto più veloce. Questo ci darebbe anche un backup aggiuntivo. Il mio repo è poco meno di 40G, quindi un limite di 100G sarebbe ok. C'è un modo per farlo e rendere i due come specchi tale che commetti (piccoli almeno) sono visibili su entrambi quasi immediatamente? Sto già utilizzando il comando Svnbackup per creare un mirror parallelo sul nostro server, quindi può funzionare in entrambi i modi?

Eventuali suggerimenti o alternative apprezzati.

TIA Brian

risposta

2

Vuoi un server di sola lettura o lettura e scrittura l'accesso a più di un server? Quando è necessario un mirror di sola lettura, è possibile utilizzare svnsync per replicare il server del proprio ufficio su un server mirror.

Quando si desidera eseguire il commit da posizioni diverse, dare un'occhiata a uno strumento distribuito come hg + hgsubversion o git-svn, che possono essere entrambi utilizzati come client asincroni per svn.

+0

Grazie. Leggi e scrivi per favore. Il mio principale utilizzo del www mirror sarebbe quando si è a casa (o fuori dall'ufficio). –

+1

@Brian Non è possibile (facilmente) configurare un cluster di server svn multi-master, poiché il modello di dati di svn non lo consente. È possibile posizionare il server centrale su Internet, causando una perdita di prestazioni nel proprio ufficio. Devi decidere da solo se questa perdita di prestazioni è accettabile per te. Un'alternativa è usare mercurial o git come client svn, dato che questi strumenti ti permettono di lavorare offline. Ma l'approccio DVCS funziona solo quando non hai bisogno di funzionalità come il blocco dei file o il checkout parziale degli alberi. – Rudi

0

Il server SVN Linux standard dispone di hook che consentono di eseguire i propri script sugli eventi. Puoi usare l'hook post-commit (basta inserire uno script chiamato "post-commit" nella directory "hooks").

Ora è possibile emettere un hotcopy dell'intero repository, che è piuttosto semplice da configurare (svnadmin hotcopy from to) e copiare il repository sull'altro host su Internet utilizzando ssh o simili. Puoi farlo su entrambe le macchine e sei bravo.

Svantaggi:

  • Se il repository è grande, allora questo prende un sacco di tempo
  • Attenzione della possibilità che qualcuno si impegna a un repository e qualcun altro all'altro repository contemporaneamente. Questo potrebbe benissimo corrompere tutto. È necessario fare in modo che ciò non accada o trovare un modo bloccare il repository (come spegnere svn durante il processo di copia)
  • È necessario l'accesso alla shell di entrambe le macchine

Si può essere in grado di accelerare le cose salvando il repository su un file locale e trasmettendo solo diff sull'altra macchina.

1

Quello che penso che sia veramente necessario è un proxy slave - questa è una copia di un server di subversion per l'accesso in sola lettura, quando si scrive (ad esso), i commit vengono passati direttamente al master. Mentre leggi molto di più che scrivere, questo fornisce un modo semplice ma efficace per ottenere ciò che desideri.

C'è un sacco di tutorials sul web, ma tutti richiedono di eseguire la sovversione usando l'accesso http (non svnserve). Lo slave è tenuto aggiornato attraverso l'eccellente svnsync e un hook post-commit.

+0

@ gbjbaand: È un'idea geniale, grazie. –

Problemi correlati