Successfully reported this slideshow.

Subversion

321 views

Published on

Subversion és un exemple d'un sistema de control de versions centralitzat.

Va néixer amb la idea de superar els problemes que tenia CVS i s'ha convertit en un dels sistemes centralitzats de codi obert més usats

Published in: Education
  • Be the first to comment

  • Be the first to like this

Subversion

  1. 1. Xavier Sala Pujolar Institut Cendrassos CFGS Desenvolupament d'aplicacions Web M8 - Desplegament d'aplicacions web Subversion UF4 Control de versions i documentació
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  32. 32. Desenvolupament d'Aplicacions Web Subversion Servidor de subversion
  33. 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. 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. 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. 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. 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. 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. 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. 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

×