Le seguenti 521 parole non sono state trovate nel dizionario di 1275 termini (includendo 1275 LocalSpellingWords) e sono evidenziate qui sotto:
abbiamo   abbreviato   abilitare   account   Account   accountmanagerplugin   admin   Aggiorna   aggiorna   aggiornamento   aggiornata   aggiornato   aggiunge   aggiungiamo   aggiunte   aggiunto   aggiustatina   agli   Alias   alias   alla   allora   Allow   altri   Altrimenti   altrimenti   Altro   altro   amd64   ancora   andare   Andate   Andiamo   anonymous   apache   apache2   appeso   application   apportate   approfondita   apps   Apriamo   architettura   assicuratevi   assorbito   attraverso   autentica   autenticato   autenticazione   Auth   authenticated   Authz   authz   automaticamente   autorizzato   autorizzazioni   avere   avviene   based   Basic   basta   bastato   bin   bisogna   bisogno   blocco   branches   bug   buona   cache   cambiamenti   cambiandola   cancellare   cancellato   cancellerà   capitare   capitolo   cartella   cartelle   casi   cd   checkout   chgrp   chiamandoli   chiamare   chiunque   chmod   chown   ciao   ciclo   client   co   codice   collaborativo   commentare   commit   comparire   compatibili   completa   components   composto   conf   conferma   configurare   Configurare   conflitti   conflitto   contattare   Contents   contenuto   Controllate   controllo   copia   copiare   corrente   correnti   corrisponde   cose   cosi   crea   Creare   creare   crt   csr   customizzare   dare   dario   dav   days   delete   dell   dentro   determinato   diamo   dice   direttamente   disco   dispatch   diverse   diversi   dobbiamo   documentazione   dove   dovete   dovrete   Durante   E2   easy   echo   ed   Ed   edgewall   editare   effetto   egg   elimina   eliminate   emerge   emergere   enabled   entriamo   env   Env   environ   environment   eseguibile   eseguite   Esempio   esempio   esiste   estensione   etc   Except   Fa   facile   fare   fate   fcgi   feature   File   file   files   finali   Finito   flag   fondendo   from   funziona   fusi   Ged   genere   genrsa   gentoo   Gentoo   gestione   Gestione   gestire   gestisce   gia   giu   giuseppe   groups   gruppi   hacks   hanno   help   Ho   hostroot   How   howto   htpasswd2   https   identificare   import   indicano   ini   init   initenv   iniziali   inizializzato   iniziare   inizio   inserirlo   installarlo   installata   Installate   installato   intregrato   introduttivo   intuitivo   key   keywords   lettura   li   lib   Limit   limit   linea   lista   lo   locale   locali   Location   location   log   loggati   login   lorenzo   mai   main   manager   Manager   manteniamo   marca   marco   marker   Match   me   meglio   menu   mer   messaggi   messaggio   migliori   mine   mini   Mini   mkdir   mod   modificando   modificare   Modificate   modificate   modificato   modifiche   modifichiamo   modo   modules   momenti   More   Mostra   mostra   move   Name   necessario   new   newrepos   newuser   ninuxdeveloping   noi   nomerepository   nostra   nostro   Note   nuovadir   nuovadirectory   nuove   nuovi   nuovofile   nuovorepos   obbligatoria   openssl   operare   oppure   opzionale   opzione   opzioni   Ora   ora   ordinata   os   out   ovvero   ovviamente   P5   package   pagine   parti   passaggio   passo   password   path   Path   performance   perimeter   permessi   Permessi   Permette   permette   permettere   Permission   permission   pero   pescare   piacere   piattaforme   pippo   piu   plug   Plugin   plugin   Plugins   Poi   poi   policy   portage   Possiamo   possiamo   possibilità   potete   potremmo   precedute   preparato   presente   principale   principali   progetto   Project   project1   propone   puo   qualcosa   quasi   quel   quelle   questi   Qui   qui   r73   r75   rami   ramo   rastayaqosa   recente   registrano   regola   remota   remove   repos   repository   req   request   Require   resolved   restart   revert   revisione   revisioni   Riavviare   riavviate   righe   riguarda   rimandiamo   rinominare   riorganizzare   risolto   risolvere   rispetto   roviniamo   Rv   rw   sappia   Saverio   saverio   scarica   scaricata   scontato   scripts   scrittura   scrivere   secondari   segue   seguendo   seguente   serve   servers   Set   sezione   share   siamo   significativi   significativo   signkey   Similmente   Sistemiamo   smtp   snapshot   sola   solito   sopra   sovrascrivere   special   spedire   spostare   ssl   stabile   stato   status   stderr   stdout   subcomandi   subcomando   subito   Subversion   subversion   successore   sui   sviluppare   sviluppatori   Svn   svn   svnadmin   svnbook   svnpolicy   svnserve   svnuser   svnusers   sys   Table   tags   template   testare   tigris   To   tool   tornare   trac   Trac   trovare   trovate   trunk   Type   udpate   ufficiale   ultima   ultimi   update   Updated   upload   usa   usando   usanza   Usare   usare   usarlo   usate   usato   user   User   users   uso   usr   utente   utenti   Utilizzo   va   valid   var   variabile   varie   vecchia   Vedere   vedere   vediamo   velocemente   vhosts   vi   vicino   vincent   visualizzare   vogliamo   volete   vorrete   vostro   webadmin   webapps   webserver   wedadmin   wsgi   x509   x86  

Nascondi questo messaggio
Italiano English
Modifica History Actions

SvnHowTo

Subversion (SVN) Mini HowTo

Introduzione

Subversion (SVN) si propone di essere il successore di CVS, ovvero un tool (composto da client e server) per lo sviluppo collaborativo. Questo mini howto riguarda sia l'uso con il client (ad un di livello introduttivo) che l'installazione di un server che gestisce repository SVN. Per documentazione piu' completa (installazione, svnserve) ed approfondita rimandiamo alla documentazione ufficiale su http://svnbook.org/ .

Utilizzo di client SVN

Trac

Trac permette di visualizzare il contenuto del repository SVN attraverso un'interfaccia web. Per esempio https://svn.ninux.org/ninuxdeveloping .

trunk, branches, tags

Quando si utilizza svn e' usanza avere 3 directory:

  • trunk - contiene il ramo di sviluppo principale
  • branches - contiene rami di sviluppo secondari
  • tags - contiene snapshot delle altre due directory in momenti significativi dello sviluppo

svn checkout

Esempio:

$svn checkout http://test.ninux.org/svn/pippo/trunk

oppure (abbreviato)

$svn co http://test.ninux.org/svn/pippo/trunk

scarica la revisione piu' aggiornata del contenuto della directory remota pippo/trunk nella directory locale corrente. Questo comando in genere va utilizzato una sola volta inizialmente. Possiamo iniziare a sviluppare modificando la copia di lavoro, ovvero i file scaricati.

svn status

$svn status

Mostra una lista di file. I flag principali:

  • M: file modificato
  • A: file aggiunto
  • D: file cancellato
  • ?: file non sotto il controllo di subversion (i comandi svn non hanno effetto su quel file)

svn update

Aggiorna la copia di lavoro dal repository

$svn update

Mentre svn checkout di solito viene utilizzato una sola volta all'inizio, svn update aggiorna alla revisione piu' recente la copia gia' scaricata con svn checkout. Durante l'update possono comparire alcuni flag:

  • A - file aggiunto (Added)
  • U - file aggiornato (Updated)
  • G - cambiamenti fusi (merGed), quando modifiche locali ed aggiornamento dal repository sono compatibili
  • C - conflitto (Conflict). Le modifiche locali non sono compatibili con quelle nel repository. Vedere piu' giu' come risolvere conflitti.

svn commit

$svn commit -m "risolto bug n. 12"

oppure

$svn ci -m "risolto bug n. 12"

Fa l'upload delle modifiche correnti. L'opzione -m e' obbligatoria ed e' buona regola scrivere un messaggio significativo con la descrizione delle nuove modifiche.

file: nuovi, copiare, rinominare, spostare

Quando si crea un nuovo file, questo non viene aggiunto automaticamente al controllo di subversion (ovvero i comandi svn non hanno effetto su quel file). Per aggiungere un file o una directory al controllo di subversion utilizzare svn add:

$svn add nuovofile.txt

Per le directory si puo' utilizzare

$svn mkdir nuovadirectory

che crea la nuova directory "nuovadirectory" e la aggiunge al controllo di subversion.

Per cancellare file non bisogna mai utilizzare i comandi del sistema operativo, ma il comando svn delete:

$svn delete file.c

Anche per copiare non bisogna utilizzare il sistema operativo, ma

$svn copy file.c ./nuovadir/file.c

Similmente per rinominare e spostare:

$svn move file.c file.cpp

svn help

$svn help copy

svn help mostra l'aiuto per un determinato subcomando di subversion (i subcomandi sono checkout, udpate, commit, etc)

risolvere conflitti: svn resolved

Durante l'update puo' capitare che vicino al nome di un file compaia il flag "C". In questi casi nella directory di lavoro possiamo trovare 4 file, per esempio:

  • file.c.mine: file.c come era prima di fare l'update
  • file.c.r75: file.c revisione 75 (quella "nuova" sul repository)
  • file.c.r73: file.c revisione 73 (quella "vecchia" sulla quale si sono apportate modifiche)
  • file.c: file.c con dei marker <<<<<<<<<<<<, --------- e >>>>>>>>>>>>> che indicano le parti dove ci sono righe in conflitto

Per risolvere il conflitto potremmo:

  • sovrascrivere file.c con la nostra versione
  • sovrascrivere file.c con la revisione 75
  • modificare file.c fondendo le modifiche

Finito di risolvere il conflitto diamo il comando

$svn resolved file.c

che elimina i file file.mine, file.r75 e file.r73 e marca il conflitto di file.c come "resolved".

Quando avviene un conflitto, comunque, e' buona regola contattare gli altri sviluppatori.

esempio di ciclo di lavoro

da fare

svn log

$svn log --limit 10

Mostra gli ultimi 10 messaggi di log (messaggi inseriti con l'opzione -m di svn commit).

svn diff

svn diff ciao.c

Mostra le modifiche del file ciao.c rispetto alla versione scaricata dal repository. Le righe aggiunte sono precedute da un "+", mentre le righe eliminate sono precedute da un "-". Permette anche di vedere le differenze tra varie revisioni.

svn revert

$svn revert ciao.c

usato prima del commit elimina tutte le modifiche locali facendo tornare il file all'ultima revisione scaricata (con svn update o svn checkout) dal repository.

Server Gentoo per repository SVN

In questo capitolo viene spiegato come configurare apache per gestire diversi servers SVN e le relative piattaforme Trac

Installare Subversion

prima di tutto emergere SVN

emerge subversion

poi modificate /etc/conf.d/apache2 ed assicuratevi di avere tutte queste cose:

APACHE2_OPTS="-D DEFAULT_VHOST -D SVN -D SVN_AUTHZ -D DAV -D DAV_FS -D SSL -D SSL_DEFAULT_VHOST -D PHP5"

Aggiungere un repository

svnadmin create /var/svn/nuovorepos

vi /etc/apache2/modules.d/47_mod_dav_svn.conf

ed aggiungere un nuovo blocco location usando come template questo:

<Location /svn/repos>
                DAV svn
                SVNPath /var/svn/repos
                AuthType Basic
                AuthName "Subversion repository"
                AuthUserFile /var/svn/conf/svnusers
                AuthzSVNAccessFile /var/svn/conf/svnpolicy
                Require valid-user
                SSLRequireSSL
</Location>

Specificare un file per gli utenti e un altro file (opzionale) per le autorizzazioni (policy).

Tipicamente li dovete fare in /var/svn/nuovorepos/conf/ chiamandoli

  • svnusers
  • svnpolicy

File delle password

Creare il nuovo file svnuser con questo comando:

htpasswd2 -c /var/svn/newrepos/conf/svnusers newuser

Se il file già esiste invece dovete fare

htpasswd2 /var/svn/newrepos/conf/svnusers newuser

Altrimenti l'opzione -c cancellerà tutto il file

File delle policy (opzionale)

Con questi file l'utente si autentica, pero' vorrete dare diverse autorizzazioni agli utenti. allora dovrete modificare il file svnpolicy come segue:

[test:/trunk]
saverio = rw
lorenzo  = 
* = r

Altro esempio di file delle policy con gruppi:

[groups]

special-users = saverio, giuseppe
all-users = saverio, giuseppe, dario, vincent, marco

[nomerepository:/]
#* =
* =  
@all-users = rw
@special-users = rw

[perimeter:/CARTELLAPRIVATA]
* = 
@special-users = rw

Con questo file diamo la possibilità all'utente Saverio di lettura e scrittura, e all'utente lorenzo, di sola lettura.

Se volete che chiunque sia autenticato sia anche autorizzato a fare tutto, basta commentare la linea presente nel file /etc/apache2/modules.d/47_mod_dav_svn.conf cambiandola da:

 AuthzSVNAccessFile /var/svn/conf/svnpolicy

in

# AuthzSVNAccessFile /var/svn/conf/svnpolicy

Se invece volete permettere la lettura (il checkout) anche a chi non è autenticato allora fate cosi:

<Location /svn/rastayaqosa>
                DAV svn
                SVNPath /var/svn/rastayaqosa
                AuthType Basic
                AuthName "Subversion repository"
                AuthUserFile /var/svn/rastayaqosa/conf/svnusers
                #AuthzSVNAccessFile /var/svn/rastayaqosa/conf/authz
                #Require valid-user

                 <LimitExcept GET PROPFIND OPTIONS REPORT>
                        Require valid-user
                </LimitExcept>
                #SSLRequireSSL
        </Location>

Installare Trac

Trac è un tool web based per gestire codice di un progetto che usa SVN.
Su Gentoo amd64 Trac non è ancora un pacchetto stabile, quindi in /etc/portage/package.keywords

www-apps/trac ~amd64

Se usate una architettura x86 non questo passaggio non è necessario

Per aggiungere un progetto a trac (o meglio per creare un ambiente trac per un progetto):

trac-admin /var/lib/trac/project1/ initenv 

questo comando crea le pagine iniziali che vediamo dal browser quando entriamo in un nuovo ambiente trac

possiamo subito testare l'ambiente con il web-server intregrato dentro trac.. ma.. noi vogliamo usare apache che è molto meglio :)

Sistemiamo i permessi:

chown -Rv  apache /var/lib/trac/project1/

A questo punto dobbiamo fare in modo che il nostro webserver apache sappia come andare a pescare le cartelle dove abbiamo inizializzato in nostro ambiente trac.

creare un file con estensione .conf in

/etc/apache2/vhosts.d

questo file verrà appeso alla configurazione di apache, in questo modo non roviniamo l'http.conf e manteniamo la configurazione di apache più ordinata

Qui c'è un esempio di file, che possiamo chiamare trac.conf. Il blocco Location dice ad apache che la URI /project1 corrisponde su disco alla cartella /var/lib/trac/project1 che è un trac environment Il blocco scripts alias serve ad identificare il trac.cgi Il blocco LocationMatch serve per abilitare l'autenticazione con login e password in trac

<Location /project1> 
                SetEnv TRAC_ENV "/var/lib/trac/project1"
                SetEnv LC_TIME "it_IT"
                Allow from All
</Location>

ScriptAlias /project1 /usr/share/webapps/trac/0.10.1/hostroot/cgi-bin/trac.cgi

#<LocationMatch "/[^/]+/login">
<LocationMatch "/project1/login">
 AuthType Basic
  AuthName "Project 1 Trac"
  AuthUserFile /var/svn/conf/svnusers
  Require valid-user
</LocationMatch>

Riavviare apache2 con /etc/init.d/apache2 restart

Usare WSGI

WSGI ha performance molto migliori sia del cgi che dell'fcgi. Per usarlo bisogna creare un file trac.wsgi eseguibile e con il seguente contenuto:

import sys
sys.stdout = sys.stderr

import os
os.environ['PYTHON_EGG_CACHE'] = '/var/lib/trac/egg-cache'

import trac.web.main
application = trac.web.main.dispatch_request

Ed inserirlo nella directory dei cgi del trac (/usr/share/webapps/trac/0.12.2/hostroot/cgi-bin/). Configurazione di apache (analoga a quella sopra):

<Location /project1> 
                SetEnv TRAC_ENV "/var/lib/trac/project1"
                SetEnv trac.env_path "/var/lib/trac/project1"
                SetEnv LC_TIME "it_IT"
                Allow from All
</Location>

WSGIScriptAlias /project1 /usr/share/webapps/trac/0.12.2/hostroot/cgi-bin/trac.wsgi

<LocationMatch "/project1/login">
 AuthType Basic
  AuthName "Project 1 Trac"
  AuthUserFile /var/svn/conf/svnusers
  Require valid-user
</LocationMatch>

Configurare Trac

Apriamo il file

 /var/lib/trac/project1/conf/trac.ini 

e modifichiamo quello che serve per l'smtp, altrimenti Trac non sarà in grado di spedire l'email di conferma ad i nuovi utenti che si registrano

Trac webadmin - gestione utenti facile

Per customizzare ancora l'interfaccia trac ed attivare la gestione utenti del progetto dal web

Da Trac 0.11 il pacchetto trac-wedadmin è stato assorbito nel core di Trac quindi non c'è più bisogno di installarlo.

Andiamo direttamente a modificare il file:

 /var/lib/trac/project1/conf/trac.ini 

oltre a modificare a piacere seguendo l'intuitivo template, aggiungiamo alla fine questo blocco (si da per scontato che il plug in di trac è gia installato con emerge la passo prima)

[components]
webadmin.* = enabled

Andate a vedere sul web del vostro trac

Ora dobbiamo installare l'account manager plugin. Controllate qui: http://trac-hacks.org/wiki/AccountManagerPlugin le istruzioni di installazione, a me è bastato fare cosi:

easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.10

Trac Permission - Gestione policy SVN da web

Installate questo plugin http://trac-hacks.org/wiki/TracSvnAuthzPlugin per modificare il file delle policy direttamente da web

easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.11

Poi nella sezione 'admin' del Trac, nel menu 'Plugins' trovate questa nuova feature installata e la potete attivare.

Permessi

Ho preparato uno script per modificare velocemente i permessi di trac. Modificate il path della variabile URL ed eseguite questo script:

URL=/var/lib/trac/project1/
echo $URL

trac-admin $URL permission remove anonymous BROWSER_VIEW CHANGESET_VIEW CONFIG_VIEW FILE_VIEW LOG_VIEW MILESTONE_ADMIN MILESTONE_CREATE MILESTONE_DELETE MILESTONE_MODIFY MILESTONE_VIEW REPORT_ADMIN REPORT_CREATE REPORT_DELETE REPORT_MODIFY REPORT_SQL_VIEW REPORT_VIEW ROADMAP_ADMIN ROADMAP_VIEW SEARCH_VIEW TICKET_ADMIN TICKET_APPEND TICKET_CHGPROP TICKET_CREATE TICKET_MODIFY TICKET_VIEW TIMELINE_VIEW TRAC_ADMIN WIKI_ADMIN WIKI_CREATE WIKI_DELETE WIKI_MODIFY WIKI_VIEW


trac-admin $URL permission add authenticated BROWSER_VIEW CHANGESET_VIEW CONFIG_VIEW FILE_VIEW LOG_VIEW MILESTONE_ADMIN MILESTONE_CREATE MILESTONE_DELETE MILESTONE_MODIFY MILESTONE_VIEW REPORT_ADMIN REPORT_CREATE REPORT_DELETE REPORT_MODIFY REPORT_SQL_VIEW REPORT_VIEW ROADMAP_ADMIN ROADMAP_VIEW SEARCH_VIEW TICKET_ADMIN TICKET_APPEND TICKET_CHGPROP TICKET_CREATE TICKET_MODIFY TICKET_VIEW TIMELINE_VIEW TRAC_ADMIN WIKI_ADMIN WIKI_CREATE WIKI_DELETE WIKI_MODIFY WIKI_VIEW

trac-admin $URL permission add anonymous WIKI_VIEW

fatto questo diamo un aggiustatina ai permessi, cosi trac può operare sui files del repository:

cd /var/svn
chgrp -Rv apache project1/
chmod -Rv 775 project1/

ora possiamo editare quasi tutte le opzioni di trac dal web, ovviamente solo se siamo loggati!

se qualcosa non funziona subito riavviate apache!

More info here: http://www.gentoo-wiki.com/HOWTO_Trac

Note finali da riorganizzare

cd /etc/apache2/ssl
openssl genrsa -out svn.ninux.org.key 2048
openssl req -new -key svn.ninux.org.key -out svn.ninux.org.csr
openssl x509 -req -days 1000 -in svn.ninux.org.csr -signkey svn.ninux.org.key -out svn.ninux.org.crt
chmod 400 *