Más allá de lo que ves: enero 2014

domingo, 19 de enero de 2014

Google Web Font Roboto, nueva fuente para Más allá de lo que vés

Actualizada la fuente para las entradas y títulos de Más allá de lo que vés. Cambio a Roboto.

Para añadirla a Blogger he seguido los sencillos pasos que se describen en este enlace : How to add Google Web Font to your Blogger

Estilo utilizado:
div.post-body {
  text-align:justify;
  font-family: Roboto;
  font-weight: 300;
  font-size:15px;
}

h3.post-title, h3.post-title a {
  font-family: Roboto;
  font-weight: 800;
  font-size:20px;
}
Se ve más molón, ¿sí?


Un saludo.

Git - Merge de dos repositorios en uno

En la entrada Git Svn - Importar de Subversion a Git mostraba como importar a Git dos proyectos que tenemos en Subversion con su histórico de commits... Vamos ahora a ver como unificar esos dos repositorios Git en uno solo.

Recordemos que tenemos un proyecto "mi-proyecto" que se compone de dos módulos que hemos importado a repositorios Git diferentes desde Subversion, "mi-proyecto-webmodule" (ubicado en http://url/mi-proyecto-webmodule.git) y "mi-proyecto-modelomodule" (ubicado en http://url/mi-proyecto-modelomodule.git)

Comencemos, los pasos son muy sencillos.

1. Vamos a crear un capeta para el proyecto completo, p.e. /dev/mi-proyecto.
$ mkdir -p /dev/mi-proyecto


2. Dentro de este inicializamos Git.
$ cd /dev/mi-proyecto
$ git init


3. Añadimos un primer commit (añadimos por ejemplo un fichero README al proyecto) para poder hacer merge.
$ touch README
$ git add .
$ git commit -m 'Añadimos el fichero README del proyecto'

4. Añadiremos un remoto al proyecto mi-proyecto-webmodule.git
$ git remote add -f webmodule http://url/mi-proyecto-webmodule.git

5. Hacemos merge de webmodule/master en la rama master de nuestro repositorio local.
$ git merge webmodule/master

6. Ahora movemos todos los fichero del proyecto mi-proyecto-webmodule a una carpeta para contener el código específico del módulo. Imaginemos que la estructura del proyecto mi-proyecto-webmodule está organizada en dos carpetas "src" y "web", entonces tendríamos:
$ mkdir mi-proyecto-wm
$ git mv src/ mi-proyecto-wm/
$ git mv web/ mi-proyecto-wm/
$ git add .
$ git commit -m 'Movemos el código del proyecto web a la carpeta mi-proyecto-wm'

7. Para el proyecto mi-proyecto-modelomodel debería proceder igual desde los puntos 3 al 6, la secuencia de comandos sería la que sigue. Vamos a considerar que el contenido en este caso se encuentra bajo la carpeta src:
$ git remote add -f modelomodule http://url/mi-proyecto-modelomodule.git

$ git merge modelomodule/master

$ mkdir mi-proyecto-jm
$ git mv src/ mi-proyecto-wm/
$ git add .
$ git commit -m 'Movemos el código del proyecto modelo a la carpeta mi-proyecto-jm'

Listo ya tenemos en nuestro repositorio ambos proyectos fusionados con su histórico de commits.

Si ahora queremos publicar nuestro código en un repositorio remoto no tendríamos más que añadir nuestro remoto y hacer push:
$ git remote add -f origin http://url/mi-proyecto.git

$ git push -u origin master

En la próxima entrega...


Hoy hemos agrupado en un solo repositorio el código completo que forma nuestro proyecto compuesto por un módulo principal y una librería. Si bien esto es correcto y nos permite que a medida que nuestro proyecto evoluciona podamos crear tags que establecen concretamente el código completo que forma una versión concreta, probablemente nos interese tener la carpeta mi-proyecto-jm conectada con http://url/mi-proyecto-modelomodule.git de forma que podamos recibir actualizaciones de esta librería o bien aportar cambios o mejoras. En la próxima entrada veremos como realizar esto utilizando "Git Subtree". Nos vemos.

Espero que pueda ser útil.


Saludos.

sábado, 4 de enero de 2014

Git Svn - Importar de Subversion a Git

Para importar un proyecto que consta de diferentes módulos con código en Subversion a un único proyecto en Git, lo primero que haremos será pasar cada uno de los módulos de Subversion a Git con su histórico particular de commits. Esta parte es muy muy muy sencilla y será lo que veremos en esta entrada.

Mapeo de usuarios Subversion y Git

Lo primero que debemos hacer es crear un fichero para mapear los usuarios de Subversion con los usuarios que vamos a tener en Git. En Subversion los usuarios se definen con un nombre de usuario pero en Git debemos definir un nombre y una dirección de correo.

Nuestro fichero debe tener el siguiente formato:
usuario-svn-1 = Javier Montesinos <fj.montesinos@gmail.com>
usuario-svn-2 = Nombre Apellidos <nombre.apellidos@gmail.com>

De tal forma que debemos añadir tantos usuarios de Subversion al fichero de mapeo como usuarios hayan realizado commits en los proyectos que deseamos migrar a Git. De todos modos no te preocupes porque Git te avisará si al realizar la importación encuentra un usuario que no está en el fichero de mapeo, lo añades y volverías a ejecutar el proceso de importación. 

Una vez tenemos el fichero usuarios-svn.txt finalizado y ubicado por ejemplo en la siguiente ruta /git-learning/common/users-svn.txt lo siguiente que tenemos que realizar es importar el proyecto de Subversion a Git

Importar proyecto de Subversion a Git 

Supongamos que tenemos un proyecto padre con el nombre Mi Aplicación que consta de dos módulos la parte web, mi-aplicacion-wm y el modelo, mi-aplicacion-model-jm donde tenemos definido servicios, dominio, capa de acceso a datos para que en el caso de necesitar realizar una capa de servicios REST tan solo debamos implementar la parte REST mediante mi-aplicacion-restm.

Además tenemos en Subversion lo siguiente:

mi-aplicacion-wm → http://svn.montesinos.org.es/trunk/mi-aplicacion-wm
mi-aplicacion-model-jm → http://svn.montesinos.org.es/trunk/mi-aplicacion-model-jm

Para importar mi-aplicacion-wm desde consola ejecutaremos lo siguiente:

$ git svn clone http://svn.montesinos.com/trunk/mi-aplicacion-wm \
--authors-file=/git-learning/common/users-svn.txt \
--no-metadata mi-carpeta-aplicacion-wm

Mediante el atributo --no-metada evitaremos que git nos añada información a cada uno de los commit como la que se muestra a continuación y nos quedaría con el mensaje del commit limpio:

git-svn-id: http://svn.montesinos.com/trunk/mi-aplicacion-wm@94 4c93b258-373f-11de-be05-5f7a86268029

El atributo mi-carpeta-aplicacion-wm indica la carpeta en la cual queremos que se realice la importación, así pues si por ejemplo ejecutamos el comando git svn desde /git-learning/projects/mi-aplicacion se creará la carpeta /git-learning/projects/mi-aplicacion/mi-carpeta-aplicacion-wm y en esta tendremos finalmente nuestro código procedente de Subversion y la carpeta .git con toda la información de los commits relacionados con el proyecto procedentes de Subversion. 

Para realizar lo mismo con mi-aplicacion-model-jm ejecutaríamos:

$ git svn clone http://svn.montesinos.com/trunk/mi-aplicacion-model-jm \
--authors-file=/git-learning/common/users-svn.txt \
--no-metadata mi-aplicacion-model-jm


Publicar los cambios en un repositorio remoto

Para publicar el código en un repositorio remoto tenemos diferentes opciones Github, Bitbucket... pero si queremos que nuestro código resida en nuestros servidores de forma algo más "privada" podemos optar por una solución como GitLab tremendamente sencilla de utilizar y configurar y mediante la stack de Bitnami rapidísima de echar a rodar.

Desde Gitlab crearemos 2 proyectos: mi-aplicacion-wm y mi-aplicacion-model-jm cuyas urls serán por ejemplo:

mi-aplicacion-wm → http://gitlab.montesinos.org.es/javier-montesinos/mi-aplicacion-wm.git
mi-aplicacion-model-jm → http://gitlab.montesinos.org.es/javier-montesinos/mi-aplicacion-model-jm.git

Tan solo nos queda pues hacer push de nuestro código a los repositorios remotos. Para mi-aplicacion-wm, desde la carpeta ../mi-aplicacion/mi-aplicacion-wm publicamos en el repositorio remoto ejecutando lo siguiente:

$ git remote add origin \
http://gitlab.montesinos.org.es/javier-montesinos/mi-aplicacion-wm.git
$ git push -u origin master

Para mi-aplicacion-model-jm y desde ../mi-aplicacion/mi-aplicacion-model-jm ejecutamos:

$ git remote add origin \
http://gitlab.montesinos.org.es/javier-montesinos/mi-aplicacion-model-jm.git
$ git push -u origin master

El siguiente paso será integrar ambos proyectos en un único repositorio, pero esto es harina de la siguiente entrada.

Referencias

Entrada en formato pdf: Git Svn - Importar de Subversion a Git
Libro Pro Git - Capítulo 8 - Git y Subversion

Saludos.

P.D. Como siempre espero que pueda ser útil.


Siguiente entrada publicada -> Git - Merge de dos repositorios en uno