Hay muchos sistemas de control de versiones disponibles, incluidos los de código abierto como Subversion , Git y Mercurial , además de los comerciales como Perforce .
¿Qué tan bien apoyan el proceso de desarrollo de juegos? ¿Cuáles son los problemas al usar VCS con respecto a archivos que no son de texto (archivos binarios), proyectos grandes, etc. ¿Cuáles son las soluciones a estos problemas, si hay alguno?
Para organizar las respuestas, intentemos por paquete. Actualice cada paquete / respuesta con sus resultados.
Además, enumere algunos detalles breves en su respuesta, sobre si su VCS es gratuito o comercial, distribuido versus centralizado, etc.
Actualización : Encontré un buen artículo comparando dos de los VCS a continuación: aparentemente, Git es MacGyver y Mercurial es Bond . Bueno, me alegro de que esté resuelto ... Y el autor tiene una buena cita al final:
Está bien hacer proselitismo a aquellos que aún no se han cambiado a un VCS distribuido, pero tratar de convertir un usuario de Git a Mercurial (o viceversa) es una pérdida de tiempo y energía para todos.
Especialmente porque el verdadero enemigo de Git y Mercurial es Subversion . Dang, es un mundo de código-código-código en FOSS-land ...
fuente
Respuestas:
Git
Recientemente he estado en el tren de Git (he usado SVN y Mercurial). Hasta ahora me gusta mucho lo que obtengo con Git. Está lejos de ser una tarea difícil de configurar y más herramientas de desarrollo están comenzando a adoptar su uso.
Es un sistema de control de versiones distribuido. Esto nos permite tener nuestra propia área de tronco independiente. Puedo trabajar en mi propia área e invitarlos a ver los conjuntos de cambios con mucha facilidad. Puedo retroceder en mi propio espacio sin acumular el repositorio central. Puedo comprometerme, ramificarme y hacer todo lo que pueda hacer con SVN localmente. Realmente me gusta tener este control.
Con SVN, necesita acceder a su repositorio para confirmar. ¿Qué pasa si estás de viaje o en un café sin internet? No está bien.
Claro, SVN es mucho más simple de aprender, pero creo que las ventajas del control de fuente distribuida superan en gran medida el hecho de que tiene una pequeña curva de aprendizaje.
También me gusta que sea más inteligente acerca de la fusión.
Una desventaja importante de GIT es que almacena toda la historia localmente. (Sí, puede realizar una cirugía para reducir eso, pero es el comportamiento predeterminado). No es un problema en absoluto para los archivos de origen, pero si tiene un proyecto grande con gigabytes de datos de activos, se convierte en un problema rápidamente. En mi experiencia actual, recomendaría GIT solo para repositorios más pequeños o solo de origen.
Si todavía tiene curiosidad acerca de GIT, consulte http://thkoch2001.github.io/whygitisbetter/ para obtener buena información / métricas. Consulte también ver https://git.wiki.kernel.org/index.php/GitSvnComparsion
fuente
Mercurial
Características clave:
Con respecto al uso de archivos que no son de texto, las últimas versiones de Mercurial (> = 2.0) proporcionan la extensión de archivo grande de forma predeterminada :
Hay otras extensiones que proporcionan soluciones similares, como la extensión bigfiles, que le permite almacenar sus activos en el mismo repositorio de Mercurial, pero solo obtiene los archivos binarios que necesita cuando los necesita.
No conozco ningún problema con respecto a proyectos grandes más allá de los relacionados con tener archivos binarios grandes. El proyecto Python es un proyecto grande y usa Mercurial .
Joel Spolsky ha escrito un mini tutorial sobre el uso de Mercurial en Subversion Re-education
fuente
svn:needs-lock
, y dado que tampoco hay forma de saber quién está trabajando localmente en qué archivos , está de vuelta para pasar un cuenco alrededor del equipo, literalmente (no se le permite editar sin el tazón en tu escritorio). Extensión de archivos grandes o no, este VCS es inútil para archivos binarios sin una solución práctica para esto.Forzosamente
Perforce (comercial / de código cerrado, centralizado) es el estándar de la industria por varias razones.
Dicho esto, es dolorosamente obvio casi a diario que Perforce no siente que su posición en la industria esté amenazada. Sus herramientas visuales, que incluyen P4V y P4SCC (integradas con Visual Studio) son lentas y con errores, y se sabe que esta última congela Visual Studio por puro placer. AnkhSVN está a millas de distancia de Perforce.
Comentario de xan: Sin embargo, vale la pena señalar que su herramienta de fusión, P4Merge (utilizada para diferenciar y fusionar) es excelente y muy superior a los gustos de Tortoise Merge. Sorprendentemente, este componente está disponible de forma gratuita como parte del paquete P4 Visual Tools.
Comentario de slicedlime: Otro inconveniente de Perforce es que ramificarse en él tiende a ser un gran dolor, especialmente si tienes árboles grandes. Casi todas las demás vcs son mejores para bifurcar y fusionar. Sin embargo, este suele ser un pequeño precio a pagar por las ventajas anteriores.
Comentario de roe: Perforce es extremadamente hablador. No sucede mucho sin el servidor involucrado. En particular, necesita el servidor para abrir para editar, lo que significa que debe saltar algunos aros si tiene la intención de romper la conexión con el servidor.
Comentario de jrista: Como usuario diario de Perforce durante más de dos años, con un equipo extendido de desarrollo e ingeniería de calidad de más de 100 personas, me he familiarizado íntimamente con él. Si bien es un sistema de control de fuente decente, tiene sus inconvenientes que aquellos que evalúan los sistemas SCC deben tener en cuenta:
fuente
Subversión
Código abierto, centralizado
Archivos Blender: no estoy completamente seguro de si los archivos .blend son binarios (lo parecen), pero no he tenido problemas para agregarlos a Subversion. Después de hacer algunos experimentos, el aumento del tamaño del archivo para los archivos modificados parece nominal, por lo que no se trata simplemente de copiar todo el archivo.
Proyectos grandes: funciona, aunque puede volverse peculiar. Definitivamente puede manejar repositorios de al menos 5,5 GB (tamaño total del directorio de repositorios en el servidor; principalmente activos binarios).
Datos duplicados en el cliente: Subversion mantiene una copia duplicada de cada archivo en el espacio de trabajo del usuario como una copia prístina. La ventaja de esto es que puede hacer un diff o revertir sin volver al servidor. La desventaja es que sus 10 gigas de archivos de trabajo requieren 20 gigas de espacio en disco.
La lista de ignorados es una propiedad de un directorio (simple con una interfaz gráfica de usuario, molesto en la línea de comandos).
Subversion permite el bloqueo de archivos / activos, lo cual es realmente útil si varios artistas y diseñadores trabajan en los mismos archivos.
Los externos son una excelente manera de manejar código compartido (por ejemplo, biblioteca o base) entre proyectos.
fuente
AlienBrain
De Avid :
Tengo ninguna experiencia con Alienbrain, y sólo enteré del libro Juego de codificación completa de Mike McShaffry. Sin embargo, parece pensarlo bien:
Por supuesto, él también lo describe como:
fuente
Team Foundation Server
de Microsoft
He usado TFS ampliamente en proyectos de simuladores MILSPEC, y es bastante bueno. Probablemente no sea el mejor si estás en una Mac, aunque hay un complemento de eclipse en estos días. La versión alojada en la nube admite repositorios git para el back-end de control de código fuente.
Es gratis para hasta cinco usuarios en Visual Studio Online (permite código cerrado; no hay límites de tamaño de repositorio), donde está alojado en la nube. Si desea alojarlo localmente, puede ser costoso.
Lo que más me gusta de él son las características de administración de ingeniería de software y el hecho de que maneja archivos grandes y archivos binarios con bastante felicidad.
fuente