Ara tenim els diferents paquets que formen un projecte organitzats en diferents repositoris, i amb la estructura de base del subversion, de manera que típicament tenim:
+ nomrepositori
|
+--+ trunk
| |
| +- nompaquet1
| +- nompaquet2
|
|- tags
|
+- branches
i a dins del trunk tots els paquets. això ens dona la estructura “fixa” nomrepositori/trunk/nompaquet, que sumat a la url base ens dona:
https://devel.upcnet.es/svn/nomrepositori/trunk/nompaquet
Amb el git, ens oblidem de tota aquesta palla, ja que el tema del trunk/branches ho farem amb els mètodes natius que ja ens ofereix el sistema git. Per tant la nova estructura que donarem als projectes i paquets seguirà les següens directives:
Tots els paquets estaran al mateix lloc, que serà l’arrel del git, per tant tots els paquets estaran sota el mateix patró de urls:
https://git.upcnet.es/nompaquet
o si hi accedim amb les claus ssh:
git@git.upcnet.es:nompaquet.git
Per organitzar els paquets, es faran grups, però que aquests no afecten a les urls que acavem de dir, simplement es per tenir-ho ordenat, i mantenir un cert sabor a com estava organitzat avans. Aquests grups es poden fer i desfer que no afecten a les urls. Exemple, si avans teniem:
https://devel.upcnet.es/svn/intranetupcnet/trunk/upcnet.intranet
https://devel.upcnet.es/svn/intranetupcnet/trunk/upcnet.intranettheme
ara passarem a tenir:
https://git.upcnet.es/upcnet.intranet
https://git.upcnet.es/upcnet.intranettheme
i un grup al qual podrem accedir desde:
https://git.upcnet.es/groups/intranetupcnet
Ara soliem tenir un paquet de buildout per cada projecte, dins el repositori del projecte, que feiem servir com a buildout de desenvolupament, i apart, els buildouts utilitzats a produccio, els teniem en el repositori deployment, organitzats per maquines, per exemple, el buildout de la intranet upcnet es trobava a:
https://devel.upcnet.es/svn/deployment/situla/trunk/intranetUPCnet
A partir d’ara, continuarem tenint un paquet per devel i un per produccio, però indicant en el nom si es de devel o de produccio de la seguent manera:
intranetupcnet.buildout.devel
intranetupcnet.buildout.deploy
i els guardarem en el grup que correspongui al projecte. Seguint amb l’exemple, el grup del projecte de la intranet upcnet, es quedaria amb els següents paquets a dins:
https://git.upcnet.es/upcnet.intranet
https://git.upcnet.es/upcnet.intranettheme
https://git.upcnet.es/intranetupcnet.buildout.devel
https://git.upcnet.es/intranetupcnet.buildout.deploy
Com que un repositori el podem tenir en més d’un grup a la vegada, els repositoris de deploy els organitzarem en grups segons la maquina on esta el projecte en producció, fent servir la nomenclatura:
host.deploy
on host sera el nom de la maquina sense posar el .upc.edu o .upc.es D’aquesta manera sera fàcil fer un llistat de tots els grups de maquines en producció, o bé buscar una maquina concreta.
Desde colladaverda, executar el migrador per cada un dels paquets que volem migrar indicant url del repositori, grup(s) on posarem el paquet importat i nom alternatiu (opcional) en cas que volguem renombrar el paquet:
svn2gitlab https://devel.upcnet.es/svn/xxxxxxxxxxx grup1,grup2 nom_alternatiu
Un exemple amb totes les opcions possibles:
root@colladaverda:~# svn2gitlab https://devel.upcnet.es/svn/deployment/situla/trunk/intranetUPCnet intranetupcnet,situla.deploy intranetupcnet.buildout.deploy
Subversion to GitLab Migrator 1.0
---------------------------------
> Checking out https://devel.upcnet.es/svn/deployment/situla/trunk/intranetUPCnet \
> Searching svn commiters for intranetUPCnet
· Found 3 unique commiters
> Cloning intranetUPCnet as local GIT repository /
> Creating new GIT repository at https://git.upcnet.es/intranetupcnet.buildout.deploy.git
> Pushing Repository.
> Marking Subversion repo as MOVED
Creating group "intranetupcnet"
Adding intranetupcnet.buildout.deploy to group "intranetupcnet"
Creating group "situla.deploy"
Adding intranetupcnet.buildout.deploy to group "situla.deploy"
> Applying security settings
· Added victor.fernandez to intranetupcnet.buildout.deploy developers team
· Added roberto.diaz to intranetupcnet.buildout.deploy developers team
· Added carles.bruguera to intranetupcnet.buildout.deploy developers team
El repositori subversion antic, un cop l’script a fet push al nou git, queda marcat amb un arxiu:
____MOVED____TO____GITLAB.txt
perque quedi clar que aquell subversion ja esta obsolet. A dins de l’arxiu, queda registrada la ubicació de nou repositori.
Un cop migrats els buildouts de devel, recordeu que els haureu d’adaptar per fer servir els nous repositoris:
Instalarem el mr.developer en el nostre buildout.cfg:
[buildout]
extensions = mr.developer
auto-checkout = *
Afegirem tots els paquets que hem de incloure com a development, tant si son git com si queda algun subversion:
[sources]
nom.paquet = git git@git.upcnet.es:nom.paquet.git
nom.paquet2 = svn https://xxxxxxxx
En cas que el buildout utilitzes externals per obtenir els paquets i descarregar-los a la carpeta src, la migració ja s’haurà encarregat d’eliminar les referencies, de totes maneres, millor esborrar el arxius EXTERNALS.txt de la carpeta src en cas que hi sigui.