Archivos RES de Delphi y Git

Tengo un gran proyecto escrito en Delphi y quiero administrar sus fonts usando Git. Creé el repository de Git, que incluye las fonts de mi aplicación y los componentes de terceros. Todo eso está construyendo automáticamente usando msbuild .

El mayor problema son los files RES. Algunos de ellos se actualizan cada vez que reconstruyo mi aplicación, otros no. Algunos tienen fonts * .rc, otros no. No puedo ignorar todos los files de res (.gitignore) porque sin resources mi proyecto no podrá comstackrse. Además, no puedo include files de res: cambian de compilation a compilation, no quiero verlos en diffs.

¿Qué haces con tus files * .res en Git? ¿Algún consejo?

Guardo mis files RES de proyecto en git (los que coinciden con el nombre del dpr).

Creo que la única razón por la que el file RES del proyecto cambiará cada vez que compile es si tiene incrementado el número de compilation establecido, lo que para mí significa que debe mantener las res en control de fuente o no le importa el número de compilation para que pueda debe desactivar esa opción.

También tengo files RES que construyo desde RC, que cambian cada compilation, entonces tengo un gitignore para * .res y luego agrego git add -f project.res para los files RES del proyecto

Bienvenido al club. El file .res de la aplicación en Delphi es un problema en la zona lumbar para todos los que usan el control de código fuente. Desea usar auto-inc-buildnumber pero estropea su control de fuente. Lo que he hecho es

  • divide el ícono y los resources de versión como este:

    {$ R * _icon.res}

    {$ R * ._ version.res}

  • desactivar autoinc del buildnumber

  • agregar un evento de preconstrucción al proyecto que
    • incrementa el número de compilation en un file .ini correspondiente al proyecto
    • genera un file .rc con la información de versión del file .ini
    • comstack un file .res del file .rc
  • agregue el file * _icon.res al control de fuente, nunca cambia, así que esto es seguro
  • agregue el file .ini con la información de la versión al control de fuente, es un file de text por lo que es fácil de diferir

La herramienta que he escrito para generar el file .res de la versión es software gratuito, disponible aquí y también de SourceForge.

Se recomienda encarecidamente desactivar el "Número de compilation de incremento automático" en la configuration del proyecto, con cualquier tipo de sistema de control de versiones. De esta forma, es 'seguro' agregar los files .res al repository.

He estado buscando durante mucho time una forma de actualizar automáticamente el número de compilation en la información de la versión en el file .res del proyecto, pero lo mejor es actualizar un .rc adicional con la información de la versión. En la práctica, generalmente actualizo el número de compilation al número actual de revisión de subversión justo antes de la compilation final para una versión de los files binarys.

Por definición, los files RES son files RC comstackdos. Entonces, idealmente, debe ignorar todos los files RES y comprometer solo cambios RC. Si sucedió de alguna manera que usted no tiene una fuente RC para algún file RES en particular, entonces agregue solo este file RES "huérfano" a git – dichos files no deberían cambiar de una compilation a otra (porque no hay un file RC para generar ellos desde). Si por alguna extraña razón (Delphi, eh) tales files RES cambian, entonces estás condenado.

En pocas palabras: los files RES son objectives de compilation, no diferentes de otros binarys (obj, exe, etc.)

No sé GIT, pero en SVN, simplemente solo "SVN ADD" los pocos que importan, y no los generados automáticamente. Como los files no versionados están excluidos de los diffs, eso también se soluciona.

Podrías:

  • ignorar todos los files .res
  • generar los files .res que se pueden generar (comstackndo los resources de los files de script .rc )
  • agregue solo los files .rc sin files .rc para generarlos: si ha especificado en un .gitignore que deben ser ignorados, entonces agregarlos está bien: no se mostrarán en el file diff.