LesOlivex

Servicios informáticos



De branch a trunk en subversion

Category : subversion dic 21st, 2014

Añadir los cambios de una ramificación del proyecto a la rama principal.

Nos situamos en la copia local de la rama:

svn log --stop-on-copy

Recogemos la versión en la que se inicio la ramificación:

------------------------------------------------------------------------
r342 | eduardo | 2010-10-04 08:29:44 +0200 (lun 04 de oct de 2010) | 1 línea

Rama de programación

Nos vamos a la copia local de la rama principal y comprobamos cambios que se realizaran con –dry-run sin hacerlos:

svn merge --dry-run -r 342:HEAD file:///var/subversion/gcm/branches/eduardo

--- Fusionando r343 hasta r348 en «.»:
U    proyecto/File/es/Seccion/index.html
D    proye...

Realizamos los cambios definitivamente:

svn merge -r 342:HEAD file:///var/subversion/gcm/branches/eduardo

Actualizamos servidor de subversion:

svn ci

Conceptos basicos sobre subversion

Category : subversion dic 21st, 2014

Varios

checkout: Saca el fichero del repositorio y lo almacena localmente para poder trabajar con él.
checkin: Una vez realizados los cambios, volcamos el fichero al repositorio donde estará disponible para el resto de desarrolladores.
status: Indica el estado actual del fichero.
log: Saca un listado con las revisiones del fichero

Iniciando Subversion

svnadmin create /var/svn

Iniciando proyectos

Nos colocamos en directorio donde tenemos el proyecto y lo importamos svn mkdir file:///var/svn/gcm svn import gcm file:///var/svn/gcm
Actualizar con remoto

svn up

Volver a una versión anterior

svn up -r2

Volver atrás con un archivo concreto

svn update -r

Añadir de un golpe todos los ficheros con interrogante

#!/bin/bash
DIFS="$IFS" ; IFS=$'\n'
for x in $(svn status | grep ^? | awk -v FS='?      ' '{print $2}') ; do
svn add "$x"
done
IFS="$DIFS"

lo mismo con los borrados:

#!/bin/bash
DIFS="$IFS" ; IFS=$'\n'
for x in $(svn status | grep ^! | awk -v FS='!      ' '{print $2}') ; do
svn del "$x"
done
IFS="$DIFS"

Descartar archivos a tener en cuenta

Con svn propedit svn:ignore
, nos pedira una lista de rutas en formato de expresión regular para detectar los archivos o directorios que queremos descartar de ser tratados por subversión

Ejemplo para descartar archivos de log que actualmente estan en repositorio.

svn remove log/*
svn commit -m 'borrar todos los ficheros de log de subversion'
svn propset svn:ignore "*.log" log/
svn update log/
svn commit -m 'ignorar todos los ficheros en log/ que terminen en .log

Dividir proyectos

Teniendo Scripts, proyectos y gcm dentro de un mismo repositorio vamos a dividirlos

Primero creamos los proyectos:

svnadmin create /var/svn/Scripts
svnadmin create /var/svn/proyectos
svnadmin create /var/svn/gcm

Generamos copia del actual | filtramos | añadimos:

svnadmin dump /var/svn/ | svndumpfilter exclude proyectos Scripts | svnadmin load /var/svn/gcm
svnadmin dump /var/svn/ | svndumpfilter exclude proyectos gcm | svnadmin load /var/svn/Scripts
svnadmin dump /var/svn/ | svndumpfilter exclude Scripts gcm | svnadmin load /var/svn/proyectos

Enlaces relacionados

Un buen resumen