SVN server su Suse

by trucchisuse on

Prologo

Qui vediamo come istallare un server SVN su Suse.

Un server SVN è un repository (magazzino / repositori) in standard/formato SVN per i propri progetti software su un computer connesso ad altri (i client o clienti), a può essere usato anche come contenitore di documenti e dati. I client scaricheranno le proprie versioni del progetto software (o anche dati o documenti) e il Server gestirà le revisioni / modifiche / backup / diversificazioni, ecc.. .

Lo standard SVN si è imposto in discapito di CVS e altri per la sua semplicità ed altro ma maggiormente per il fattore di essere fruibile anche via browser web dai client. Ecco perché dobbiamo avere già un server web attivo sulla macchina Server.

Per prima cosa procuratevi il client SVN per fare le prove: Consiglio KdeeSvn.

Segnatevi l’indirizzo IP del server.

Controllate che in Yast->Server_HTTP sia configurato /attivo e che abbiate attivato il modulo SVN : Dav_SVN.

Poi andate su

http://software.opensuse.org/package/subversion

Dove potete installare il server svn con un semplice click-install

Nota: Avrà creato una cartella “svn” sotto /srv nel caso crearla con

Nota: Tutti i comandi vanno dati come root!

mkdir /srv/svn

Dategli per adesso l’accesso completo (libero), poi in seguito potete stringere i permessi per sicurezza.

Nota: Tutti i comandi vanno dati come root!

Primo repositori SVN

-Crearlo

Per prima cosa creiamo il repositori sul vostro server Suse:

mkdir /srv/svn/repos

Poi creiamo automaticamente tutta la struttura interna con:

svnadmin create /srv/svn/repos

Dove /srv/svn/repos è dove metterete (standard OpenSuse) l’entrata del vostro repositori SVN, logico che potete scegliere un’altra destinazione, ma per standard sarebbe meglio usare questo, per il nome (repos) potete scegliere quello che volete ma tenete conto che questo è il nome che userò negli esempi successivi.

-Popolarlo e/o copiarlo

Per popolarlo, non dovete copiare i file sopra, ma partendo da una vostra cartella (esempio in ./home/projects) dove avete i file da trasferire:

svn import ./home/projects file:///srv/svn/repos -m "initial import"

Se volete mettere dei file sul server SVN conviene sempre fare questa operazione (oppure da un client) e mai copiare semplicemente.

Se volete farvi una copia di sicurezza (ovvero una operazione al contrario) del repo SVN conviene fare questo

svn checkout file:///srv/svn/repos/ home/projects

-Demone

Fintanto che il demone (“Servizio” su Unix/Linux) non è attivo logicamente il server SVN non funziona.

Bisogna dagli adesso i parametri nei sui file di configurazione (leggete il Tutorial SVN, il file è punto dove avete creato il repositori + conf/ svnserve.conf ) oppure per testarlo digitate:

svnserve -d --listen-host 1.2.3.4 -r /srv/svn/repos/

Dove ovviamente 1.2.3.4 è l’indirizzo IP statico del server. Infatti questo che gli serve per partire tranquillo il demone.

Nel caso IP dinamico, dovete ripetere ogni volta il comando ogni volta che vostro IP cambia!

Nota: Per farlo partire avete anche Yast-> Servizi di sistema.→svnserve, però attenzione che parte con l’ultimo IP registrato.

Nota: Conviene che anche il server Apache sia già attivo e abbia già IP nella sua configurazione. Potete farlo partire anche da Yast->gestione-servizi o Yast->Server-http.

Potete controllare che sia realmente attivo (porta standard: 3690) con il comando netstat ed qui il man (formula):

netstat --all --programs --numeric-ports | less

Esempio:

netstat –programs svnserve –numeric-port 3690

Il demone si può disattivare con il comando initrd su svnserve, ma questo richiede molto tempo dato che deve essere sicuro di aver finito ogni operazione, però potete cadete nella tentazione di usare kill ma però se lo usate state attenti che nessuno vi acceda al SVN in quel momento.

Comunque rimane attivo se è attivo il servizio Apache, stoppato quello (Apache) si ferma automaticamente.

Operativo

Il vostro SVN è già operativo (avviando il demone), ma avete settato gli accessi? Ci sono ben 3 modi!

PREMESSA:

Per settare il servizio e accessi vi rimando alle regole generali del SVN reperibili seguendo il manuale generale secondo la versione del SVN che usate.

Comunque una guida è qui:

http://www.html.it/guide/guida-subversion/

Qui guide complete in Inglese :

http://svnbook.red-bean.com/en/1.7/

https://forums.opensuse.org/showthread.php/461165-HowTo-Apache2-and-Subversion-%28SVN%29-with-Access-Control-on-openSUSE-11-4

http://download.xskernel.org/howto/svn/Setting_up_a_Subversion_server_using_Apache2.html

Per settare gli accessi (consiglio anch'io di settarlo nei permessi di SVN):

http://www.html.it/pag/17732/livelli-di-accesso/

Accesso Linux

 

Nel caso dato che usate Linux potete Creare un gruppo x gli utenti:

Prima di tutto è necessario creare un nuovo gruppo utente (nell’esempio sarà chiamato subversion) che avrà accesso alla cartella dei sorgenti, dunque si dovrà assegnargli l’utente attuale (nell’esempio nomeutente) e l’utente di apache (chiamato www-user).

Aprire una finestra di terminale e digitare:

sudo addgroup subversion
sudo adduser nomeutente subversion
sudo adduser www-user subversion

OPPURE

Accesso tramite SVN (svn://)

 

Per configurare l’accesso al server del repository, tramite il protocollo in questione, è sufficiente modificare il file /srv/svn/repos/conf/svnserve.conf.

Ad esempio, per configurare i permessi è utile de-commentare le seguenti righe presenti nel file, cancellando il segno di asterisco anteposto alle righe stesse:

 [general]
 password-db = passwd

In questo modo l’autenticazione sarà garantita a tutti gli utenti elencati nel file passwd presente nella stessa cartella. Per aggiungere nuovi utenti al file la sintassi è la seguente:

nomeutente = password
Nota: Per il nome è meglio usare il tutto minuscolo e senza spazi.
Esempio: 
pinco-pallino = 1234
L'utente per accedere dovrà inserire come user "pinco-pallino" e come password "1234".

Una volta configurato, sarà possibile effettuare l’accesso dalla stessa macchina o da un’altra remota solo dopo aver avviato l’applicazione server svnserve con una sintassi simile alla seguente:

svnserve -d --foreground -r /srv/svn/repos

Le opzioni applicate al comando hanno dei significati ben precisi:

  • -d attiva la modalità servizio
  • –foreground esegue il processo in primo piano, utile per operazioni di debug, dunque quando diventate esperti non vi servirà.
  • -r radice del percorso contenente i progetti / repository
  • /srv/svn/repos parametro richiesto dall’opzione precedente di dove è il repository

Una volta avviato il server, esso si metterà in ascolto alla porta predefinita (3690). Per accedere al repository via svn:// sarà sufficiente applicare ai comandi una sintassi simile alla seguente:

svn co svn://nomehost/progetto progetto --username nomeutente

Coerentemente con la propria configurazione, il server richiederà d’inserire la user/password per l’accesso.
Come vedete è facile e se non funziona di solito avete scritto male i file di configurazione.

 

Comandi utili:

Per importare un progetto in SVN :

svn import /srv/svn/repos http://repository -m “Messaggio importazione”

Importare un file dmp (ovvero una copia di un altro repository SN) :

svnadmin load /srv/svn/repos/ < ./filedump5082010-1.dmp > ./messaggio05082010-1.txt

ATTENZIONE: Quando importate delle copie repository assicuratevi che le impostazioni e tipo di SVN sia identico.

 

Creare un repository:

sudo svnadmin create /srv/svn/repos

Creare report con specifiche ovvero potete specificare il motore DB per i dati:

http://svnbook.red-bean.com/en/1.7/svn.reposadmin.planning.html#svn.reposadmin.basics.backends

-Creazione di repository con FSFS:

cd /srv/svn/repos

svnadmin create --fs-type fsfs repos

Creazione di repository con Berkeley Database (BDB):

cd /srv/svn/repos

svnadmin create --fs-type bdb repos

 

-Riavviare il server web:

sudo /etc/init.d/apache2 restart

Per sincronizzare il contenuto di una cartella locale con il repository sarà sufficiente digitare dei comandi simili ai seguenti:

cd /srv/svn/repos
svn update

Si può sfogliare un repository, per conoscerne il contenuto senza eseguire l’operazione di checkout, utilizzando una particolare sintassi per il comando svn:

svn list svn://dominio/cartellaremota

 

Aggiungere file e cartelle al repository remoto:

L’operazione di aggiunta di un file al repository remoto è piuttosto semplice e sfrutta il comando svn con la seguente sintassi:

svn add file svn://dominio/cartellaremota
svn add cartellalocale svn://dominio/cartellaremota

Nel secondo caso, sul repository remoto verranno caricati tutti i file contenuti nella cartella locale selezionata.

 

Ciaooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

 

Leggi il contenuto originale su Blog di trucchisuse

Written by: trucchisuse