SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
Subversion
Uso avanzado
    Bruno Gonzalez <bruno@irontec.com>
Irontec – Internet y Sistemas sobre GNU/Linux
Curso Avanzado SVN




1
                                      Esquema del curso

    1.Nociones básicas:
        1.Svn 101
        2.Estructura de un checkout
        3.Estructura de un repo
    2.merge y su hijo bastardo: update
    3.Merge avanzado: branches
    4.Arreglar los conflictos de merge/update

    5.Externals

    6.Miscelanea


                                                       2
Curso Avanzado SVN




1
                       Nociones Básicas




    Nociones básicas




                                     3
Curso Avanzado SVN




1
                           Nociones Básicas: SVN 101

    ➢   Comandos típicos
          ➢ Checkout – svn co


          ➢ Update – svn up


          ➢ Commit – svn ci


          ➢ Status – svn st


          ➢ cat, blame, log… → svn help


    ➢   Usar siempre que se pueda:
          ➢ Copy – cp


          ➢ Move – mv


    ➢   URLs:
          ➢ Locales:        ./X
          ➢ Remotas:        http://dev2.../X
          ➢ Remota (rev):   http://dev2.../X@R
                                                       4
Curso Avanzado SVN




1
    Nociones Básicas: Estructura básica de un checkout



       ➢   Datos → ls
       ➢   Metadatos → ls .svn
             ➢ svn info *


             ➢ svn proplist    (propedit, propdel...)


       ➢   Se puede mover un checkout o subdirectorio
           por el disco duro sin problemas.




                                                           5
Curso Avanzado SVN
            Nociones Básicas: Estructura básica de un

1   ➢   trunk tags branches:
                                          repositorio


           ➢ Es un estandard de-facto


           ➢ Podemos usarlo o no, a svn le da igual




    ➢   Los directorios de svn tienen el significado
        que nosotros le demos:
          ➢ trunk releases branches


          ➢ trunk tags branches


          ➢ edge released estable


          ➢ internal external


          ➢ (nada)


          ➢ ...




                                                        6
Curso Avanzado SVN




1
                   Merge y su hijo bastardo: update




    Merge y su hijo bastardo: update




                                                   7
Curso Avanzado SVN




1
            Merge y su hijo bastardo update: merge 101

    ➢   Qué es merge → DIFF + PATCH
          ➢ 1) Encontrar cambios en un sitio


          ➢ 2) Aplicar los cambios en otro sitio (by


              default: “.”)

        svn merge -r rev1:rev2 origen [destino]

    ➢   Ejemplo:
           ➢ svn merge -r BASE:HEAD .


           ➢ svn update -r     HEAD

    ➢   svn help merge
          ➢ --dry-run para previsualizar sin aplicar

                                                        8
Curso Avanzado SVN




1
    Merge y su hijo bastardo update: backports/rollbacks

       ➢   Qué es un backport: aplicar un bugfix/feature
           de otro sitio a nuestro checkout/fichero.
           svn merge -rREV-1:REV otroSitio nuestroCheckout
           svn merge -c      REV otroSitio nuestroCheckout


       ➢   Backport de varios revisiones concretas:
           svn merge -c 5, 7, 10,11 otroSitio nuestroCheckout
           svn merge -r 4:5 6:7 9:11 otroSitio nuestroCheckout

       ➢   Restaurar una version vieja:
           svn merge -r BASE:X nuestroFichero   nuestroCheckout
           svn cp              nuestroFichero@X nuestroCheckout

       ➢   Para evitar conflictos, no tener cambios
           locales
                                                                 9
Curso Avanzado SVN




1
                Merge avanzado: branches




    Merge avanzado: branches




                                          10
Curso Avanzado SVN




1
               Merge avanzado de branches: premisas

    ➢   Tipos básicos:
           ➢ Ramas constantes (nunca cambiarán):


              ➢ Tags, releases, snapshots


           ➢ Ramas a corto plazo (horas/días):


              ➢ Features, bugfixes complicados


           ➢ Ramas a largo plazo (infinito):


              ➢ Estable, trunk




    ➢   Antes de remezclar ramas ni mergear nada:
            Eliminar/Committear siempre los
                    cambios locales!!


                                                     11
Curso Avanzado SVN




1
                Merge avanzado de branches: premisas

    ➢   Crear una rama:
          ➢ svn cp trunk miRama


          ➢ svn cp http://.../trunk http://.../miRama




    ➢   Renombrar una rama:
          ➢ svn mv http://.../miRama http://.../foo




    ➢   Eliminar una rama que ya no hace falta:
           ➢ svn rm http://.../miRama




    ➢   Aún así, siempre quedarán en el historial!!
    ➢   Atajo: http://.../svn/proyecto/XXX == ^XXX

                                                        12
Curso Avanzado SVN




1
        Merge avanzado de branches: ramas constantes

    ➢   Son lo más simple:
          ➢ svn cp http://.../trunk http://.../tags/XXX




    ➢   Lo normal es que jamás se modifiquen estas
        ramas (excepto renombrar tal vez).

    ➢   Es típico usarlas para cada “entrega” o
        checkpoint importante.

    ➢   Entregas:
          ➢ svn export http://.../tags/XXX XXX


          ➢ zip -r 9 XXX.zip XXX


          ➢ thunderbird XXX.zip (o lo que sea...)

                                                          13
Curso Avanzado SVN




1
    Merge avanzado de branches: ramas a corto plazo

    ➢   Crear rama como siempre:
          ➢ svn cp http://.../trunk http://.../featureX




    ➢   Developear en esa rama:
          ➢ while (1): vi *.php; svn ci


    ➢   Ponerse al día con trunk:
          ➢ svn merge ^/trunk


    ➢   Pasar tu featureX a trunk:
          ➢ svn switch ^/trunk


          ➢ svn merge ^/featureX




    ➢   Eliminar rama como siempre:
           ➢ svn rm http://.../featureX
                                                          14
Curso Avanzado SVN




1
    Merge avanzado de branches: ramas a largo plazo

    ➢   Crear rama como siempre:
          ➢ svn cp http://.../trunk http://.../clienteX




    ➢   Developear en esa rama:
          ➢ while (1): vi *.php; svn ci


    ➢   Ponerse al día con todo trunk:
          ➢ svn merge ^/trunk


    ➢   Backportear un revisiones concretas:
          ➢ svn merge -c 158 ^/clienteYYY


          ➢ svn merge -c 48,49,109 ^/clienteZZZ




                                                          15
Curso Avanzado SVN




1
          Arreglar los conflictos de merge/update




    Arreglar los conflictos de merge/update




                                                 16
Curso Avanzado SVN




1
                       Arreglar los conflictos: qué son

    ➢   “Mi casa es blanca”
    ➢   Juan: “Mi casa es negra” → svn commit
    ➢   Svn: OK!
    ➢   Enjuto: “Tu casa es blanca” → svn commit
    ➢   Svn: error, updatea tu version
    ➢   Enjuto: svn update
    ➢   Svn: error, hay un conflicto

           SVN no sabe si debe dejarlo como juan
               quiere o como enjuto quiere.



                                                      17
Curso Avanzado SVN
           Arreglar los conflictos: cómo se identifican y

1   ➢   Aparece una 'C' en svn status
                                               resuelven


    ➢   Aparecen fichero.mine, fichero.r27, etc.
    ➢   Svn modifica el fichero con el intento de
        merge.
        >>>>>>
        “Mi casa es negra”
        ======
        “Tu casa es blanca”
        <<<<<<


    ➢   Enjuto: vi fichero→“mi casa es negra, la tuya blanca”
    ➢   Enjuto: svn resolved fichero
    ➢   Enjuto: svn commit
    ➢   Svn: OK!
                                                            18
Curso Avanzado SVN




1
      Svn externals y otros consejos




    svn externals y otros consejos




                                    19
Curso Avanzado SVN




1
                           Svn externals y otros consejos

    ➢   Son metadatos. Permite symlinkear a
        cualquier directorio de cualquier repositorio.

    ➢   Como crearlos:
          ➢ svn propedit svn:externals .


             libs/karma -r1287 http://.../karma/trunk
             libs/karma http://.../karma/tags/v1.5”


    ➢   Usar revisiones o ramas constantes siempre!
          ➢ Así un checkout de tu proyecto obtendra


              siempre karma en el mismo estado
              ahora y el año que viene.

    ➢   Ojo: las rutas no se actualizan solas!               20
Curso Avanzado SVN




1
                            Svn externals y otros consejos

    ➢   Versionar un fichero como ejecutable:
            svn propset svn:executable “*” fichero

    ➢   Ignorar ficheros de un directorio:
           ➢ Svn propedit svn:ignore .


                 tmp.*
                 cache/.*jpg
                 Debug$

    ➢   Poder visualizar un diff:
            apt-get install colordiff
            echo 'svn diff $* |colordiff |less -R' >svndiff.sh

    ➢   Autonotas en mantis?
                                                                 21

Contenu connexe

En vedette

IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...Irontec
 
Qué hace tu Asterisk cuando no miras
Qué hace tu Asterisk cuando no mirasQué hace tu Asterisk cuando no miras
Qué hace tu Asterisk cuando no mirasElio Rojano
 
Curso de VoIP / Parte 01: VoIP y Asterisk
Curso de VoIP / Parte 01: VoIP y AsteriskCurso de VoIP / Parte 01: VoIP y Asterisk
Curso de VoIP / Parte 01: VoIP y AsteriskIrontec
 
Comparativa Firewall: IPCop vs. pfSense
Comparativa Firewall: IPCop vs. pfSenseComparativa Firewall: IPCop vs. pfSense
Comparativa Firewall: IPCop vs. pfSenseIrontec
 
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAXJavascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAXIrontec
 
Curso de VoIP / Parte 02: SIP
Curso de VoIP / Parte 02: SIPCurso de VoIP / Parte 02: SIP
Curso de VoIP / Parte 02: SIPIrontec
 
Curso completo de CRM + SugarCRM
Curso completo de CRM + SugarCRMCurso completo de CRM + SugarCRM
Curso completo de CRM + SugarCRMIrontec
 
Sistemas de VoIP con Asterisk: Modulo I
Sistemas de VoIP con Asterisk: Modulo ISistemas de VoIP con Asterisk: Modulo I
Sistemas de VoIP con Asterisk: Modulo IGabriel Astudillo
 

En vedette (10)

IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
 
Qué hace tu Asterisk cuando no miras
Qué hace tu Asterisk cuando no mirasQué hace tu Asterisk cuando no miras
Qué hace tu Asterisk cuando no miras
 
Curso de VoIP / Parte 01: VoIP y Asterisk
Curso de VoIP / Parte 01: VoIP y AsteriskCurso de VoIP / Parte 01: VoIP y Asterisk
Curso de VoIP / Parte 01: VoIP y Asterisk
 
Comparativa Firewall: IPCop vs. pfSense
Comparativa Firewall: IPCop vs. pfSenseComparativa Firewall: IPCop vs. pfSense
Comparativa Firewall: IPCop vs. pfSense
 
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAXJavascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
 
Introducción a Asterisk
Introducción a AsteriskIntroducción a Asterisk
Introducción a Asterisk
 
Curso de VoIP / Parte 02: SIP
Curso de VoIP / Parte 02: SIPCurso de VoIP / Parte 02: SIP
Curso de VoIP / Parte 02: SIP
 
Curso completo de CRM + SugarCRM
Curso completo de CRM + SugarCRMCurso completo de CRM + SugarCRM
Curso completo de CRM + SugarCRM
 
Sistemas de VoIP con Asterisk: Modulo I
Sistemas de VoIP con Asterisk: Modulo ISistemas de VoIP con Asterisk: Modulo I
Sistemas de VoIP con Asterisk: Modulo I
 
Curso de Asterisk (e-Verano 2007)
Curso de Asterisk (e-Verano 2007)Curso de Asterisk (e-Verano 2007)
Curso de Asterisk (e-Verano 2007)
 

Similaire à Curso avanzado SVN

Svn: Sistema de archivos 4d
Svn: Sistema de archivos 4dSvn: Sistema de archivos 4d
Svn: Sistema de archivos 4dJavier P.
 
Sistemas de control de versiones. Introducción a svn
Sistemas de control de versiones. Introducción a svnSistemas de control de versiones. Introducción a svn
Sistemas de control de versiones. Introducción a svnmiguelolivan
 
Presentacion Subversion
Presentacion SubversionPresentacion Subversion
Presentacion SubversionCesar Yanez
 
Presentación SUbversion
Presentación SUbversionPresentación SUbversion
Presentación SUbversionrxif914u41
 
02-cvs-1.pdf
02-cvs-1.pdf02-cvs-1.pdf
02-cvs-1.pdfAlbusIva
 

Similaire à Curso avanzado SVN (9)

Svn: Sistema de archivos 4d
Svn: Sistema de archivos 4dSvn: Sistema de archivos 4d
Svn: Sistema de archivos 4d
 
Sistemas de control de versiones. Introducción a svn
Sistemas de control de versiones. Introducción a svnSistemas de control de versiones. Introducción a svn
Sistemas de control de versiones. Introducción a svn
 
Control de versiones y Subversion
Control de versiones y SubversionControl de versiones y Subversion
Control de versiones y Subversion
 
Introduccion Subversion
Introduccion SubversionIntroduccion Subversion
Introduccion Subversion
 
Charla mspba
Charla mspbaCharla mspba
Charla mspba
 
Presentacion Subversion
Presentacion SubversionPresentacion Subversion
Presentacion Subversion
 
Presentación SUbversion
Presentación SUbversionPresentación SUbversion
Presentación SUbversion
 
Subversion v6
Subversion v6Subversion v6
Subversion v6
 
02-cvs-1.pdf
02-cvs-1.pdf02-cvs-1.pdf
02-cvs-1.pdf
 

Plus de Irontec

Gestion de proyectos con GitLab en tiempos de teletrabajo
Gestion de proyectos con GitLab en tiempos de teletrabajoGestion de proyectos con GitLab en tiempos de teletrabajo
Gestion de proyectos con GitLab en tiempos de teletrabajoIrontec
 
Sobre cómo gestionamos centenares de despliegues de VoIP
Sobre cómo gestionamos centenares de despliegues de VoIPSobre cómo gestionamos centenares de despliegues de VoIP
Sobre cómo gestionamos centenares de despliegues de VoIPIrontec
 
Presente y futuro del nuevo IVOZ Provider
Presente y futuro del nuevo IVOZ ProviderPresente y futuro del nuevo IVOZ Provider
Presente y futuro del nuevo IVOZ ProviderIrontec
 
Automated Testing para aplicaciones VoIP, WebRTC
Automated Testing para aplicaciones VoIP, WebRTCAutomated Testing para aplicaciones VoIP, WebRTC
Automated Testing para aplicaciones VoIP, WebRTCIrontec
 
Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...
Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...
Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...Irontec
 
LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17
LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17
LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17Irontec
 
VoIP2DAY 2015 - Workshop comercial ivoz provider
VoIP2DAY 2015 - Workshop comercial ivoz providerVoIP2DAY 2015 - Workshop comercial ivoz provider
VoIP2DAY 2015 - Workshop comercial ivoz providerIrontec
 
Irontec - comunicaciones unificadas en educación - biopen eduka - software li...
Irontec - comunicaciones unificadas en educación - biopen eduka - software li...Irontec - comunicaciones unificadas en educación - biopen eduka - software li...
Irontec - comunicaciones unificadas en educación - biopen eduka - software li...Irontec
 
Introducción a varnish cache (@irontec)
Introducción a varnish cache (@irontec)Introducción a varnish cache (@irontec)
Introducción a varnish cache (@irontec)Irontec
 
Curso de introducción a Sphinx | Irontec
Curso de introducción a Sphinx | IrontecCurso de introducción a Sphinx | Irontec
Curso de introducción a Sphinx | IrontecIrontec
 
Euskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskera
Euskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskeraEuskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskera
Euskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskeraIrontec
 
Virtualizacion KVM + libvirt + HREL6
Virtualizacion KVM + libvirt + HREL6Virtualizacion KVM + libvirt + HREL6
Virtualizacion KVM + libvirt + HREL6Irontec
 
