Subversion (svn)

Comandes bàsiques

svn import Importa un fitxer o directori no versionat (per importar la primera vegada a svn)
svn co (checkout) Baixa el projecte la primera vegada (crea la còpia local)
svn export Exporta un fitxer o directori (serveix per fer una release sense informació de svn)
svn up (update) Actualitza la còpia local
svn ci (commit) Envia tots els fitxers modificats
svn cp (copy) Copia fitxers i directoris - (també fer branques que permeten fer “forks” del desenvolupament principal (trunk))
svn mv Mou un fitxer o directori
svn rm Borra fitxers i directoris
svn add Afegeix un fitxer o directori
svn mkdir Crea directori
svn status Mostra els fitxers que han canviat a la còpia local
svn revert Desfa els canvis efectuats a la còpia local
svn cleanup Desbloqueja la còpia local (necessari quan alguna operació no ha pogut finalitzar correctament)
svn diff Crea diffs (diferències entre versions)
svn log Veure l'històric de versions en la còpia local
svn ls Llista fitxers del respositori
svn ls file:///home/zikzak/svn/nom_projecte
svn info Veure informació de la còpia local
svn help Ajuda de subversion
svn propdel Borra propietats
svn propedit Edita propietats
svn propget Obté una propietat
svn proplist Llista propietats
svn propset Estableix una propietat

Creació del repositori i carpetes inicials i importació

  • Al servidor:
    cd /home/zikzak/svn
    svnadmin create nomprojecte
    
    • Si es vol una configuració sense usuari anònim, editar el fitxer nomprojecte/conf/svnserve.conf:
      [general]
      anon-access = none
      auth-access = write
      password-db = passwd
      
    • i afegir al fitxer nomprojecte/conf/passwd, els usuaris autoritzats a modificar el projecte:
      [users]
      joan = pwd_joan
      josep = pwd_josep
      
  • Als clients:
    svn mkdir -m'Directoris trunk branches i tags' file:///home/zikzak/svn/nom_projecte/trunk file:///home/zikzak/svn/nom_projecte/branches file:///home/zikzak/svn/nom_projecte/tags
    
    cd carpeta_projecte_descarregat_i_descomprimit
    svn import file:///home/zikzak/svn/nom_projecte/trunk -m"Projecte X mòduls oficials"
        
    svn copy file:///home/zikzak/svn/nom_projecte/trunk file:///home/zikzak/svn/nom_projecte/branches/zikzak -m"Projecte X mòduls oficials + Modificacions zikzakmedia"
    

Baixar-se una còpia local

mkdir -p carpeta_copia_local
cd carpeta_copia_local
svn co file:///home/zikzak/svn/nom_projecte

Procés de treball habitual amb svn

  1. Editem fitxers, afegim nous fitxers amb svn add, copiem fitxers amb svn cp, movem fitxers amb svn mv, eliminem fitxers amb svn rm, …
  2. Llistem els canvis locals efectuats:
    svn status
  3. Actualitzem còpia local:
    svn up
  4. Resolem les possibles col·lisions que hagin aparegut. Per cada col·lisió caldrà eliminar els 3 fitxers creats.
  5. Pugem els nostres canvis locals:
    svn ci -m "Text explicatiu dels nostres canvis"

Incorporar modificacions externes a una còpia local

  • Trunk: El nucli. El projecte oficial. Per exemple, joomla 1.5.10
  • Branca: Derivats. El nostre CMS. Per exemple: cms

# Si ho fem a trunk:

cd carpeta_copia_local/trunk
rsync -rc carpeta_nous_fitxers/* .

Copiem només els nous fitxers o els modificats recursivament

# Si ho fem a la branca zikzak:

cd carpeta_copia_local/branches/zikzak
rsync -rc carpeta_nous_fitxers/* .

# Tots els fitxers/directoris nous tenen un status ?. Cal llistar-los i afegir-los amb la comanda svn add

svn status|grep ? > fitxers_nous

# Posar tots els noms de fitxers/directoris en una sola línea i executar:

svn add <llista de fitxers/directoris>
svn ci -m"Afegit els fitxers/directoris nous/modificats"
svn update

Aplicar els canvis fets a trunk a una branca

# Ens apuntem els números versions incial i final que interesen agafar de la branca trunk

cd carpeta_copia_local/trunk
svn log

# Els canvis fets a la branca trunk entre les versions 2 i 5 els apliquem a la branca zikzak

cd carpeta_copia_local/branches/zikzak
svn merge -r 2:5 file:///home/zikzak/svn/nom_projecte/trunk

# Hem de resoldre les col·lisions. Les podem veure amb:

svn status

# I finalment, fem un commit

svn ci -m "Text explicatiu dels nostres canvis"

Per ignorar fitxers

Globalment: Editar la següent línia del fitxer ~/.subversion/config

global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store *.pyc

Localment: ignorar fitxer, plantilla de fitxer o directori. Situar-nos en el directori i executar:

svn propset svn:ignore <nom_fitxer> .

Cal que el fitxer, fitxers o directoris no estiguessin sota el control de subversion. Si no caldrà eliminar-los amb svn rm <nomfitxer> i tornar-los a crear de nou.

Nota: Si volem indicar un conjunt de fitxers amb els comodins * o ? caldrà tancar el <nom_fitxer> amb cometes. Per ex., per ignorar tots els fitxers d'un directori:

svn propset svn:ignore '*' .

Afegir usuaris per l'accés a SVN via http

To add the first entry, ie.. to add the first user, you can run the following command:

sudo htpasswd -c /etc/subversion/passwd user_name

It prompts you to enter the password. Once you enter the password, the user is added.

To add more users after that, you can run the following command:

sudo htpasswd /etc/subversion/passwd second_user_name

If you are uncertain whether the passwd file exists, running the command below will tell you whether the file already exists:

cat /etc/subversion/passwd

Now, to access the repository you can run the following command:

$ svn co http://hostname/svn/myproject myproject --username user_name
 
documentation/howto/svn.txt · Darrera modificació: 2010/04/22 18:10 per jesteve
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki