SVN externos (o similar) con files compartidos dentro de un solo tree?

Así que tengo este dilema que bash resolver. Soy un desarrollador de juegos indie trabajando en 6-7 proyectos de clientes en un momento dado con el motor de juegos Unity. El problema que estoy experimentando es mantener mi código compartido sincronizado entre los proyectos: mi solución actual es muy "manual" y lenta (y propensa a errores cuando olvido actualizar todo). Empecé a search en SVN externos como una solución, pero hay un problema. El motor de juego de Unity usa files * .meta para mantener los datos de cómo se usan los files en cuestión dentro de cada juego.

Como un ejemplo rápido, aquí hay una estructura de carpeta de muestra:

Proyecto 1:

  • RAÍZ
  • RAÍZ / Activos
  • ROOT / Assets / ShanetworkingCode
  • ROOT / Assets / ShanetworkingCode / ShanetworkingScript.cs
  • ROOT / Assets / ShanetworkingCode / ShanetworkingScript.meta

Proyecto 2:

  • RAÍZ
  • RAÍZ / Activos
  • ROOT / Assets / ShanetworkingCode
  • ROOT / Assets / ShanetworkingCode / ShanetworkingScript.cs
  • ROOT / Assets / ShanetworkingCode / ShanetworkingScript.meta

La solución obvia / inmediata es hacer que mi carpeta "ShanetworkingCode" sea un SVN externo. El problema que surge es que el file ShanetworkingScript.cs debe ser idéntico en ambos proyectos, pero el file ShanetworkingScript.meta es específico del proyecto y generado automáticamente por el motor del juego (así que no puedo decir, almacenar todos mis files meta en un sola carpeta en algún lugar externo a la carpeta "Código Compartido").

Hay cientos de estos files, así que me encantaría una solución que no implique tratar cada file "compartido" como un SVN externo a sí mismo.

Mi fea solución actual es mantener todo el tree del proyecto en SVN, y tengo una subcarpeta que es un repository de GIT que ignora los files .meta. Sin embargo, es bastante feo, y con frecuencia comprometo / actualizo el proyecto principal y me olvido de comprometer / empujar / extraer el proyecto de "biblioteca" de git.

¡Cualquier sugerencia sería muy apreciada!

¿Por qué no usar solo un sistema de control de versiones para el código y otro para los activos del proyecto de unidad? Luego use svn: externals para el código que necesita ser compartido entre proyectos.

Puede ignorar los metafiles en su proyecto y usar git para versionar los metafiles.

¿Por qué no hacer que su carpeta "ShanetworkingCode" sea un SVN externo, pero sin el file "ShanetworkingScript.meta" (y cualquier otro file que sea específico del proyecto / generado automáticamente).

Ahora tenga el punto ShanetworkingCode.csproj en un file que no existe, "$ (SolutionDir) / <(blah) /ShanetworkingScript.meta". Simplemente puede editar a mano el csproj para hacer esto. Tenga en count que todas sus soluciones DEBEN generar ahora este metafile en esta ruta relativa.

Ahora, cuando agregue este csproj a la solución de su elección, deberá configurar las dependencies del proyecto para que se genere el file "ShanetworkingScript.meta" antes de que se genere su proyecto "ShanetworkingCode". Ahora no debería haber ningún problema.

¡Espero que ayude!