Buscar..


Usando Git Large File Storage (LFS) con Unity

Prefacio

Git puede trabajar con el desarrollo de videojuegos fuera de la caja. Sin embargo, la advertencia principal es que las versiones de archivos de medios grandes (> 5 MB) pueden ser un problema a largo plazo, ya que su historial de confirmaciones aumenta - Git simplemente no se creó originalmente para la versión de archivos binarios.

La gran noticia es que desde mediados de 2015, GitHub ha lanzado un complemento para Git llamado Git LFS que trata este problema directamente. ¡Ahora puedes fácilmente y eficientemente versionar archivos binarios grandes!

Finalmente, esta documentación se centra en los requisitos específicos y la información necesaria para garantizar que su vida Git funcione bien con el desarrollo de videojuegos. Esta guía no cubrirá cómo usar Git en sí.

Instalación de Git y Git-LFS

Como desarrollador, tienes una serie de opciones disponibles y la primera opción es si instalar la línea de comandos central de Git o dejar que una de las populares aplicaciones de la GUI de Git se encargue de eso por ti.

Opción 1: usar una aplicación Git GUI

Esta es realmente una preferencia personal aquí ya que hay bastantes opciones en términos de la GUI de Git o si usar una GUI en absoluto. Tiene una serie de aplicaciones para elegir, aquí hay 3 de las más populares:

Una vez que haya instalado la aplicación de su elección, busque en Google y siga las instrucciones para asegurarse de que esté configurada para Git-LFS. Vamos a omitir este paso en esta guía, ya que es específico de la aplicación.

Opción 2: instalar Git y Git-LFS

Esto es bastante simple: instala Git . Entonces. Instalar Git LFS .

Configurando Git Large File Storage en tu proyecto

Si está utilizando el complemento Git LFS para brindar un mejor soporte para archivos binarios, entonces necesitará configurar algunos tipos de archivos para que sean administrados por Git LFS. Agregue lo siguiente a su archivo .gitattributes en la raíz de su repositorio para admitir archivos binarios comunes utilizados en proyectos de Unity:

# Image formats:
*.tga filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.tif filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text

# Audio formats:
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.aiff filter=lfs diff=lfs merge=lfs -text

# 3D model formats:
*.fbx filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text

# Unity formats:
*.sbsar filter=lfs diff=lfs merge=lfs -text
*.unity filter=lfs diff=lfs merge=lfs -text

# Other binary formats
*.dll filter=lfs diff=lfs merge=lfs -text

Configuración de un repositorio Git para Unity

Al inicializar un repositorio Git para el desarrollo de Unity, hay un par de cosas que deben hacerse.

Unidad ignorar carpetas

No todo debería estar versionado en el repositorio. Puede agregar la plantilla a continuación a su archivo .gitignore en la raíz de su repositorio. O alternativamente, puede verificar el código abierto Unity .gitignore en GitHub y alternativamente generar uno usando gitignore.io para la unidad.

# Unity Generated
[Tt]emp/
[Ll]ibrary/
[Oo]bj/

# Unity3D Generated File On Crash Reports
sysinfo.txt

# Visual Studio / MonoDevelop Generated
ExportedObj/
obj/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd

# OS Generated
desktop.ini
.DS_Store
.DS_Store?
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

Para obtener más información sobre cómo configurar un archivo .gitignore, consulte aquí .

Configuraciones del Proyecto Unity

Por defecto, los proyectos de Unity no están configurados para soportar las versiones correctamente.

  1. (Omita este paso en v4.5 y versiones posteriores) Habilite la opción External en Unity → Preferences → Packages → Repository .
  2. Cambie a Visible Meta Files en Edit → Project Settings → Editor → Version Control Mode .
  3. Cambie a Force Text en Edit → Project Settings → Editor → Asset Serialization Mode .
  4. Guarda la escena y el proyecto desde el menú File .

Configuración adicional

Una de las pocas molestias importantes que uno tiene al usar Git con los proyectos de Unity es que a Git no le importan los directorios y con mucho gusto dejará los directorios vacíos alrededor después de eliminar los archivos de ellos. Unity *.meta archivos *.meta para estos directorios y puede provocar un poco de batalla entre los miembros del equipo cuando Git se comprometa a seguir agregando y eliminando estos meta archivos.

Agregue este /.git/hooks/ Git post-merge a la carpeta /.git/hooks/ para repositorios con proyectos Unity en ellos. Después de cualquier extracción / combinación de Git, verá qué archivos se han eliminado, verificará si el directorio en el que existía está vacío y, si es así, eliminarlo.

Combinación de escenas y prefabricados

Un problema común cuando se trabaja con Unity es cuando 2 o más desarrolladores están modificando una escena o prefab de Unity (archivos * .unity). Git no sabe cómo combinarlos correctamente fuera de la caja. Afortunadamente, el equipo de Unity implementó una herramienta llamada SmartMerge que hace que la fusión simple sea automática. Lo primero que debe hacer es agregar las siguientes líneas a su archivo .git o .gitconfig : (Windows: %USERPROFILE%\.gitconfig , Linux / Mac OS X: ~/.gitconfig )

[merge]
tool = unityyamlmerge

[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = '<path to UnityYAMLMerge>' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"

En Windows la ruta a UnityYAMLMerge es:

C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe

o

C:\Program Files (x86)\Unity\Editor\Data\Tools\UnityYAMLMerge.exe

y en MacOSX :

/Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge

Una vez hecho esto, el mergetool estará disponible cuando surjan conflictos durante la fusión / rebase. No te olvides de ejecutar git mergetool manualmente para activar UnityYAMLMerge.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow