25
Taller de Git Fernando López Introducción Esquemas de SVN Esquema desprolijo Esquema recomendado Corregir problemas Otros esquemas Licencia Taller de Git Clase 3 - Migración de SVN a Git Fernando López LINTI Facultad de Informática Universidad Nacional de la Plata 13 de Noviembre de 2013 Fernando López Taller de Git

Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Taller de GitClase 3 - Migración de SVN a Git

Fernando López

LINTIFacultad de Informática

Universidad Nacional de la Plata

13 de Noviembre de 2013

Fernando López Taller de Git

Page 2: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Indice

1 Introducción

2 Esquemas de SVNEsquema desprolijoEsquema recomendado

3 Corregir problemasOtros esquemas

4 Licencia

Fernando López Taller de Git

Page 3: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Links

• Tema de la clase

• Proyectos SVN a migrar

• Grupo Lihuen en GitLab.linti

• Todo sobre Git en la wiki de Lihuen

Fernando López Taller de Git

Page 4: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Introducción

• Instalar git-svn:apt-get install git-svn

• Repos Git a partir de SVN.• Se conservan commits.• Subiremos esos repos a un remoto.• Grupo de GitLab: lihuen.

Fernando López Taller de Git

Page 5: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Introducción

• Instalar git-svn:apt-get install git-svn

• Repos Git a partir de SVN.• Se conservan commits.• Subiremos esos repos a un remoto.• Grupo de GitLab: lihuen.

Fernando López Taller de Git

Page 6: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Introducción

• Instalar git-svn:apt-get install git-svn

• Repos Git a partir de SVN.• Se conservan commits.• Subiremos esos repos a un remoto.• Grupo de GitLab: lihuen.

Fernando López Taller de Git

Page 7: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Introducción

• Instalar git-svn:apt-get install git-svn

• Repos Git a partir de SVN.• Se conservan commits.• Subiremos esos repos a un remoto.• Grupo de GitLab: lihuen.

Fernando López Taller de Git

Page 8: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Introducción

• Instalar git-svn:apt-get install git-svn

• Repos Git a partir de SVN.• Se conservan commits.• Subiremos esos repos a un remoto.• Grupo de GitLab: lihuen.

Fernando López Taller de Git

Page 9: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Esquemas de SVNEsquema desprolijo

• ¡Todo suelto en un directorio!• No se recomienda.• Pero curiosamente...• Por ejemplo script-utils

• Para convertirlo a git:g i t svn c l o n e h t t p s : // v e r s i o n a d o r [ . . . ] / s c r i p t −u t i l s

• Para subirlo:cd s c r i p t −u t i l sg i t remote add o r i g i n \

g i t @ g i t l a b [ . . . ] : l i h u e n / s c r i p t −u t i l s . g i tg i t push −u o r i g i n master

Fernando López Taller de Git

Page 10: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Esquemas de SVNEsquema desprolijo

• ¡Todo suelto en un directorio!• No se recomienda.• Pero curiosamente...• Por ejemplo script-utils

• Para convertirlo a git:g i t svn c l o n e h t t p s : // v e r s i o n a d o r [ . . . ] / s c r i p t −u t i l s

• Para subirlo:cd s c r i p t −u t i l sg i t remote add o r i g i n \

g i t @ g i t l a b [ . . . ] : l i h u e n / s c r i p t −u t i l s . g i tg i t push −u o r i g i n master

Fernando López Taller de Git

Page 11: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Esquemas de SVNEsquema desprolijo

• ¡Todo suelto en un directorio!• No se recomienda.• Pero curiosamente...• Por ejemplo script-utils

• Para convertirlo a git:g i t svn c l o n e h t t p s : // v e r s i o n a d o r [ . . . ] / s c r i p t −u t i l s

• Para subirlo:cd s c r i p t −u t i l sg i t remote add o r i g i n \

g i t @ g i t l a b [ . . . ] : l i h u e n / s c r i p t −u t i l s . g i tg i t push −u o r i g i n master

Fernando López Taller de Git

Page 12: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Esquemas de SVNEsquema desprolijo

• ¡Todo suelto en un directorio!• No se recomienda.• Pero curiosamente...• Por ejemplo script-utils

• Para convertirlo a git:g i t svn c l o n e h t t p s : // v e r s i o n a d o r [ . . . ] / s c r i p t −u t i l s

• Para subirlo:cd s c r i p t −u t i l sg i t remote add o r i g i n \

g i t @ g i t l a b [ . . . ] : l i h u e n / s c r i p t −u t i l s . g i tg i t push −u o r i g i n master

Fernando López Taller de Git

Page 13: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Esquemas de SVNEsquema desprolijo

• ¡Todo suelto en un directorio!• No se recomienda.• Pero curiosamente...• Por ejemplo script-utils

• Para convertirlo a git:g i t svn c l o n e h t t p s : // v e r s i o n a d o r [ . . . ] / s c r i p t −u t i l s

• Para subirlo:cd s c r i p t −u t i l sg i t remote add o r i g i n \

g i t @ g i t l a b [ . . . ] : l i h u e n / s c r i p t −u t i l s . g i tg i t push −u o r i g i n master

Fernando López Taller de Git

Page 14: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Esquemas de SVNEsquema desprolijo

• ¡Todo suelto en un directorio!• No se recomienda.• Pero curiosamente...• Por ejemplo script-utils

• Para convertirlo a git:g i t svn c l o n e h t t p s : // v e r s i o n a d o r [ . . . ] / s c r i p t −u t i l s

• Para subirlo:cd s c r i p t −u t i l sg i t remote add o r i g i n \

g i t @ g i t l a b [ . . . ] : l i h u e n / s c r i p t −u t i l s . g i tg i t push −u o r i g i n master

Fernando López Taller de Git

Page 15: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Esquemas de SVNEsquema recomendado

Se recomienda tener 3 directorios por proyecto:• trunk → código fuente suelto.• branches → versiones divergentes.• tags → versiones publicadas.

Fernando López Taller de Git

Page 16: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Esquemas de SVNlihuenconfig

Un ejemplo es lihuenconfig:

lihuenconfig|-- branches| `-- lihuenconfig-chanchon|-- tags| |-- lihuenconfig-1.0-20071026| |-- lihuenconfig-1.0-20080313| |-- lihuenconfig-3.0-20100514| |-- lihuenconfig-3.4| `-- lihuenconfig_4.01-5`-- trunk

|-- debian|-- lihuenconfig`-- touchpads

Fernando López Taller de Git

Page 17: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Esquemas de SVNMigrar con branches y tags

• git-svn soporta este último esquema.• De forma limitada...• Usaremos el script:

script-utils/migrar-svn-a-git.sh .

Fernando López Taller de Git

Page 18: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Esquemas de SVNMigrar con branches y tags

• git-svn soporta este último esquema.• De forma limitada...• Usaremos el script:

script-utils/migrar-svn-a-git.sh .

Fernando López Taller de Git

Page 19: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Esquemas de SVNMigrar con branches y tags

• git-svn soporta este último esquema.• De forma limitada...• Usaremos el script:

script-utils/migrar-svn-a-git.sh .

Fernando López Taller de Git

Page 20: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Corregir problemas

Git no versiona dirs vacíos:f i n d −not −path " ∗/ . g i t ∗" −t ype d | wh i l e r ead d i r ; doi f [ −z "$ ( l s ␣" $ d i r " ) " ] ; then

touch " $ d i r / . g i t i g n o r e "g i t add " $ d i r "

f idone

Buscar archivos .iso en la historia:

g i t l o l a −−name−s t a t u s | g rep \\ . i s o

Eliminar oops.iso de la historia:g i t f i l t e r −branch −−prune−empty −d /dev/shm/ s c r a t c h \−−i ndex− f i l t e r " g i t ␣rm␣−−cached ␣−f ␣−−i g no r e−unmatch␣ oops . i s o " \−−tag−name− f i l t e r ca t −− −−a l l

Fernando López Taller de Git

Page 21: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Corregir problemas

Git no versiona dirs vacíos:f i n d −not −path " ∗/ . g i t ∗" −t ype d | wh i l e r ead d i r ; doi f [ −z "$ ( l s ␣" $ d i r " ) " ] ; then

touch " $ d i r / . g i t i g n o r e "g i t add " $ d i r "

f idone

Buscar archivos .iso en la historia:

g i t l o l a −−name−s t a t u s | g rep \\ . i s o

Eliminar oops.iso de la historia:g i t f i l t e r −branch −−prune−empty −d /dev/shm/ s c r a t c h \−−i ndex− f i l t e r " g i t ␣rm␣−−cached ␣−f ␣−−i g no r e−unmatch␣ oops . i s o " \−−tag−name− f i l t e r ca t −− −−a l l

Fernando López Taller de Git

Page 22: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Corregir problemas

Git no versiona dirs vacíos:f i n d −not −path " ∗/ . g i t ∗" −t ype d | wh i l e r ead d i r ; doi f [ −z "$ ( l s ␣" $ d i r " ) " ] ; then

touch " $ d i r / . g i t i g n o r e "g i t add " $ d i r "

f idone

Buscar archivos .iso en la historia:

g i t l o l a −−name−s t a t u s | g rep \\ . i s o

Eliminar oops.iso de la historia:g i t f i l t e r −branch −−prune−empty −d /dev/shm/ s c r a t c h \−−i ndex− f i l t e r " g i t ␣rm␣−−cached ␣−f ␣−−i g no r e−unmatch␣ oops . i s o " \−−tag−name− f i l t e r ca t −− −−a l l

Fernando López Taller de Git

Page 23: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Otros esquemas

• Adaptar el repo original a alguno de los esquemasdetallados usando Subversion.

• Una vez adaptado usar git-svn .

Fernando López Taller de Git

Page 24: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Otros esquemas

• Adaptar el repo original a alguno de los esquemasdetallados usando Subversion.

• Una vez adaptado usar git-svn .

Fernando López Taller de Git

Page 25: Taller de Git - Clase 3 - Migración de SVN a Git · git filter branch prune empty d /dev/shm/scratch \ index filter"git rm cached f ignore unmatch oops.iso"\ tag name filtercat all

Taller de Git

FernandoLópez

Introducción

Esquemas deSVNEsquemadesprolijoEsquemarecomendado

CorregirproblemasOtrosesquemas

Licencia

Licencia

Fuentes:• http://git-scm.com/book

• http://git-scm.com

• http://nvie.com/posts/a-successful-git-branching-model/

• https://wiki.diasporafoundation.org/Git_Workflow#Branching_model

• http://lihuen.linti.unlp.edu.ar/index.php?title=Workflow_Git/SVN

Taller de Git por Fernando López (LINTI-UNLP) se encuentrabajo una Licencia Creative Commons Atribución-CompartirIgual

3.0 Unported.

Fernando López Taller de Git