User Tools

Site Tools


informatica:linux:subversion

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatica:linux:subversion [2010/05/21 10:18] 62.15.232.197informatica:linux:subversion [2015/04/13 20:19] (current) – external edit 127.0.0.1
Line 109: Line 109:
  
 ===== Subversion y apache ===== ===== Subversion y apache =====
 +
 +==== Apache >=2.4.x y subversion >=1.8.x ====
 +
 +http://svnbook.red-bean.com/en/1.8/svn.serverconfig.httpd.html
 +
 +1. Instalar paquetes
 +
 +  sudo aptitude update; sudo aptitude install apache2 subversion libapache2-svn
 +
 +2. Habilitar módulo de apache:
 +
 +<code>
 +sudo a2enmod dav
 +sudo a2enmod dav_lock
 +sudo a2enmod dav_fs
 +</code>
 +
 +3. Reiniciar apache
 +
 +  sudo service apache2 restart
 +
 +4. Crear una config de apache:
 +
 +  sudo vim /etc/apache2/conf-available/svn.conf
 +  
 +Con el siguiente contenido:
 +
 +<code>
 +<Location /svn>
 +  DAV svn
 +  # Automatically map any "/svn/foo" URL to repository /var/svn/foo
 +  SVNParentPath /var/svn
 +</Location>
 +</code>
 +
 +5. Ajustar permisos:
 +
 +  sudo chown -R www-data:root /var/svn
 +  
 +6. Cargar config de apache:
 +
 +  sudo a2enconf svn
 +  sudo service apache2 reload
 +  
 +7. Probar:
 +
 +http://svn.example.com/svn/project_1
 +
 +Deberia ir a:
 +
 +  /var/svn/project_1
 +
 +  
 +
 +
 +==== Apache <=2.2.x y subversion <=1.7.x ====
 +
  
 http://svnbook.red-bean.com/en/1.4/svn.serverconfig.httpd.html http://svnbook.red-bean.com/en/1.4/svn.serverconfig.httpd.html
Line 178: Line 235:
  
   svn checkout http://localhost/repositorio_varios_proyectos/proyecto_1   svn checkout http://localhost/repositorio_varios_proyectos/proyecto_1
 +
 +
  
  
Line 200: Line 259:
 (Si no existe un fichero de contraseñas de apache) (Si no existe un fichero de contraseñas de apache)
  
-  htpassd -c /ruta/fichero/contrasenyas mi_usuario+  sudo htpasswd -c /ruta/fichero/contrasenyas mi_usuario
  
 (Si ya existe) (Si ya existe)
  
-  htpassd  /ruta/fichero/contrasenyas mi_usuario+  sudo htpasswd /ruta/fichero/contrasenyas mi_usuario
  
 2. Teclear 2 veces la contraseña 2. Teclear 2 veces la contraseña
Line 242: Line 301:
 (Si no existe un fichero de contraseñas de apache) (Si no existe un fichero de contraseñas de apache)
  
-  htpassd -c /ruta/fichero/contrasenyas usuario_1 +  sudo htpasswd -c /ruta/fichero/contrasenyas usuario_1 
-  htpassd -c /ruta/fichero/contrasenyas usuario_2+  sudo htpasswd /ruta/fichero/contrasenyas usuario_2
  
 (Si ya existe) (Si ya existe)
  
-  htpassd  /ruta/fichero/contrasenyas usuario_1 +  sudo htpasswd /ruta/fichero/contrasenyas usuario_1 
-  htpassd  /ruta/fichero/contrasenyas usuario_2+  sudo htpasswd /ruta/fichero/contrasenyas usuario_2 
 2. Editar: 2. Editar:
  
-  nano /etc/apache2/httpd.conf+  sudo vim /etc/apache2/httpd.conf
      
 Y dejarlo tal que así: Y dejarlo tal que así:
Line 278: Line 338:
 4. Crear el archivo de reglas: 4. Crear el archivo de reglas:
  
-  nano /ruta/fichero/reglas_subversion+  sudo vim /ruta/fichero/reglas_subversion
  
 Con el siguiente contenido: Con el siguiente contenido:
Line 419: Line 479:
  
   svnserve -d --config-file=/etc/subversion/conf/svnserve.conf -r /mnt/disco_1/datos/repositorio_varios_proyectos&   svnserve -d --config-file=/etc/subversion/conf/svnserve.conf -r /mnt/disco_1/datos/repositorio_varios_proyectos&
 +
  
 ===== Acceder a repositorio vía svn+ssh ===== ===== Acceder a repositorio vía svn+ssh =====
Line 424: Line 485:
 No requiere tener levantado svnserve. Basta con: No requiere tener levantado svnserve. Basta con:
  
-  svn co --no-auth-cache --username mi_usuario svn+ssh://ip_servidor_subversion/var/subversion/proyecto_1/trunk+  svn co --no-auth-cache svn+ssh://usuario@ip_servidor_subversion/var/subversion/proyecto_1/trunk
  
 Donde '/var/subversion' es la ruta completa al repositorio de subversion. Pedirá usuario y contraseña de una cuenta de usuario de la máquina donde esté ubicado el repositorio de subversion  Donde '/var/subversion' es la ruta completa al repositorio de subversion. Pedirá usuario y contraseña de una cuenta de usuario de la máquina donde esté ubicado el repositorio de subversion 
Line 464: Line 525:
   svn info | grep URL   svn info | grep URL
   URL: http://mi_url/subversion/proyecto_1/trunk   URL: http://mi_url/subversion/proyecto_1/trunk
 +
  
  
  
 ===== Ramas ===== ===== Ramas =====
 +
 +**NOTA** Para que el comando 'svn merge' funcione, es necesario que cliente y servidor tengan la versión 1.5+
  
 Normalmente los proyectos de subersion siguen el siguiente estándar: Normalmente los proyectos de subersion siguen el siguiente estándar:
  
   /proyecto_1/trunk   /proyecto_1/trunk
 +  /proyecto_1/branches
 +  /proyecto_1/tags
 +
 +Supongamos el siguiente esquema:
 +
 +  /proyecto_1/trunk/file.txt
   /proyecto_1/branches   /proyecto_1/branches
   /proyecto_1/tags   /proyecto_1/tags
Line 483: Line 553:
 Crear una rama: Crear una rama:
  
-1. (Desde el servidor que aloja el repositorio de subversion):+1. En el pc cliente:
  
 <code> <code>
 svn copy http://mi_repositorio/proyecto_1/trunk \ svn copy http://mi_repositorio/proyecto_1/trunk \
 http://mi_repositorio/proyecto_1/branches/version_0_7 \ http://mi_repositorio/proyecto_1/branches/version_0_7 \
--m "Creo una rama privada de /facsimile/trunk."+-m "proyecto1 - creo rama branches/version_0_7"
 </code> </code>
  
-2. (En el pc 'cliente') Descargamos una copia de trabajo de la nueva rama:+2. (En el pc 'cliente') Descargamos una copia de trabajo del proyecto:
  
-  svn co http://mi_repositorio/proyecto_1/branches/version_0_7+  svn co http://mi_repositorio/proyecto_1/
  
-**NOTA** Para que el comando 'svn merge' funcione, es necesario que cliente y servidor tengan la versión 1.5++3Trabajo en file.txt:
  
-1. Descargarse los cambios de /trunk a la copia de trabajo:+  cd branches/version_0_7 
 +  vim file.txt
  
-  svn merge http://mi_repositorio/proyecto_1/trunk+4. Subo los cambios:
  
-2. Resolver los posibles conflictos:+  svn commit -m "proyecto1 - branches/version_0_7 cambio 1"
  
-  svn status +5Sigo trabajando en file.txt:
-  svn diff +
-  ...+
  
-2.1 Si los cambios son insalvables, se puede revertir a la situación anterior:+  cd branches/version_0_7 
 +  vim file.txt
  
-  svn revert -R+6Subo los cambios:
  
-3. Enviar los cambios, una vez resuletos los conflictos, a mi rama:+  svn commit -m "proyecto1 - branches/version_0_7 cambio 2"
  
-  svn commit -m "Fundidos los cambios de /trunk a /branches/version_0_7"+7. Si ahora quiero mezclar  branches/version_0_7 -> trunk tengo que buscar la revision en la que cree la rama:
  
-4. Repetir los pasos 1-3 a menudo, para que luego no cueste tanto reintegrar '/branches/version_0_7' en 'trunk'+  svn log --verbose --stop-on-copy http://mi_repositorio/proyecto_1/branches/version_0_7
  
-5. Fundir la rama con el tronco:+Tomar la ultima revision, por ejemplo supongamos que es la 23
  
-  svn merge --reintegrate http://mi_repositorio/proyecto_1/branches/version_0_7+8. Ir a trunk y ver la revision actual:
  
-6Resolver los posibles conflictos:+  cd ../../trunk 
 +  svn info
  
-  svn status +Supongamos que es la 25
-  svn diff +
-  ...+
  
-6.1 Si los cambios son insalvables, se puede revertir a la situación anterior:+9Mezclar
  
-  svn revert . -R+  svn merge -r 23:25 http://mi_repositorio/proyecto_1/branches/version_0_7
  
-7Enviar los cambios, una vez resuletos los conflictos, en este caso a '/trunk' (ver paso 5):+10Actualizar repositorio
  
-  svn commit -m "Fundidos los cambios de /branches/version_0_7 a /trunk"+  svn commit -m "proyecto1 - mezclado branches/version_0_7 -> trunk"
  
-8Eliminar la rama, pues ya no es necesaria:+11Comprobar los cambios
  
-<code> +  mkdir /tmp/aux2 
-svn delete http://mi_repositorio/proyecto_1/branches/version_0_7 \ +  cd /tmp/aux2 
--m "Borro la rama version_0_7" +  svn co http://mi_repositorio/proyecto_1/trunk 
-</code>+  cd trunk 
 +  vim file.txt
  
