Sistemas de Control de Versiones

Introducción

Godot intenta ser amigable a VCS y genera mayormente archivos legibles y combinables.

Plugins de control de versiones

Godot además soporta el uso de sistemas de control de versiones desde el editor mismo. Sin embargo, el control de versiones en el editor requiere de un plugin específico para el VCS que se está usando.

A partir de Julio de 2023, solo hay un plugin de Git disponible, pero la comunidad puede crear plugins de VCS (Sistemas de Control de Versiones) adicionales.

Plugin Git oficial

El uso de Git desde el editor está soportado con un plugin oficial. Puedes encontrar las versiones más recientes en GitHub.

La documentación sobre cómo utilizar el plugin de Git puede encontrarse en su wiki.

Archivos a excluir del VCS

Nota

Esto enlista los archivos y carpetas que deberian ser ignorados en el control de versiones en Godot 4.1 y posteriores.

La Lista de archivos o carpetas que deben ser ignoradas del control de versiones en Godot 3.x y Godot 4.0 son completamente diferentes. Esto es importante, debido a que tanto Godot 3.x como Godot 4.0 pueden guardar credenciales sensibles en export_presets.cfg (a diferencia de Godot 4.1 y posteriores versiones).

Si estas usando Godot 3, revisa en su lugar la versión 3.5 en la pagina de documentación.

Cuando abres un proyecto en Godot por primera vez, el programa automáticamente crea algunos archivos y carpetas. Para evitar sobrecargar tu repositorio de control de versiones con datos generados, deberías añadirlos al archivo .gitignore:

  • .godot/: Esta carpeta almacena diversos datos de caché del proyecto.

  • *.translation: Esos son archivos binarios de traducciones importadas generadas desde archivos CSV.

Puedes hacer que el administrador de proyectos de Godot genere automáticamente metadatos para el control de versiones al crear un proyecto. Al elegir la opción Git se crean los archivos .gitignore y .gitattributes dentro de la carpeta raíz del proyecto:

Crear metadatos para el control de versiones en el cuadro de diálogo Proyecto Nuevo del administrador de proyectos

Crear metadatos para el control de versiones en el cuadro de diálogo Proyecto Nuevo del administrador de proyectos

En proyectos existentes, selecciona la menú Proyecto en la parte superior del editor, luego selecciona Control de Versiones > Generar Metadatos para el Control de Versiones.

Trabajar con Git en Windows

La mayoría de los clientes de Git para Windows están configurados con el core.autocrlf en true. Esto puede llevar a que los archivos sean marcados innecesariamente como modificados por Git debido a que sus terminaciones de línea se convierten automáticamente de LF a CRLF.

Es mejor configurar esta opción como:

git config --global core.autocrlf input

Al crear metadatos para el control de versiones utilizando el administrador de proyectos o el editor, se aplicarán automáticamente los saltos de líneas LF utilizando el archivo .gitattributes. En este caso, no necesitas cambiar la configuración de Git.

Git LFS

Git LFS (Large File Storage) es una extensión de Git que permite manejar archivos de gran tamaño en tu repositorio. Reemplaza archivos grandes con punteros de texto dentro de Git, mientras almacena dichos archivos en un servidor remoto. Esto es útil para manejar assets grandes como texturas, audio, y modelos 3D, sin hinchar el tamaño de tu repositorio Git.

Nota

Al usar Git LFS, asegúrate de que esté configurado antes de enviar archivos a tu repositorio. Si ya has realizado un commit con archivos a tu repositorio, deberás eliminarlos del repositorio y volver a añadirlos después de configurar Git LFS.

Es posible utilizar git lfs migrate para convertir archivos existentes en tu repositorio, pero esto es más complejo y requiere una buena comprensión de Git.

Un enfoque común es configurar un nuevo repositorio con Git LFS (y un .gitattributes adecuado) y luego copiar los archivos del repositorio antiguo al nuevo. De esta manera, se puede garantizar que todos los archivos .

Para usar Git LFS con Godot, necesitas instalar la extensión Git LFS y configurarla para que registre los tipos de archivos que quieres gestionar. Puedes hacerlo ejecutando el siguiente comando en tu terminal:

git lfs install

Esto creará un archivo .gitattributes en tu repositorio que indica a Git que use LFS para los tipos de archivo especificados. Puedes agregar más tipos de archivo modificando el archivo .gitattributes. Por ejemplo, para rastrear todos los archivos GLB, puede hacerlo ejecutando el siguiente comando en su terminal:

git lfs track "*.glb"

When you add or modify files that are tracked by LFS, Git will automatically store them in LFS instead of the regular Git history. You can push and pull LFS files just like regular Git files, but keep in mind that LFS files are stored separately from the rest of your Git history. This means that you may need to install Git LFS on any machine that you clone the repository to in order to access the LFS files.

Below is an example .gitattributes file that you can use as a starting point for Git LFS. These file types were chosen because they are commonly used, but you can modify the list to include any binary types you may have in your project.

# Normalize EOL for all files that Git considers text files.
* text=auto eol=lf

# Git LFS Tracking (Assets)

# 3D Models
*.fbx filter=lfs diff=lfs merge=lfs -text
*.gltf filter=lfs diff=lfs merge=lfs -text
*.glb filter=lfs diff=lfs merge=lfs -text
*.blend filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text

# Images
*.png filter=lfs diff=lfs merge=lfs -text
*.svg filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.webp filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.hdr filter=lfs diff=lfs merge=lfs -text
*.dds filter=lfs diff=lfs merge=lfs -text

# Audio
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text

# Font & Icon
*.ttf filter=lfs diff=lfs merge=lfs -text
*.otf filter=lfs diff=lfs merge=lfs -text
*.ico filter=lfs diff=lfs merge=lfs -text

# Godot LFS Specific
*.scn filter=lfs diff=lfs merge=lfs -text
*.res filter=lfs diff=lfs merge=lfs -text
*.material filter=lfs diff=lfs merge=lfs -text
*.anim filter=lfs diff=lfs merge=lfs -text
*.mesh filter=lfs diff=lfs merge=lfs -text
*.lmbake filter=lfs diff=lfs merge=lfs -text

Puedes encontrar más información sobre Git LFS en la documentación oficial: https://git-lfs.github.com/ y https://docs.github.com/en/repositories/working-with-files/managing-large-files.