Configurare Zend Studio con SVN ed SSH

Dopo un paio d’ore di tentativi ho finalmente messo online il mio repository svn locale. Il server si basa su Fedora Core 5 e come client di accesso uso lo Zend Studio.

L’installazione del server è abbastanza semplice e la descriverò qui di seguito (più per memento personale che per altro).

Il tutorial tratta solo la configurazione per un ambiente di tipo personale, nel caso vogliate configurare un accesso condiviso tra più utenti vi consiglio di integrare il mio tutorial con questo qui (da cui ho preso spunto per alcune cose).

Innanzitutto bisognerà installare svn ed i relativi pacchetti. Di per se il semplice pacchetto subversion è sufficiente per lavorare però se volete accedervi via DAV usare WebSVN per vedere le modifiche ai vostri sorgenti via web dovrete per forza installare qualche altra dipendenza.

Iniziamo quindi ad installare SVN e le rispettive dipendenze per Apache.

yum -y install subversion  mod_dav_svn

Adesso dovremmo creare il parent repository che conterrà tutti i nostri progetti, per farlo basterà da shell (e come utente root) eseguire i seguenti comandi:

root@tartar# mkdir /var/svn/repos -p 
root@tartar# svnadmin create /var/svn/repos/progetto1
root@tartar# chown -R apache.apache /var/svn

personalmente ho creato la directory svn all’interno di /var perchè era la partizione più libera, ma nessuno vi vieta di aggiungere la directory direttamente alla root del sistema o di montarla su qualche altro hd.

ora avete creato il repository per il nuovo progetto “progetto1“. Inizializziamolo mettendoci dentro qualcosa. Per farlo dobbiamo però prima di tutto creare una struttura valida per la directory del nostro progetto:

fullo@tartar# mkdir /tmp/progetto/branches/ -p
fullo@tartar# mkdir /tmp/progetto/tags/
fullo@tartar# mkdir /tmp/progetto/trunk/

e copiamo i file del nostro progetto dentro alla directory trunk

Importiamo ora il progetto indicando il path di svn completo preceduto da file:///

fullo@tartar# svn import /tmp/progetto file:///var/svn/repos/progetto1 -m "initial import"

dopo di che facciamo un bel checkout per inizializzare il repository e scaricarci la directory in locale nella nostra home

fullo@tartar# svn checkout file:///var/svn/repos/progetto1/trunk progettoLOCAL

nella nostra home dovremmo poter vedere la nuova directory progettoLOCAL contenente i file relativi al nostro progetto.

Ma che succede se il server è remoto? In questo caso per fare il checkout non potremo usare il parametro file:/// ma dovremo sostituirlo con svn+ssh://nomeutente@ip.server/ riprendendo l’esempio precedente e presupponendo che l’ip del server sia 192.168.0.2 ed il mio utente sempre fullo la sintassi per fare il checkout sarà:

fullo@tartar# svn checkout svn+ssh://fullo@192.168.0.2/var/svn/repos/progetto1/trunk progettoSSH

Facciamo partire adesso lo Zend Studio, e supponiamo che la nostra macchina di sviluppo non sia quella su cui teniamo i repository Subversion. Andiamo in Tools->Preferences e nel tab Source Control selezioniamo SubVersion. Riavviamo lo Zend (se lo chiede) e creiamo un nuovo progetto.

Adesso nel menù Tools sarà comparsa la voce SubVersion, apritela e selezionate la voce checkout (notate qualcosa di familiare?)

Inserite i dati di accesso visti sopra e date l’ok. Se tutto è stato configurato correttamente la directory del progetto di Zend Studio dovrebbe magicamente riempirsi di file :)

L’autenticazione tramite SSH non è però sempre molto comoda da fare, ed inoltre presuppone di avere un utente registrato sul server remoto. Ed ecco che ci viene incontro Apache con il modulo che abbiamo precedentemente installato sul server.

Una volta installato il modulo tramite yum viene creato da quest’ultimo un file /etc/httpd/cond.d/subversion.conf che avrà al suo interno la seguente struttura (di default commentata):

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /svn/repos>
 # DAV svn
 # any "/svn/repos/foo" URL will map to a repository /svn/repos/foo
 # SVNParentPath /svn/repos
</Location>

decommentiamo e modifichiamo in modo da avere questo risultato

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /repos>
 DAV svn
 SVNPath /var/svn/repos 
 # any "/svn/repos/foo" URL will map to a repository /svn/repos/foo
 # SVNParentPath /svn/repos
</Location>

e fate ripartire apache con il comando

root@tartar# apachectl graceful

Adesso aprendo con un browser l’url http://192.168.0.2/repos (ricordate l’ip fittizio del server?) vedremo il repository in tutta la sua bellezza

Proviamo a vedere se tutto funziona facendo un checkout da http://

fullo@tartar# svn checkout http://192.168.0.2/repos/progetto1/trunk progettoHTTP

se tutto funziona come dovuto dovremmo vedere nella nostra home una cartella chiamata progettoHTTP contenente gli stessi file di quella precedentemente creata con il metodo svn+ssh e chiamata progettoSSH.

Proseguiamo ora con la riconfigurazione dello Zend Studio per accedere al repository tramite Apache+DAV.

Riapriamo il progetto precedentemente creato e facciamo un nuovo checkout indicando come url del server la nuova contenente la connessione http. Et voilà SubVersion funziona senza dover fare l’autenticazione dell’utente remoto! :)

per amor di cronaca ecco le guide che ho seguito (in ordine sparso):

ciuaz

  • beh, semplice, dai. roba da 2 minuti… ;-)

  • Federica

    Ciao,
    innanzitutto complimenti per la guida, che utilizzerò di certo in seguito. Purtroppo al momento sono ferma ad un passo iniziale: volevo vedere come funzionava Zend con svn, quindi ho installato un repository in locale, ho configurato Zend e fatto il checkout, il tutto viene eseguito con successo, il mio problema è che, per ogni file appartenente al progetto, sia esso modificato o no, l’unica voce svn ad essere abilitata è status. Utilizzando status (dentro a Zend) su un file modificato verifico che effettivamente rileva le modifiche, ma allora perché non mi permette di fare ad es. una commit??

    La versione di Zend che uso è la 5.1.0 .

  • Federica

    Problema risolto aggiornando alla versione 5.5 di Zend, grazie!

  • Fabio

    Ciao,
    per quello che mi riguarda non ha funzionato, ho installato Zend Studio , è configurato apache e svnserver, ma non va, facendo il checkout verso un repository in remoto, mi dice che manca qualche file eseguibile o che il repository non funziona, mentre utilizzando eclipse con subclipse(plugin per l’accesso a subversion) tutto è ok , questo con tutti i protocoli sia svn:// sia con svn+ssh://.
    Qualche idea?

  • hai provato a sostituire l’svn di Zend con quello ufficiale (o presente nella tua distro)?

%d bloggers like this: