SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
Xavier Sala Pujolar
Institut Cendrassos
CFGS Desenvolupament d'aplicacions Web
M8 - Desplegament d'aplicacions web
Subversion
UF4 Control de versions i
documentació
Desenvolupament d'Aplicacions Web
Subversion
●
Es tracta d'un sistema de control de versions
centralitzat que va néixer amb la idea de
reemplaçar CVS
– Per això van posar molt d'èmfasi en solucionar els
problemes detectats a CVS
●
Actualment és un projecte de codi obert de la
fundació Apache
http://subversion.apache.org/
Desenvolupament d'Aplicacions Web
Sistemes CVS Centralitzats
●
Es té un repositori centralitzat en el que s'hi
van pujant i descarregant els canvis
Hi ha un repositori
central que té la
versió PRINCIPAL
Els clients es
descarreguen els
canvis dels altres i
en fan de propis i
els pugen al
repositori
REPOSITORI
Desenvolupament d'Aplicacions Web
Subversion
●
El repositori pot ser accedit de diferents
formes:
file://
http://
https://
svn://
svn+ssh://
Accés al
repositori en
local
Accés al repositori
per xarxa amb el
protocol svn
Accés al repositori
per xarxa per
HTTP via DAV
Desenvolupament d'Aplicacions Web
Importar un projecte
●
Tot comença quan un client importa un projecte
al repositori
REPOSITORI
Gos
$ svn import animals
svn://repositori/animals
Animals.txt
1
Desenvolupament d'Aplicacions Web
Gos
Animals.txt
Gos
Animals.txt
Gos
Animals.txt
Descarregar un projecte
●
Els clients poden descarregar-se el projecte
REPOSITORI
Gos
$ svn co svn://repositori/animals
Animals.txt
1 1
1
1
Desenvolupament d'Aplicacions Web
Identificar revisions
●
Subversion manté un número per identificar
tots els canvis que es facin en el repositori
Gos
Animals.txt
Gos
Gat
Gos
Gat
Gallina
2
1
3
Cada canvi (el faci qui
el faci) incrementa el
número de versió
$ svn log
Els comentaris
en les versions
$ svn diff -r 3 fitxer.txt
Les diferències
entre versions
Desenvolupament d'Aplicacions Web
Directori de treball
●
El creador del projecte també l'ha de
descarregar
Al descarregar-lo el
projecte es crea en un
directori de treball
Es reconeixen
perquè tenen un
subdirectori
“ocult”
anomenat .svn
amb metadades
Des de dins del
directori ja no
caldrà
especificar més
el servidor
Desenvolupament d'Aplicacions Web
Refrescar el projecte
●
Els clients poden treballar amb les seves còpies
sense que això afecti a ningú més
REPOSITORI
Gos
Animals.txt
Gos
Gat
Animals.txt
Gos
Animals.txt
Gos
Animals.txt
Sense
canvis
$ svn update
Si algú actualitza
rebrà el que hi ha
en el repositori
1 1
1
1
Desenvolupament d'Aplicacions Web
Comprovar què hem canviat
●
Sempre es pot veure què s'ha canviat en el
directori de treball i està pendent
REPOSITORI
Gos
Animals.txt
Gos
Gat
Animals.txt
Gos
Animals.txt
Gos
Animals.txt
$ svn status
M Animals.txt
1 1
1
1
El primer caràcter
indica què hem fet en
el fitxer: Modificat
Desenvolupament d'Aplicacions Web
Els arxius no s'afegeixen sols
●
Si algú vol afegir/treure un arxiu del projecte
ho ha d'indicar explícitament
REPOSITORI
Gos
Animals.txt
Gos
Gat
Animals.txt
Gos
Animals.txt
Gos
Animals.txt
$ svn add Animals2.txt
M Animals.txt
1 1
1
1
El primer caràcter
indica què hem fet en
el fitxer: Modificat
Peix
Animals2.txt
1
Desenvolupament d'Aplicacions Web
Actualitzar un projecte
●
Un cop acabin de fer les modificacions els
clients pugen els canvis al repositori
REPOSITORI
Gos
Animals.txt
Gos
Gat
Animals.txt
Gos
Animals.txt
Gos
Animals.txt
$ svn commit -m “Afegit gat”
Gos
Gat
1 2
1
1
2
Desenvolupament d'Aplicacions Web
Gos
Gat
Actualitzar un projecte
●
Els clients es descarreguen la darrera versió del
projecte
REPOSITORI
Gos
Animals.txt
Gos
Gat
Animals.txt
Gos
Animals.txt
Canvis
$ svn update
Gos
Gat
Animals.txt
1
2
2
1
2
Desenvolupament d'Aplicacions Web
Gos
Gat
Versions del projecte
●
El repositori manté versions de tots els canvis
REPOSITORI
Gos
Animals.txt
Gos
Gat
Animals.txt
Gos
Animals.txt
Gos
Gat
Animals.txt
1
2
En qualsevol moment
es pot tornar a una
versió anterior
2
1
1
$ svn update -r 1
El
número
de versió
Desenvolupament d'Aplicacions Web
Problema de compartir...
●
Si dos clients modifiquen alhora el mateix arxiu
en el mateix lloc i un fa commit...
REPOSITORI
Gos
Animals.txt
Gos
Gat
Gallina
Animals.txt
Gos
Gat
Conill
Animals.txt
Gos
Animals.txt
$ svn commit -m “Afegida Gallina”
Gos
Gat
Gos
Gat
Gallina
3
1
1
1
2
3
Desenvolupament d'Aplicacions Web
Problema de compartir...
●
Quan ho faci l'altre si no es fa res tenim un
problema...
REPOSITORI
Gos
Animals.txt
Gos
Gat
Gallina
Animals.txt
Gos
Gat
Conill
Animals.txt
Gos
Animals.txt
$ svn commit -m “Afegit gat”
Gos
Gat
Gos
Gat
Gallina
Gos
Gat
Conill
3
1
1
1
2
3
Desenvolupament d'Aplicacions Web
Problema de compartir...
●
Subversion “mescla” automàticament els canvis
que no porten conflictes ...
REPOSITORI
Gos
Animals.txt
Gos
Gat
Gallina
Animals.txt
Gos
Gat
Conill
Animals.txt
Gos
Gat
Animals.txt
Gos
Gat
Gos
Gat
Gallina Desactualitzada
2
1
3 2
2
3
2
3
Si els canvis són en els
mateixos llocs es crea
un conflicte
Desenvolupament d'Aplicacions Web
Problema de compartir...
●
Subversion soluciona el conflicte avisant de que
la versió de treball està desactualitzada
REPOSITORI
Gos
Animals.txt
Gos
Gat
Gallina
Animals.txt
Gos
Gat
Conill
Animals.txt
Gos
Gat
Animals.txt
$ svn commit -m “Afegit gat”
svn: Commit failed (details follow):
Gos
Gat
Gos
Gat
Gallina Desactualitzada
2
1
3 2
2
3
2
3
Desenvolupament d'Aplicacions Web
Problema de la compartició
●
Es rebutja el commit i obliga al client a fer un
'update' per resoldre el conflicte
No sempre és
possible resoldre
els conflictes
automàticament
Desenvolupament d'Aplicacions Web
Resolució de conflictes
●
Quan s'actualitza el repositori deixa que l'usuari
prengui la decisió de com resoldre el conflicte
Editar o
veure les
diferències
Triar una de
les dues
versions
O deixar-ho
per més
endavant
Desenvolupament d'Aplicacions Web
Resoldre
●
En cas de posposar-ho es pot resoldre amb una
comanda svn que digui quin és el correcte
$ svn resolve --accept working fitxer.txt
El fitxer
correcte és el
de la còpia de
treball
$ svn revert fitxer.txt
Descartar
els meus
canvis
Desenvolupament d'Aplicacions Web
Bloqueig de fitxers
●
Subversion ofereix la possibilitat de bloquejar
els fitxers perquè ningú més els pugui modificar
$ svn lock fitxer.txt -d “Bloquejat”
'fitxer.txt' locked by user 'xavier'.
$ svn unlock fitxer.txt
No es pot modificar pels altres usuaris fins
que sigui desbloquejat
Desenvolupament d'Aplicacions Web
$ svn add *.txt
$ svn delete fitxer.txt
$ svn mv fitxer2.txt fitxer.txt
$ svn copy fitxer.txt fitxer3.txt
$ svn cat fitxer.txt
$ svn ls
Gestió dels fitxers
●
Es poden gestionar els fitxers a emmatzemar
en el repositori
MEU
Desenvolupament d'Aplicacions Web
Perquè serveix fer “branques”?
●
Es solen fer branques quan:
– S'ha de fer una modificació important que
pot deixar el projecte principal “inestable”
– Quan es vol fer un projecte derivat que
tingui diferències puntuals del principal
Desenvolupament d'Aplicacions Web
Branching
●
En Subversion es poden crear projectes derivats
de la línia principal
Trunk
La línia principal és
anomenada Trunk
Les derivacions
són branches
Desenvolupament d'Aplicacions Web
Crear una branca
●
Crear una branca és copiar la branca principal
en un altre directori
$ svn copy http://repositori/animals/trunk
http://repositori/animals/branches/animals-marins
trunkRepositori
branches
animals-marins
Desenvolupament d'Aplicacions Web
Branching...
●
Però subversion no té internament el concepte
de “branching”. Només és una còpia de fitxers i
directoris
trunk
animals
branches animalets
Es poden
copiar a
qualsevol lloc
/
Desenvolupament d'Aplicacions Web
Merging
●
En subversion el procés de copiar dades d'una
branca a una altra s'anomena barrejar
(“merging”)
trunkRepositori
branches
animals-marins
Copiar els
canvis
Desenvolupament d'Aplicacions Web
Sincronitzar de trunk
●
És corrent que les branques a més de fer la
seva feina sincronitzin els canvis que es
produeixin en la branca principal
Si es va sincronitzant
periòdicament no hi
haurà sorpreses si es
reintegra
$ svn merge ^/animals/trunk
Desenvolupament d'Aplicacions Web
Barrejar branques
●
Subversion permet copiar diferències entre
branques “a la carta”
$ svn merge -c 2345
$ svn diff -c 2345
Veure les
diferències amb la
versió 2345
Integrar els canvis
de la versió 2345
Desenvolupament d'Aplicacions Web
Reintegrar branques
●
Moltes vegades l'objectiu final de les branques
és reintegrar-se a la línia principal
$ svn merge –reintegrate
^/animals/branches-/animalets
Desenvolupament d'Aplicacions Web
Subversion
Servidor de subversion
Desenvolupament d'Aplicacions Web
Subversion
●
A través de svnadmin es pot gestionar
qualsevol repositori Subversion
REPOSITORI
# svnadmin create /opt/repositori
# chown -R www-data:svn repositori
# chmod -R g+rws repositori
Adaptar
permisos
Desenvolupament d'Aplicacions Web
Subversion
●
El repositori pot ser accedit de diferents
formes:
file://
http://
https://
svn://
svn+ssh://
Accés al
repositori en
local
Accés al repositori
per xarxa amb el
protocol svn
Accés al repositori
per xarxa per
HTTP via DAV
Desenvolupament d'Aplicacions Web
file:///
●
La forma més senzilla d'accedir-hi és
directament:
# svn co file:///opt/repositori
Els permisos els
donarà el sistema
operatiu
Desenvolupament d'Aplicacions Web
WebDAV
●
Per accedir al repositori via WebDAV cal un
servidor web i el plugin de DAV i Subversion
●
S'accedirà al repositori fent servir una URL web
# apt-get install subversion libapache2-svn
apache2
# svn co http://192.168.3.22/svn
# svn co https://192.168.3.22/svn
Més seguretat
Desenvolupament d'Aplicacions Web
Configuració WebDAV
●
La configuració es defineix al directori
/etc/apache2/mods-available/dav_svn.conf en el
que s'hi defineix un Location
<Location /svn>
DAV svn
SVNPath /opt/repositori
AuthType Basic
AuthName "Repository"
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
Els permisos els
definirà el
servidor web
Desenvolupament d'Aplicacions Web
WebDaV
●
S'hi pot accedir amb el client Subversion però
també amb un navegador web
●
S'han de crear els usuaris i les contrasenyes
# htpasswd -c /etc/subversion/passwd manel
El camí el
defineix
Apache
Desenvolupament d'Aplicacions Web
El protocol SVN
●
Per poder accedir al repositori fent servir aquest
protocol cal iniciar el servidor svnserve
●
S'hi accedeix fent servir una ULR amb svn
# svn co svn://192.168.3.22/opt/repositori
REPOSITORI
svnserve -d
--foreground
-r /opt/repositori
Desenvolupament d'Aplicacions Web
svn+ssh
●
Ofereix més seguretat ja que la comunicació va
xifrada
– No cal tenir el servidor svnserve en marxa
# svn co svn+ssh://192.168.3.22/opt/repositori
Definim tot el
camí cap al
repositori

Más contenido relacionado

Similar a Subversion

Gestor d' arxius Web
Gestor d' arxius WebGestor d' arxius Web
Gestor d' arxius Web
Xavier Eritja
 
UF4 Gestor d'arxius web
UF4 Gestor d'arxius webUF4 Gestor d'arxius web
UF4 Gestor d'arxius web
Ruben Mur
 
Presentacio alfresco
Presentacio alfrescoPresentacio alfresco
Presentacio alfresco
miquel011
 

Similar a Subversion (20)

Gestor d' arxius Web
Gestor d' arxius WebGestor d' arxius Web
Gestor d' arxius Web
 
gestors web
gestors webgestors web
gestors web
 
alfresco
alfrescoalfresco
alfresco
 
Power point slideshare
Power point slidesharePower point slideshare
Power point slideshare
 
Presentacio alfresco
Presentacio alfrescoPresentacio alfresco
Presentacio alfresco
 
Instal·lació apache
Instal·lació apacheInstal·lació apache
Instal·lació apache
 
UF4 Gestor d'arxius web
UF4 Gestor d'arxius webUF4 Gestor d'arxius web
UF4 Gestor d'arxius web
 
Drupal: Posada en Funcionament
Drupal: Posada en FuncionamentDrupal: Posada en Funcionament
Drupal: Posada en Funcionament
 
presentacio aplicacions web
presentacio aplicacions webpresentacio aplicacions web
presentacio aplicacions web
 
Presentació de Wordpress fins a la 3.5.1
Presentació de Wordpress fins a la 3.5.1Presentació de Wordpress fins a la 3.5.1
Presentació de Wordpress fins a la 3.5.1
 
Dai 9 - Ruby on Rails
Dai 9 - Ruby on RailsDai 9 - Ruby on Rails
Dai 9 - Ruby on Rails
 
aplicacions web
aplicacions webaplicacions web
aplicacions web
 
W
WW
W
 
Presentacio alfresco
Presentacio alfrescoPresentacio alfresco
Presentacio alfresco
 
Repositori local de paquets de ubuntu 10.04
Repositori local de paquets de ubuntu 10.04Repositori local de paquets de ubuntu 10.04
Repositori local de paquets de ubuntu 10.04
 
Presentació del servidor Apache
Presentació del servidor ApachePresentació del servidor Apache
Presentació del servidor Apache
 
Asix act3v4
Asix act3v4Asix act3v4
Asix act3v4
 
Programari lliure
Programari lliureProgramari lliure
Programari lliure
 
Com estructurar un projecte web (ca)
Com estructurar un projecte web (ca)Com estructurar un projecte web (ca)
Com estructurar un projecte web (ca)
 
Mr Wong2
Mr Wong2Mr Wong2
Mr Wong2
 

Más de Xavier Sala Pujolar

Más de Xavier Sala Pujolar (13)

Fer App mòbils amb tecnologia web
Fer App mòbils amb tecnologia webFer App mòbils amb tecnologia web
Fer App mòbils amb tecnologia web
 
Selenium web driver in Java
Selenium web driver in JavaSelenium web driver in Java
Selenium web driver in Java
 
Validació de Documents XML amb XSD
Validació de Documents XML amb XSDValidació de Documents XML amb XSD
Validació de Documents XML amb XSD
 
Criptografia
CriptografiaCriptografia
Criptografia
 
RIP
RIPRIP
RIP
 
OSPF
OSPFOSPF
OSPF
 
Openldap
OpenldapOpenldap
Openldap
 
Llei de Protecció de dades de caràcter personal (LOPD)
Llei de Protecció de dades de caràcter personal (LOPD)Llei de Protecció de dades de caràcter personal (LOPD)
Llei de Protecció de dades de caràcter personal (LOPD)
 
Virtualització (2 part)
Virtualització (2 part)Virtualització (2 part)
Virtualització (2 part)
 
Virtualització
VirtualitzacióVirtualització
Virtualització
 
Enginyeria social
Enginyeria socialEnginyeria social
Enginyeria social
 
Creació de documents xml
Creació de documents xmlCreació de documents xml
Creació de documents xml
 
Introducció a xml
Introducció a xmlIntroducció a xml
Introducció a xml
 

Subversion

  • 1. Xavier Sala Pujolar Institut Cendrassos CFGS Desenvolupament d'aplicacions Web M8 - Desplegament d'aplicacions web Subversion UF4 Control de versions i documentació
  • 2. Desenvolupament d'Aplicacions Web Subversion ● Es tracta d'un sistema de control de versions centralitzat que va néixer amb la idea de reemplaçar CVS – Per això van posar molt d'èmfasi en solucionar els problemes detectats a CVS ● Actualment és un projecte de codi obert de la fundació Apache http://subversion.apache.org/
  • 3. Desenvolupament d'Aplicacions Web Sistemes CVS Centralitzats ● Es té un repositori centralitzat en el que s'hi van pujant i descarregant els canvis Hi ha un repositori central que té la versió PRINCIPAL Els clients es descarreguen els canvis dels altres i en fan de propis i els pugen al repositori REPOSITORI
  • 4. Desenvolupament d'Aplicacions Web Subversion ● El repositori pot ser accedit de diferents formes: file:// http:// https:// svn:// svn+ssh:// Accés al repositori en local Accés al repositori per xarxa amb el protocol svn Accés al repositori per xarxa per HTTP via DAV
  • 5. Desenvolupament d'Aplicacions Web Importar un projecte ● Tot comença quan un client importa un projecte al repositori REPOSITORI Gos $ svn import animals svn://repositori/animals Animals.txt 1
  • 6. Desenvolupament d'Aplicacions Web Gos Animals.txt Gos Animals.txt Gos Animals.txt Descarregar un projecte ● Els clients poden descarregar-se el projecte REPOSITORI Gos $ svn co svn://repositori/animals Animals.txt 1 1 1 1
  • 7. Desenvolupament d'Aplicacions Web Identificar revisions ● Subversion manté un número per identificar tots els canvis que es facin en el repositori Gos Animals.txt Gos Gat Gos Gat Gallina 2 1 3 Cada canvi (el faci qui el faci) incrementa el número de versió $ svn log Els comentaris en les versions $ svn diff -r 3 fitxer.txt Les diferències entre versions
  • 8. Desenvolupament d'Aplicacions Web Directori de treball ● El creador del projecte també l'ha de descarregar Al descarregar-lo el projecte es crea en un directori de treball Es reconeixen perquè tenen un subdirectori “ocult” anomenat .svn amb metadades Des de dins del directori ja no caldrà especificar més el servidor
  • 9. Desenvolupament d'Aplicacions Web Refrescar el projecte ● Els clients poden treballar amb les seves còpies sense que això afecti a ningú més REPOSITORI Gos Animals.txt Gos Gat Animals.txt Gos Animals.txt Gos Animals.txt Sense canvis $ svn update Si algú actualitza rebrà el que hi ha en el repositori 1 1 1 1
  • 10. Desenvolupament d'Aplicacions Web Comprovar què hem canviat ● Sempre es pot veure què s'ha canviat en el directori de treball i està pendent REPOSITORI Gos Animals.txt Gos Gat Animals.txt Gos Animals.txt Gos Animals.txt $ svn status M Animals.txt 1 1 1 1 El primer caràcter indica què hem fet en el fitxer: Modificat
  • 11. Desenvolupament d'Aplicacions Web Els arxius no s'afegeixen sols ● Si algú vol afegir/treure un arxiu del projecte ho ha d'indicar explícitament REPOSITORI Gos Animals.txt Gos Gat Animals.txt Gos Animals.txt Gos Animals.txt $ svn add Animals2.txt M Animals.txt 1 1 1 1 El primer caràcter indica què hem fet en el fitxer: Modificat Peix Animals2.txt 1
  • 12. Desenvolupament d'Aplicacions Web Actualitzar un projecte ● Un cop acabin de fer les modificacions els clients pugen els canvis al repositori REPOSITORI Gos Animals.txt Gos Gat Animals.txt Gos Animals.txt Gos Animals.txt $ svn commit -m “Afegit gat” Gos Gat 1 2 1 1 2
  • 13. Desenvolupament d'Aplicacions Web Gos Gat Actualitzar un projecte ● Els clients es descarreguen la darrera versió del projecte REPOSITORI Gos Animals.txt Gos Gat Animals.txt Gos Animals.txt Canvis $ svn update Gos Gat Animals.txt 1 2 2 1 2
  • 14. Desenvolupament d'Aplicacions Web Gos Gat Versions del projecte ● El repositori manté versions de tots els canvis REPOSITORI Gos Animals.txt Gos Gat Animals.txt Gos Animals.txt Gos Gat Animals.txt 1 2 En qualsevol moment es pot tornar a una versió anterior 2 1 1 $ svn update -r 1 El número de versió
  • 15. Desenvolupament d'Aplicacions Web Problema de compartir... ● Si dos clients modifiquen alhora el mateix arxiu en el mateix lloc i un fa commit... REPOSITORI Gos Animals.txt Gos Gat Gallina Animals.txt Gos Gat Conill Animals.txt Gos Animals.txt $ svn commit -m “Afegida Gallina” Gos Gat Gos Gat Gallina 3 1 1 1 2 3
  • 16. Desenvolupament d'Aplicacions Web Problema de compartir... ● Quan ho faci l'altre si no es fa res tenim un problema... REPOSITORI Gos Animals.txt Gos Gat Gallina Animals.txt Gos Gat Conill Animals.txt Gos Animals.txt $ svn commit -m “Afegit gat” Gos Gat Gos Gat Gallina Gos Gat Conill 3 1 1 1 2 3
  • 17. Desenvolupament d'Aplicacions Web Problema de compartir... ● Subversion “mescla” automàticament els canvis que no porten conflictes ... REPOSITORI Gos Animals.txt Gos Gat Gallina Animals.txt Gos Gat Conill Animals.txt Gos Gat Animals.txt Gos Gat Gos Gat Gallina Desactualitzada 2 1 3 2 2 3 2 3 Si els canvis són en els mateixos llocs es crea un conflicte
  • 18. Desenvolupament d'Aplicacions Web Problema de compartir... ● Subversion soluciona el conflicte avisant de que la versió de treball està desactualitzada REPOSITORI Gos Animals.txt Gos Gat Gallina Animals.txt Gos Gat Conill Animals.txt Gos Gat Animals.txt $ svn commit -m “Afegit gat” svn: Commit failed (details follow): Gos Gat Gos Gat Gallina Desactualitzada 2 1 3 2 2 3 2 3
  • 19. Desenvolupament d'Aplicacions Web Problema de la compartició ● Es rebutja el commit i obliga al client a fer un 'update' per resoldre el conflicte No sempre és possible resoldre els conflictes automàticament
  • 20. Desenvolupament d'Aplicacions Web Resolució de conflictes ● Quan s'actualitza el repositori deixa que l'usuari prengui la decisió de com resoldre el conflicte Editar o veure les diferències Triar una de les dues versions O deixar-ho per més endavant
  • 21. Desenvolupament d'Aplicacions Web Resoldre ● En cas de posposar-ho es pot resoldre amb una comanda svn que digui quin és el correcte $ svn resolve --accept working fitxer.txt El fitxer correcte és el de la còpia de treball $ svn revert fitxer.txt Descartar els meus canvis
  • 22. Desenvolupament d'Aplicacions Web Bloqueig de fitxers ● Subversion ofereix la possibilitat de bloquejar els fitxers perquè ningú més els pugui modificar $ svn lock fitxer.txt -d “Bloquejat” 'fitxer.txt' locked by user 'xavier'. $ svn unlock fitxer.txt No es pot modificar pels altres usuaris fins que sigui desbloquejat
  • 23. Desenvolupament d'Aplicacions Web $ svn add *.txt $ svn delete fitxer.txt $ svn mv fitxer2.txt fitxer.txt $ svn copy fitxer.txt fitxer3.txt $ svn cat fitxer.txt $ svn ls Gestió dels fitxers ● Es poden gestionar els fitxers a emmatzemar en el repositori MEU
  • 24. Desenvolupament d'Aplicacions Web Perquè serveix fer “branques”? ● Es solen fer branques quan: – S'ha de fer una modificació important que pot deixar el projecte principal “inestable” – Quan es vol fer un projecte derivat que tingui diferències puntuals del principal
  • 25. Desenvolupament d'Aplicacions Web Branching ● En Subversion es poden crear projectes derivats de la línia principal Trunk La línia principal és anomenada Trunk Les derivacions són branches
  • 26. Desenvolupament d'Aplicacions Web Crear una branca ● Crear una branca és copiar la branca principal en un altre directori $ svn copy http://repositori/animals/trunk http://repositori/animals/branches/animals-marins trunkRepositori branches animals-marins
  • 27. Desenvolupament d'Aplicacions Web Branching... ● Però subversion no té internament el concepte de “branching”. Només és una còpia de fitxers i directoris trunk animals branches animalets Es poden copiar a qualsevol lloc /
  • 28. Desenvolupament d'Aplicacions Web Merging ● En subversion el procés de copiar dades d'una branca a una altra s'anomena barrejar (“merging”) trunkRepositori branches animals-marins Copiar els canvis
  • 29. Desenvolupament d'Aplicacions Web Sincronitzar de trunk ● És corrent que les branques a més de fer la seva feina sincronitzin els canvis que es produeixin en la branca principal Si es va sincronitzant periòdicament no hi haurà sorpreses si es reintegra $ svn merge ^/animals/trunk
  • 30. Desenvolupament d'Aplicacions Web Barrejar branques ● Subversion permet copiar diferències entre branques “a la carta” $ svn merge -c 2345 $ svn diff -c 2345 Veure les diferències amb la versió 2345 Integrar els canvis de la versió 2345
  • 31. Desenvolupament d'Aplicacions Web Reintegrar branques ● Moltes vegades l'objectiu final de les branques és reintegrar-se a la línia principal $ svn merge –reintegrate ^/animals/branches-/animalets
  • 33. Desenvolupament d'Aplicacions Web Subversion ● A través de svnadmin es pot gestionar qualsevol repositori Subversion REPOSITORI # svnadmin create /opt/repositori # chown -R www-data:svn repositori # chmod -R g+rws repositori Adaptar permisos
  • 34. Desenvolupament d'Aplicacions Web Subversion ● El repositori pot ser accedit de diferents formes: file:// http:// https:// svn:// svn+ssh:// Accés al repositori en local Accés al repositori per xarxa amb el protocol svn Accés al repositori per xarxa per HTTP via DAV
  • 35. Desenvolupament d'Aplicacions Web file:/// ● La forma més senzilla d'accedir-hi és directament: # svn co file:///opt/repositori Els permisos els donarà el sistema operatiu
  • 36. Desenvolupament d'Aplicacions Web WebDAV ● Per accedir al repositori via WebDAV cal un servidor web i el plugin de DAV i Subversion ● S'accedirà al repositori fent servir una URL web # apt-get install subversion libapache2-svn apache2 # svn co http://192.168.3.22/svn # svn co https://192.168.3.22/svn Més seguretat
  • 37. Desenvolupament d'Aplicacions Web Configuració WebDAV ● La configuració es defineix al directori /etc/apache2/mods-available/dav_svn.conf en el que s'hi defineix un Location <Location /svn> DAV svn SVNPath /opt/repositori AuthType Basic AuthName "Repository" AuthUserFile /etc/subversion/passwd <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> </Location> Els permisos els definirà el servidor web
  • 38. Desenvolupament d'Aplicacions Web WebDaV ● S'hi pot accedir amb el client Subversion però també amb un navegador web ● S'han de crear els usuaris i les contrasenyes # htpasswd -c /etc/subversion/passwd manel El camí el defineix Apache
  • 39. Desenvolupament d'Aplicacions Web El protocol SVN ● Per poder accedir al repositori fent servir aquest protocol cal iniciar el servidor svnserve ● S'hi accedeix fent servir una ULR amb svn # svn co svn://192.168.3.22/opt/repositori REPOSITORI svnserve -d --foreground -r /opt/repositori
  • 40. Desenvolupament d'Aplicacions Web svn+ssh ● Ofereix més seguretat ja que la comunicació va xifrada – No cal tenir el servidor svnserve en marxa # svn co svn+ssh://192.168.3.22/opt/repositori Definim tot el camí cap al repositori