informatica:linux:subversion
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
informatica:linux:subversion [2010/01/15 05:54] – 192.168.1.30 | informatica:linux:subversion [2015/01/22 11:58] – [Subversion y apache] javi | ||
---|---|---|---|
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 697: | Line 752: | ||
svnadmin create / | svnadmin create / | ||
svnadmin load / | svnadmin load / | ||
+ | |||
+ | |||
+ | |||
===== Errores ====== | ===== Errores ====== | ||
Line 703: | 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.txt · Last modified: 2015/04/13 20:19 by 127.0.0.1