informatica:linux:subversion
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| informatica:linux:subversion [2010/01/15 05:44] – 192.168.1.30 | informatica:linux:subversion [2015/04/13 20:19] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 51: | Line 51: | ||
| 9. Repetir los pasos 3-8 sustituyento ' | 9. Repetir los pasos 3-8 sustituyento ' | ||
| + | |||
| ===== Ciclo de trabajo ===== | ===== Ciclo de trabajo ===== | ||
| Line 65: | Line 66: | ||
| 3. Examinar cambios | 3. Examinar cambios | ||
| *svn status | *svn status | ||
| + | |||
| + | Para ver los cambios de la copia local respecto al repositorio: | ||
| + | |||
| + | *svn status --show-updates | ||
| + | |||
| *svn diff | *svn diff | ||
| 4. (Opcional) revertir cambios realizados | 4. (Opcional) revertir cambios realizados | ||
| Line 103: | Line 109: | ||
| ===== Subversion y apache ===== | ===== Subversion y apache ===== | ||
| + | |||
| + | ==== Apache >=2.4.x y subversion >=1.8.x ==== | ||
| + | |||
| + | http:// | ||
| + | |||
| + | 1. Instalar paquetes | ||
| + | |||
| + | sudo aptitude update; sudo aptitude install apache2 subversion libapache2-svn | ||
| + | |||
| + | 2. Habilitar módulo de apache: | ||
| + | |||
| + | < | ||
| + | sudo a2enmod dav | ||
| + | sudo a2enmod dav_lock | ||
| + | sudo a2enmod dav_fs | ||
| + | </ | ||
| + | |||
| + | 3. Reiniciar apache | ||
| + | |||
| + | sudo service apache2 restart | ||
| + | |||
| + | 4. Crear una config de apache: | ||
| + | |||
| + | sudo vim / | ||
| + | | ||
| + | Con el siguiente contenido: | ||
| + | |||
| + | < | ||
| + | < | ||
| + | DAV svn | ||
| + | # Automatically map any "/ | ||
| + | SVNParentPath /var/svn | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | 5. Ajustar permisos: | ||
| + | |||
| + | sudo chown -R www-data: | ||
| + | | ||
| + | 6. Cargar config de apache: | ||
| + | |||
| + | sudo a2enconf svn | ||
| + | sudo service apache2 reload | ||
| + | | ||
| + | 7. Probar: | ||
| + | |||
| + | http:// | ||
| + | |||
| + | Deberia ir a: | ||
| + | |||
| + | / | ||
| + | |||
| + | | ||
| + | |||
| + | |||
| + | ==== Apache <=2.2.x y subversion <=1.7.x ==== | ||
| + | |||
| http:// | http:// | ||
| Line 172: | Line 235: | ||
| svn checkout http:// | svn checkout http:// | ||
| + | |||
| + | |||
| Line 194: | Line 259: | ||
| (Si no existe un fichero de contraseñas de apache) | (Si no existe un fichero de contraseñas de apache) | ||
| - | | + | |
| (Si ya existe) | (Si ya existe) | ||
| - | | + | |
| 2. Teclear 2 veces la contraseña | 2. Teclear 2 veces la contraseña | ||
| Line 236: | Line 301: | ||
| (Si no existe un fichero de contraseñas de apache) | (Si no existe un fichero de contraseñas de apache) | ||
| - | | + | |
| - | | + | |
| (Si ya existe) | (Si ya existe) | ||
| - | | + | |
| - | | + | |
| 2. Editar: | 2. Editar: | ||
| - | | + | |
| | | ||
| Y dejarlo tal que así: | Y dejarlo tal que así: | ||
| Line 272: | Line 338: | ||
| 4. Crear el archivo de reglas: | 4. Crear el archivo de reglas: | ||
| - | | + | |
| Con el siguiente contenido: | Con el siguiente contenido: | ||
| Line 413: | Line 479: | ||
| svnserve -d --config-file=/ | svnserve -d --config-file=/ | ||
| + | |||
| ===== Acceder a repositorio vía svn+ssh ===== | ===== Acceder a repositorio vía svn+ssh ===== | ||
| Line 418: | Line 485: | ||
| No requiere tener levantado svnserve. Basta con: | No requiere tener levantado svnserve. Basta con: | ||
| - | svn co --no-auth-cache | + | svn co --no-auth-cache svn+ssh://usuario@ip_servidor_subversion/ |
| Donde '/ | Donde '/ | ||
| Line 458: | Line 525: | ||
| svn info | grep URL | svn info | grep URL | ||
| URL: http:// | URL: http:// | ||
| + | |||
| ===== 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: | ||
| / | / | ||
| + | / | ||
| + | / | ||
| + | |||
| + | Supongamos el siguiente esquema: | ||
| + | |||
| + | / | ||
| / | / | ||
| / | / | ||
| Line 477: | Line 553: | ||
| Crear una rama: | Crear una rama: | ||
| - | 1. (Desde | + | 1. En el pc cliente: |
| < | < | ||
| svn copy http:// | svn copy http:// | ||
| http:// | http:// | ||
| - | -m "Creo una rama privada de /facsimile/ | + | -m "proyecto1 - creo rama branches/version_0_7" |
| </ | </ | ||
| - | 2. (En el pc ' | + | 2. (En el pc ' |
| - | svn co http:// | + | svn co http:// |
| - | **NOTA** Para que el comando 'svn merge' funcione, es necesario que cliente y servidor tengan la versión 1.5+ | + | 3. Trabajo 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:// | + | 4. Subo los cambios: |
| - | 2. Resolver los posibles conflictos: | + | svn commit -m " |
| - | svn status | + | 5. Sigo trabajando en file.txt: |
| - | svn diff | + | |
| - | ... | + | |
| - | 2.1 Si los cambios son insalvables, | + | cd branches/ |
| + | vim file.txt | ||
| - | svn revert | + | 6. Subo los cambios: |
| - | 3. Enviar los cambios, una vez resuletos los conflictos, a mi rama: | + | svn commit -m " |
| - | svn commit -m " | + | 7. Si ahora quiero mezclar |
| - | 4. Repetir los pasos 1-3 a menudo, para que luego no cueste tanto reintegrar '/ | + | svn log --verbose --stop-on-copy http:// |
| - | 5. Fundir | + | Tomar la ultima revision, por ejemplo supongamos que es la 23 |
| - | svn merge --reintegrate http:// | + | 8. Ir a trunk y ver la revision actual: |
| - | 6. Resolver los posibles conflictos: | + | cd ../ |
| + | svn info | ||
| - | svn status | + | Supongamos que es la 25 |
| - | svn diff | + | |
| - | ... | + | |
| - | 6.1 Si los cambios son insalvables, | + | 9. Mezclar |
| - | svn revert . -R | + | svn merge -r 23:25 http:// |
| - | 7. Enviar los cambios, una vez resuletos los conflictos, en este caso a '/ | + | 10. Actualizar repositorio |
| - | svn commit -m "Fundidos los cambios de /branches/ | + | svn commit -m "proyecto1 - mezclado |
| - | 8. Eliminar la rama, pues ya no es necesaria: | + | 11. Comprobar los cambios |
| - | < | + | mkdir /tmp/aux2 |
| - | svn delete | + | cd /tmp/aux2 |
| - | -m "Borro la rama version_0_7" | + | svn co http:// |
| - | </ | + | cd trunk |
| + | vim file.txt | ||
| - | La rama puede ser resucitada [1] | + | http:// |
| - | + | | |
| - | [1] http:// | + | |
| - | + | ||
| - | 9. Para crear otra rama: | + | |
| - | + | ||
| - | 9.1 Copiar el tronco a una copia de trabajo: | + | |
| - | + | ||
| - | < | + | |
| - | svn copy http:// | + | |
| - | http:// | + | |
| - | -m "Creo una rama privada de / | + | |
| - | </ | + | |
| - | + | ||
| - | 9.2 Entrar en el interior de esa copia de trabajo: | + | |
| - | + | ||
| - | | + | |
| - | + | ||
| - | 9.3 Actualizar la copia de trabajo reflejando que es un directorio, dentro del repositorio, | + | |
| - | + | ||
| - | svn switch http:// | + | |
| - | + | ||
| - | No es necesario ' | + | |
| ===== Mezclando ramas ===== | ===== Mezclando ramas ===== | ||
| Line 674: | Line 729: | ||
| svn delete file:// | svn delete file:// | ||
| + | |||
| Line 687: | Line 743: | ||
| Ya tenemos el mismo repositorio levantado | Ya tenemos el mismo repositorio levantado | ||
| + | |||
| + | Para exportar el repositorio (útil cuando hay conflictos de versiones): | ||
| + | |||
| + | svnadmin dump / | ||
| + | |||
| + | Para importarlo: | ||
| + | |||
| + | svnadmin create / | ||
| + | svnadmin load / | ||
| + | |||
| + | |||
| + | |||
| ===== Errores ====== | ===== Errores ====== | ||
| Line 693: | Line 761: | ||
| ***svn: Could not open the requested SVN filesystem** | ***svn: Could not open the requested SVN filesystem** | ||
| + | |||
| + | ***svn: Server sent unexpected return value (403 Forbidden) in response to OPTIONS request for ' | ||
| + | |||
| + | ***svn: Se esperaba un formato de FS entre 1 y ' | ||
| + | |||
| + | Se está intentando acceder a un repositorio de una versión de subversión posterior (1.6) a la instalada (1.5). | ||
| + | |||
| + | Solución: | ||
| + | |||
| + | 1. Desde una máquina con una versión de subversión igual a la del repositorio (1.6): | ||
| + | |||
| + | svnadmin dump / | ||
| + | | ||
| + | 2. Desde el servidor con la versión antigua (1.5) creamos un nuevo repositorio limpio: | ||
| + | |||
| + | svnadmin create / | ||
| + | |||
| + | 3. Cargamos el volcado generado en el paso 1: | ||
| + | |||
| + | svnadmin load / | ||
| + | |||
| + | |||
| + | ===== Descargar un solo archivo ====== | ||
| + | |||
| + | svn update http:// | ||
| + | |||
| + | |||
| + | ===== Listar revisiones ====== | ||
| + | |||
| + | *Nota* puede requerir primero: | ||
| + | |||
| + | svn update | ||
| + | |||
| + | Y luego: | ||
| + | |||
| + | svn log | ||
| + | |||
| + | |||
| + | |||
| + | ===== Comprobar si existen versiones nuevas en el repositorio ====== | ||
| + | |||
| + | < | ||
| + | svn st -u --no-auth-cache --username=USER | ||
| + | Authentication realm: < | ||
| + | Password for ' | ||
| + | * | ||
| + | * | ||
| + | * file2.sh | ||
| + | * | ||
| + | Status against revision: 234242 | ||
| + | </ | ||
| + | |||
| + | * | ||
| + | |||
| + | ===== Merge inverso o revertir a una revision concreta ====== | ||
| + | |||
| + | * *PROBLEMA* queremos eliminar las ultimas x revisiones de un proyecto | ||
| + | |||
| + | 1. Listar las revisiones | ||
| + | |||
| + | |||
| + | < | ||
| + | cd / | ||
| + | |||
| + | 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 | ||
| + | ------------------------------------------------------------------------ | ||
| + | </ | ||
| + | |||
| + | 2. Queremos volver a la version inicial (r1121): | ||
| + | |||
| + | sudo svn merge -r1132:1120 . | ||
| + | |||
| + | 3. Hacemos el commit: | ||
| + | |||
| + | svn commit -m ' | ||
| + | |||
| + | ===== Copiar directorio evitando .svn ====== | ||
| + | |||
| + | sudo rsync -r --exclude=.svn / | ||
informatica/linux/subversion.1263534282.txt.gz · Last modified: (external edit)
