Git se ha convertido en una necesidad hoy en día para cualquier equipo de desarrollo (incluso desarrolladores que trabajan solos). Solo hace falta ver cómo uno de los mayores proveedores de repositorios en la red, Github, cuenta con cada vez más usuarios y repositorios. Con el tiempo nuevas formas y herramientas de trabajo se crean con un repositorio como elemento central tanto para el desarrollo, como para el mantenimiento del código. Y es que permite, con poco esfuerzo, que un grupo de desarrolladores trabajen incluso sobre el mismo fichero sin «pisarse» unos a otros.
En este caso, voy a detallar cómo obtener un proyecto desde git (en este caso en .NET) y cómo dejarlo listo para ejecutar y desarrollar usando las propias herramientas de autoobtención de paquetes y dependencias (Nuget, particularmente para C#).
Para el despliegue necesitaremos lo siguiente instalado en nuestro equipo:
- Git Herramienta indispensable.
- Visual Studio o un IDE equivalente, para este caso voy a usar Nuget desde Visual Studio, así que lo recomiendo.
- .NET Normalmente se instala al instalar el Visual Studio, en caso contrario se puede descargar desde aquí.
Personalmente voy a usar la consola de git para realizar las operaciones a cada paso, alternativamente puede realizarse usando una herramienta como SourceTree de Atlassian.
Paso a paso
El primer paso es localizar el repositorio a descargar y obtener el enlace:
En este caso, el git proviene de los repositorios que ofrece Microsoft, a la derecha, el botón clone nos provee del enlace que usaremos para clonar el repositorio. Desde el equipo donde queremos clonarlo, nos posicionamos en el directorio que queramos, e introducimos el siguiente comando:
- git clone enlace
Esto nos crea un clon local del repositorio remoto, quedando así:
OJO Los espacios en git, se traducen al carácter %20, y es conveniente quitarlos para evitar problemas posteriores.
En un caso normal hubiésemos acabado ya con el git, pero en este caso nos queda otra sorpresa. Uno de los ficheros que se puede ver (Windows trata los ficheros que empiezan con «.» como blancos, de ahí que en la foto siguiente salgan con el título vacío); .gitmodules (el otro es el .gitignore, ficheroque sirve para que git ignore los ficheros que queramos) nos indica que este proyecto tiene un submódulo y tendremos que bajarlo también para poder proceder.
También podemos verificar que existe un submódulo ejecutando el comando git submodule desde la raíz del proyecto. Para clonar el submódulo tenemos que ejecutar los siguientes comandos:
- git submodule init (Inicializa el repositorio del submódulo)
- git submodule update (Obtiene los cambios y lo establece a la última versión del repositorio)
Ahora ya tenemos todo el proyecto correctamente descargado, falta importar las dependencias, para esto abrimos el proyecto usando Visual Studio. Para proceder ahora, tenemos que indicar a la solución que permita que Nuget maneje todas las dependencias, para esto debemos de hacer botón derecho en la solución y pulsar en la opción Enable Nuget package Restore
Esta opción hace que Nuget descargue las dependencias correctas conforme las necesite, es decir, al compilar, cosa que vamos a hacer ahora para poder proseguir, para ello hacemos botón derecho en la solución y Build
Esto compilará la solución por primera vez, pero lanzará un mensaje de error que podemos observar en la parte inferior. Esto es debido a que la primera compilación restablece los paquetes de NuGet, y en la segunda compilación es cuando realmente se descargan, por lo que vamos a compilar otra vez.
Como podemos observar, ahora sí que se ha compilado toda la solución correctamente, y se han bajado las dependencias correctas. Podemos comprobarlo ejecutando directamente la solución. Para esto necesitamos establecer uno de los dos módulos como el módulo que se va a iniciar en primera instancia. Hacemos botón derecho y Set as StartUp project
Y ya, por fin, podemos ejecutar nuestro proyecto correctamente.
[contact-form][contact-field label=»Nombre» type=»name» required=»true» /][contact-field label=»Correo electrónico» type=»email» required=»true» /][contact-field label=»Web» type=»url» /][contact-field label=»Mensaje» type=»textarea» /][/contact-form]