Manual uso Git – VR-EVO
¿Qué es Git?
En vez de ponernos técnicos, cosa que podréis encontrar mucha documentación por Internet, vamos a ir al grano.
Git nos permite tener un repositorio (versión remota del proyecto) en Internet, o local, donde nuestro proyecto se sincroniza con cambios que vamos realizando. Al mismo tiempo nos permite trabajar en diferentes ramas (branches) de desarrollo, y enviar nuestros cambios de forma documentada (commits). Lo que lo convierte en una herramienta indispensable en un flujo de trabajo.
Software a usar
- Git for Windows – https://gitforwindows.org/
- Sourcetree – https://www.sourcetreeapp.com/
- Unreal Engine 4 (Source Control)
En este manual haremos la conexión del Git a través de UE4, además de los submits/commits, para aprovechar las opciones de flujo de trabajo de este software y ahorrar tiempo. Sin embargo es posible hacer la sincronización de trabajo de forma manual mediante Sourcetree, igual que se haría con cualquier otro proyecto en otro software.
Instalamos Git for Windows
Este apartado es el más sencillo. Este programa será la unión entre nuestro repositorio remoto y el local. En local tendremos una imagen virtual del repositorio que hace de intermedio entre nuestro área de trabajo (carpeta) y el servidor repositorio remoto. Solo necesitamos instalarlo y conocer la ruta de instalación, para ofrecérsela a Sourcetree o UE4 en caso de que la pidan (aunque suelen detectarlo de forma automática).
Cuenta de GitLab – VR-EVO
Lo primero que haremos será crear nuestra cuenta en el servidor de VR-EVO.
https://git.vr-evo.com
Cuando poseamos nuestra cuenta, y el jefe de estudios nos de acceso como «developers», ya podremos descargar proyectos. Pero para poder clonarlos y sincronizar nuestros proyectos, vamos a ver como conectar con los diferentes programas.
Conexión al server
Accedemos a nuestro usuario, y arriba a la derecha seleccionamos Settings.
Pulsamos sobre Access Tokens para generar un código único que usaremos en Sourcetree.
Añadimos nuestro nombre de usuario, y seleccionamos api para conceder derechos de escritura/lectura a Sourcetree. Nos dará un código único que deberemos usar. Podemos guardarlo si queremos usarlo en varios ordenadores. O generar un token para cada equipo.
Instalamos Sourcetree en nuestra cuenta de usuario Windows.
Damos de alta nuestra cuenta. Para ello seleccionamos Add an account y seleccionamos GitLab CE. Añadimos el host https://git.vr-evo.com y pulsamos sobre Refresh. Como usuario pondremos nuestro nombre en el server de Git, y como contraseña usaremos directamente el Token.
Es importante que usemos la versión CE, al igual que siempre pongamos HTTPS y no solo HTTP.
Con eso ya podremos ver todos los repositorios en Sourcetree a los cuales tenemos acceso. Si pulsamos sobre Clone podremos clonarlo al disco duro, y trabajar sobre ese proyecto sincronizado.
Crear un nuevo proyecto en Unreal Engine para un nuevo repositorio en Git VR-EVO
Primero de todo deberemos de crear un nuevo proyecto en la web de Git, o que nuestro profesor nos lo añada al grupo, en caso de que varias personas vayan a tener interacción con este. Es importante que estemos agregados al proyecto.
Importante, al crear el proyecto no seleccionar que añada README. Necesitamos para trabajar que el repositorio esté sin usar aún.
Cuando creemos un nuevo proyecto en Git, este nos permitirá tener un enlace al repositorio por https.
Conexión con Source Control en Unreal Engine
Creamos un nuevo proyecto en Unreal Engine. Y abrimos y conectamos el Source Control.
Seleccionamos Git Beta. Y actualizamos los datos con el enlace que cogimos de nuestro proyecto, nuestro usuario y nuestro e-mail (Si está configurado en Git ya debería salirnos de base).
Inicializamos el proyecto en Git. Este punto es importante, porque generará un director .git dentro de nuestro proyecto que tendrá la información de comunicación con el server.
En cuanto aceptemos, el Source Control se conectará, y podremos pasar a la fase de workflow (flujo de trabajo).
Workflow
Volvemos a la imagen anterior del flujo de trabajo. Ya tenemos todo listo y podemos empezar a trabajar, aunque nuestro repositorio remoto aún no he recibido una copia del proyecto. Las siguientes acciones podemos realizarlas dentro de Sourcetree, o en modo comandos con el Git (avanzado).
- Add:
- Commit: Guarda los cambios en el repositorio local. Como «snapshots» (fotografías) de nuestro actual proyecto.
- Push: Sube todo el historial de commits al repositorio remoto. Esto son todas nuestras snapshots del proyecto con los diferentes cambios y descripciones.
- Merge: Cada repositorio se divide en ramas (branches). La master, que es la principal, más todas las ramas de trabajo que queramos tener en paralelo. Nos centramos en esta explicación en solo la master, para simplificar. Merge es un proceso que fusiona un repositorio con la información proveniente de otro lado. Hay comandos que ya lo integran, pero otras veces querremos fusionar dos ramas, como una de pruebas y otra de resultado final.
- Pull/Fetch: Vamos a explicar estos dos procesos juntos. Fetch nos trae cambios del repositorio remoto, pero nos los deja en una rama «oculta» llamada origin/master. Posteriormente deberíamos hacer un Merge, como hemos visto antes, para fusionar esos cambios con el repositorio local. Por eso existe Pull, el cual es un fetch+merge. Esto nos permite directamente traer los cambios del remoto al local.
- Checkout: Dejamos esta acción la última, para evitar equivocaciones. El checkout es una acción que nos permite cambiar entre ramas, para trabajar con ellas. Pero eso es algo que haremos cuando queramos ser usuarios más avanzados. Sin embargo encontaremos otro «Check Out» en Unreal Engine. Veremos que sirve para algo diferente, para no llevar a equivocaciones.
Terminamos con nuestro Workflow con Unreal Engine. El Check Out en Unreal lo que hace es bloquear los assets con los que trabajamos. Esto es para evitar que otros usuarios puedan modificarlos mientras trabajamos con ellos. Tenemos dicha opción en el menú de Source Control (pero hace un check de status y salva los assets) y con el botón derecho sobre los assets (este último los bloquea).
Los thumbnails de los assets tendrán nuevos iconos de estado. Por orden:
- Bloqueado por el usuario para modificar.
- Bloqueado por otro usuario.
- Marcado para añadir al repositorio.
- No está en el repositorio local.
- Hay una nueva versión en el repositorio.
Cuando hagamos los nuevos cambios podemos enviarlo como un commit (también se puede hacer con Sourcetree pero perdemos los status anteriores), pulsando sobre Submit to Source Control. Pero antes debemos de conectar nuestro Source Control al proyecto y al server.
Para ello pulsamos sobre Add en el Source Control y buscamos nuestra nueva carpeta de proyecto de Unreal.
Ya tenemos todo conectado.
Hacemos submit en Unreal tras crear un nuevo assets, y vemos que se actualiza en Sourcetree. También podemos hacer directamente un Push para subir nuestro proyecto ya a Internet.
Importante, siempre antes de hacer un submit que se guarde todo el proyecto (Save All) o que se haga un checked out en el Source Control de todo. Saldrá entonces el status del + rojo.
Veremos entonces que en la rama que tenemos activa hay contenido en cola. Ha sido el commit/submit que llega desde UE4.
Podemos seguir trabajando todo el día en el proyecto, y hacer un Push cuando acabe nuestra jornada. Y luego cada día recobrar todos los cambios mediante un Pull.
Y con eso ya tenemos nuestro proyecto sincronizado.
VR-EVO