-La rama puede ser resucitada [1] +http://svnbook.red-bean.com/en/1.1/ch04s04.html  
- +  
-[1] http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html#svn.branchmerge.basicmerging.resurrect +
- +
-9. Para crear otra rama: +
- +
-9.1 Copiar el tronco a una copia de trabajo: +
- +
-<code> +
-svn copy http://mi_repositorio/proyecto_1/trunk \ +
-http://mi_repositorio/proyecto_1/branches/version_0_8 \ +
--m "Creo una rama privada de /facsimile/trunk." +
-</code> +
- +
-9.2 Entrar en el interior de esa copia de trabajo: +
- +
-  cd /ruta/branches/version_0_8 +
- +
-9.3 Actualizar la copia de trabajo reflejando que es un directorio, dentro del repositorio, distinto: +
- +
-  svn switch http://mi_repositorio/proyecto_1/branches/version_0_8 +
- +
-No es necesario 'switch', vale un 'update'. Ver http://svnbook.red-bean.com/en/1.5/svn.branchmerge.switchwc.html+
  
 ===== Mezclando ramas ===== ===== Mezclando ramas =====
Line 737: Line 786:
  
   svn update http://repositorio_subversion/proyecto/mi_archivo.c   svn update http://repositorio_subversion/proyecto/mi_archivo.c
 +
  
 ===== Listar revisiones ====== ===== Listar revisiones ======
Line 748: Line 798:
   svn log   svn log
  
 +
 +
 +===== Comprobar si existen versiones nuevas en el repositorio ======
 +
 +<code>
 +svn st -u --no-auth-cache --username=USER
 +Authentication realm: <http://URL_REPOSITORY> xxx Repository
 +Password for 'USER': 
 +        *   225051   generic-ci/generic-service-check.sh
 +        *   225051   generic-ci/generic-service-remove.sh
 +        *            file2.sh
 +        *   225051   .
 +Status against revision: 234242
 +</code>
 +
 +*   225051 -> existe una nueva version en el servidor
 +
 +===== Merge inverso o revertir a una revision concreta ======
 +
 +  * *PROBLEMA* queremos eliminar las ultimas x revisiones de un proyecto
 +
 +1. Listar las revisiones
 +
 +
 +<code>
 +cd /ruta/copia/local
 +
 +svn log
 +
 +------------------------------------------------------------------------
 +r1132 | root | 2012-06-18 15:45:06 +0200 (Mon, 18 Jun 2012) | 1 line
 +
 +back without symlinks
 +------------------------------------------------------------------------
 +r1131 | usuario | 2012-06-18 15:07:16 +0200 (Mon, 18 Jun 2012) | 1 line
 +
 +puppet symlinks sudo
 +------------------------------------------------------------------------
 +r1130 | usuario | 2012-06-18 15:05:41 +0200 (Mon, 18 Jun 2012) | 1 line
 +
 +puppet symlinks ssh
 +------------------------------------------------------------------------
 +r1129 | usuario | 2012-06-18 15:04:50 +0200 (Mon, 18 Jun 2012) | 1 line
 +
 +puppet symlinks module puppet cont and snmp
 +------------------------------------------------------------------------
 +r1128 | usuario | 2012-06-18 15:03:26 +0200 (Mon, 18 Jun 2012) | 1 line
 +
 +puppet symlinks module puppet
 +------------------------------------------------------------------------
 +r1127 | usuario | 2012-06-18 14:58:34 +0200 (Mon, 18 Jun 2012) | 1 line
 +
 +puppet symlinks module ntp
 +------------------------------------------------------------------------
 +r1126 | usuario | 2012-06-18 14:52:25 +0200 (Mon, 18 Jun 2012) | 1 line
 +
 +puppet symlinks module nfs
 +------------------------------------------------------------------------
 +r1125 | usuario | 2012-06-18 14:46:01 +0200 (Mon, 18 Jun 2012) | 1 line
 +
 +puppet symlinks module apt
 +------------------------------------------------------------------------
 +r1124 | usuario | 2012-06-18 14:42:23 +0200 (Mon, 18 Jun 2012) | 1 line
 +
 +puppet symlinks test 3
 +------------------------------------------------------------------------
 +r1123 | usuario | 2012-06-18 14:40:23 +0200 (Mon, 18 Jun 2012) | 1 line
 +
 +puppet symlinks test 2
 +------------------------------------------------------------------------
 +r1122 | usuario | 2012-06-18 14:38:53 +0200 (Mon, 18 Jun 2012) | 1 line
 +
 +test symlinks puppet
 +------------------------------------------------------------------------
 +r1121 | root | 2012-06-18 14:25:24 +0200 (Mon, 18 Jun 2012) | 1 line
 +
 +Initial feed
 +------------------------------------------------------------------------
 +</code>
 +
 +2. Queremos volver a la version inicial (r1121):
 +
 +  sudo svn merge -r1132:1120 .
 +
 +3. Hacemos el commit:
 +
 +  svn commit -m 'revert to r1120'
 +
 +===== Copiar directorio evitando .svn ======
 +
 +  sudo rsync -r --exclude=.svn /ruta/origen /ruta/destino
  
informatica/linux/subversion.1274437123.txt.gz · Last modified: 2015/04/13 20:19 (external edit)