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 <code>svn ls file:///home/zikzak/svn/nom_projecte</code> |
| 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ó

Servidor

cd /home/zikzak/svn
svnadmin create nomprojecte

[general]
anon-access = none
auth-access = write
password-db = passwd

[users]
joan = pwd_joan
josep = pwd_josep

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

Creació i aplicació de patch

Per crear un fitxer amb un patch que contingui els canvis fets localment:

  svn diff > ~/fitxer_canvis.diff

Per crear un fitxer amb un patch que contingui els canvis fets de la revisió OLD a la revisió NEW:

  svn diff -r OLD:NEW > ~/fitxer_canvis.diff

Per crear un fitxer amb un patch que contingui els canvis fets de la revisió REV-1 a la revisió REV:

  svn diff -c REV > ~/fitxer_canvis.diff

Per crear un fitxer amb un patch que contingui els canvis fets entre 2 carpetes old i new:

  diff -rupN old/ new/ > fitxer_canvis.patch

Per aplicar el patch del fitxer en el codi actual:

  patch -p0 -i ~/fitxer_canvis.patch

p0. El 0 seria el primer nivell de la ruta de directori. Si el diff contingués una ruta diferent, podem especificar el nivell: p1, p2,...

Incorporar modificacions externes a una còpia local

  cd carpeta_copia_local/trunk
  rsync -rc carpeta_nous_fitxers/* .

Copiem només els nous fitxers o els modificats recursivament

  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

  cd carpeta_copia_local/trunk
  svn log

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

  svn status

  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

Svn (last edited 2012-06-29 15:10:51 by jmartin)

Contenidos creados por el equipo de Zikzakmedia. Creative Commons By-NC-SA

PythonZikzakmedia