Caso de éxito: Irontec por nuestro proveedor Hostalia
Caso de éxito: Irontec por nuestro proveedor HostaliaCaso de éxito: Irontec por nuestro proveedor Hostalia
Caso de éxito: Irontec por nuestro proveedor HostaliaIrontec
 
PHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en AndroidPHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en AndroidIrontec
 
Mysql Administracion
Mysql AdministracionMysql Administracion
Mysql AdministracionIrontec
 
Mysq Replication
Mysq ReplicationMysq Replication
Mysq ReplicationIrontec
 
Curso avanzado de programación y configuración de Wordpress
Curso avanzado de programación y configuración de WordpressCurso avanzado de programación y configuración de Wordpress
Curso avanzado de programación y configuración de WordpressIrontec
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVIrontec
 
Certificación y firma electrónica
Certificación y firma electrónicaCertificación y firma electrónica
Certificación y firma electrónicaIrontec
 

Plus de Irontec (19)

Gestion de proyectos con GitLab en tiempos de teletrabajo
Gestion de proyectos con GitLab en tiempos de teletrabajoGestion de proyectos con GitLab en tiempos de teletrabajo
Gestion de proyectos con GitLab en tiempos de teletrabajo
 
Sobre cómo gestionamos centenares de despliegues de VoIP
Sobre cómo gestionamos centenares de despliegues de VoIPSobre cómo gestionamos centenares de despliegues de VoIP
Sobre cómo gestionamos centenares de despliegues de VoIP
 
Presente y futuro del nuevo IVOZ Provider
Presente y futuro del nuevo IVOZ ProviderPresente y futuro del nuevo IVOZ Provider
Presente y futuro del nuevo IVOZ Provider
 
Automated Testing para aplicaciones VoIP, WebRTC
Automated Testing para aplicaciones VoIP, WebRTCAutomated Testing para aplicaciones VoIP, WebRTC
Automated Testing para aplicaciones VoIP, WebRTC
 
Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...
Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...
Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...
 
LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17
LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17
LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17
 
VoIP2DAY 2015 - Workshop comercial ivoz provider
VoIP2DAY 2015 - Workshop comercial ivoz providerVoIP2DAY 2015 - Workshop comercial ivoz provider
VoIP2DAY 2015 - Workshop comercial ivoz provider
 
Irontec - comunicaciones unificadas en educación - biopen eduka - software li...
Irontec - comunicaciones unificadas en educación - biopen eduka - software li...Irontec - comunicaciones unificadas en educación - biopen eduka - software li...
Irontec - comunicaciones unificadas en educación - biopen eduka - software li...
 
Introducción a varnish cache (@irontec)
Introducción a varnish cache (@irontec)Introducción a varnish cache (@irontec)
Introducción a varnish cache (@irontec)
 
Curso de introducción a Sphinx | Irontec
Curso de introducción a Sphinx | IrontecCurso de introducción a Sphinx | Irontec
Curso de introducción a Sphinx | Irontec
 
Euskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskera
Euskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskeraEuskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskera
Euskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskera
 
Virtualizacion KVM + libvirt + HREL6
Virtualizacion KVM + libvirt + HREL6Virtualizacion KVM + libvirt + HREL6
Virtualizacion KVM + libvirt + HREL6
 
Caso de éxito: Irontec por nuestro proveedor Hostalia
Caso de éxito: Irontec por nuestro proveedor HostaliaCaso de éxito: Irontec por nuestro proveedor Hostalia
Caso de éxito: Irontec por nuestro proveedor Hostalia
 
PHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en AndroidPHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en Android
 
Mysql Administracion
Mysql AdministracionMysql Administracion
Mysql Administracion
 
Mysq Replication
Mysq ReplicationMysq Replication
Mysq Replication
 
Curso avanzado de programación y configuración de Wordpress
Curso avanzado de programación y configuración de WordpressCurso avanzado de programación y configuración de Wordpress
Curso avanzado de programación y configuración de Wordpress
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPV
 
Certificación y firma electrónica
Certificación y firma electrónicaCertificación y firma electrónica
Certificación y firma electrónica
 

Dernier

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 

Dernier (10)

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 

Curso avanzado SVN

  • 1. Subversion Uso avanzado Bruno Gonzalez <bruno@irontec.com> Irontec – Internet y Sistemas sobre GNU/Linux
  • 2. Curso Avanzado SVN 1 Esquema del curso 1.Nociones básicas: 1.Svn 101 2.Estructura de un checkout 3.Estructura de un repo 2.merge y su hijo bastardo: update 3.Merge avanzado: branches 4.Arreglar los conflictos de merge/update 5.Externals 6.Miscelanea 2
  • 3. Curso Avanzado SVN 1 Nociones Básicas Nociones básicas 3
  • 4. Curso Avanzado SVN 1 Nociones Básicas: SVN 101 ➢ Comandos típicos ➢ Checkout – svn co ➢ Update – svn up ➢ Commit – svn ci ➢ Status – svn st ➢ cat, blame, log… → svn help ➢ Usar siempre que se pueda: ➢ Copy – cp ➢ Move – mv ➢ URLs: ➢ Locales: ./X ➢ Remotas: http://dev2.../X ➢ Remota (rev): http://dev2.../X@R 4
  • 5. Curso Avanzado SVN 1 Nociones Básicas: Estructura básica de un checkout ➢ Datos → ls ➢ Metadatos → ls .svn ➢ svn info * ➢ svn proplist (propedit, propdel...) ➢ Se puede mover un checkout o subdirectorio por el disco duro sin problemas. 5
  • 6. Curso Avanzado SVN Nociones Básicas: Estructura básica de un 1 ➢ trunk tags branches: repositorio ➢ Es un estandard de-facto ➢ Podemos usarlo o no, a svn le da igual ➢ Los directorios de svn tienen el significado que nosotros le demos: ➢ trunk releases branches ➢ trunk tags branches ➢ edge released estable ➢ internal external ➢ (nada) ➢ ... 6
  • 7. Curso Avanzado SVN 1 Merge y su hijo bastardo: update Merge y su hijo bastardo: update 7
  • 8. Curso Avanzado SVN 1 Merge y su hijo bastardo update: merge 101 ➢ Qué es merge → DIFF + PATCH ➢ 1) Encontrar cambios en un sitio ➢ 2) Aplicar los cambios en otro sitio (by default: “.”) svn merge -r rev1:rev2 origen [destino] ➢ Ejemplo: ➢ svn merge -r BASE:HEAD . ➢ svn update -r HEAD ➢ svn help merge ➢ --dry-run para previsualizar sin aplicar 8
  • 9. Curso Avanzado SVN 1 Merge y su hijo bastardo update: backports/rollbacks ➢ Qué es un backport: aplicar un bugfix/feature de otro sitio a nuestro checkout/fichero. svn merge -rREV-1:REV otroSitio nuestroCheckout svn merge -c REV otroSitio nuestroCheckout ➢ Backport de varios revisiones concretas: svn merge -c 5, 7, 10,11 otroSitio nuestroCheckout svn merge -r 4:5 6:7 9:11 otroSitio nuestroCheckout ➢ Restaurar una version vieja: svn merge -r BASE:X nuestroFichero nuestroCheckout svn cp nuestroFichero@X nuestroCheckout ➢ Para evitar conflictos, no tener cambios locales 9
  • 10. Curso Avanzado SVN 1 Merge avanzado: branches Merge avanzado: branches 10
  • 11. Curso Avanzado SVN 1 Merge avanzado de branches: premisas ➢ Tipos básicos: ➢ Ramas constantes (nunca cambiarán): ➢ Tags, releases, snapshots ➢ Ramas a corto plazo (horas/días): ➢ Features, bugfixes complicados ➢ Ramas a largo plazo (infinito): ➢ Estable, trunk ➢ Antes de remezclar ramas ni mergear nada: Eliminar/Committear siempre los cambios locales!! 11
  • 12. Curso Avanzado SVN 1 Merge avanzado de branches: premisas ➢ Crear una rama: ➢ svn cp trunk miRama ➢ svn cp http://.../trunk http://.../miRama ➢ Renombrar una rama: ➢ svn mv http://.../miRama http://.../foo ➢ Eliminar una rama que ya no hace falta: ➢ svn rm http://.../miRama ➢ Aún así, siempre quedarán en el historial!! ➢ Atajo: http://.../svn/proyecto/XXX == ^XXX 12
  • 13. Curso Avanzado SVN 1 Merge avanzado de branches: ramas constantes ➢ Son lo más simple: ➢ svn cp http://.../trunk http://.../tags/XXX ➢ Lo normal es que jamás se modifiquen estas ramas (excepto renombrar tal vez). ➢ Es típico usarlas para cada “entrega” o checkpoint importante. ➢ Entregas: ➢ svn export http://.../tags/XXX XXX ➢ zip -r 9 XXX.zip XXX ➢ thunderbird XXX.zip (o lo que sea...) 13
  • 14. Curso Avanzado SVN 1 Merge avanzado de branches: ramas a corto plazo ➢ Crear rama como siempre: ➢ svn cp http://.../trunk http://.../featureX ➢ Developear en esa rama: ➢ while (1): vi *.php; svn ci ➢ Ponerse al día con trunk: ➢ svn merge ^/trunk ➢ Pasar tu featureX a trunk: ➢ svn switch ^/trunk ➢ svn merge ^/featureX ➢ Eliminar rama como siempre: ➢ svn rm http://.../featureX 14
  • 15. Curso Avanzado SVN 1 Merge avanzado de branches: ramas a largo plazo ➢ Crear rama como siempre: ➢ svn cp http://.../trunk http://.../clienteX ➢ Developear en esa rama: ➢ while (1): vi *.php; svn ci ➢ Ponerse al día con todo trunk: ➢ svn merge ^/trunk ➢ Backportear un revisiones concretas: ➢ svn merge -c 158 ^/clienteYYY ➢ svn merge -c 48,49,109 ^/clienteZZZ 15
  • 16. Curso Avanzado SVN 1 Arreglar los conflictos de merge/update Arreglar los conflictos de merge/update 16
  • 17. Curso Avanzado SVN 1 Arreglar los conflictos: qué son ➢ “Mi casa es blanca” ➢ Juan: “Mi casa es negra” → svn commit ➢ Svn: OK! ➢ Enjuto: “Tu casa es blanca” → svn commit ➢ Svn: error, updatea tu version ➢ Enjuto: svn update ➢ Svn: error, hay un conflicto SVN no sabe si debe dejarlo como juan quiere o como enjuto quiere. 17
  • 18. Curso Avanzado SVN Arreglar los conflictos: cómo se identifican y 1 ➢ Aparece una 'C' en svn status resuelven ➢ Aparecen fichero.mine, fichero.r27, etc. ➢ Svn modifica el fichero con el intento de merge. >>>>>> “Mi casa es negra” ====== “Tu casa es blanca” <<<<<< ➢ Enjuto: vi fichero→“mi casa es negra, la tuya blanca” ➢ Enjuto: svn resolved fichero ➢ Enjuto: svn commit ➢ Svn: OK! 18
  • 19. Curso Avanzado SVN 1 Svn externals y otros consejos svn externals y otros consejos 19
  • 20. Curso Avanzado SVN 1 Svn externals y otros consejos ➢ Son metadatos. Permite symlinkear a cualquier directorio de cualquier repositorio. ➢ Como crearlos: ➢ svn propedit svn:externals . libs/karma -r1287 http://.../karma/trunk libs/karma http://.../karma/tags/v1.5” ➢ Usar revisiones o ramas constantes siempre! ➢ Así un checkout de tu proyecto obtendra siempre karma en el mismo estado ahora y el año que viene. ➢ Ojo: las rutas no se actualizan solas! 20
  • 21. Curso Avanzado SVN 1 Svn externals y otros consejos ➢ Versionar un fichero como ejecutable: svn propset svn:executable “*” fichero ➢ Ignorar ficheros de un directorio: ➢ Svn propedit svn:ignore . tmp.* cache/.*jpg Debug$ ➢ Poder visualizar un diff: apt-get install colordiff echo 'svn diff $* |colordiff |less -R' >svndiff.sh ➢ Autonotas en mantis? 21