2010-02-24 12 views
21

Tengo un gran proyecto escrito en Delphi y quiero administrar sus fuentes usando Git. Creé el repositorio de Git, que incluye las fuentes de mi aplicación y los componentes de terceros. Todo eso se construye automáticamente usando msbuild.Archivos Delphi RES y Git

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

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

Respuesta

8

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

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

hago también tienen archivos RES que construyo a partir de RC, que cambian cada compilación, así que tengo una gitignore de * .res y luego añadir git add -f project.res para el proyecto archivos RES

+0

Gracias por la sugerencia, pero tengo más de 25 componentes con fuentes (y con malditos archivos de res). Tomará mucho tiempo averiguar qué archivos de res se cambian y cuáles no. Pero el mayor problema es que se deben incluir algunas res (así que hago 'git add -f') y las cambio cada vez que reconstruyo componentes. – Frantic

+0

Finalmente hizo esto. Me llevó MUCHO tiempo, pero estoy contento con los resultados. – Frantic

0

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

1

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

En pocas palabras: los archivos RES son los objetivos de compilación - no es diferente de otros binarios (obj, exe, etc)

+8

En Delphi, archivo RES del proyecto es diferente que otros binarios, que no tiene una RC correspondiente y contiene información que se encuentra en ningún otro lugar, como el icono y los números de versión – jasonpenny

+0

veo. Así que estás condenado (Delphi ftw!) A saltar por los aro, otras respuestas proporcionan instrucciones detalladas :) – ygrek

0

Podría:

  • ignorar todas .res archivos
  • generar los archivos .res que se puede generar (compilando los recursos script .rc archivos)
  • agregue solo los archivos .res sin .rc archivos para generarlos: si había especificado en un .gitignore que se deben ignorar, y luego agregarlos está bien: no se mostrarán en el diff.
2

Es muy recomendable para desactivar la "Aumento automático del número de compilación" en la configuración del proyecto, con cualquier tipo de sistema de control de versiones. De esta forma, es 'seguro' agregar los archivos .res al repositorio.

He estado buscando durante mucho tiempo la forma de actualizar automáticamente el número de compilación en la información de la versión en el archivo .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 compilación al número de revisión de subversión actual solo justo antes de la compilación final para una versión de los archivos binarios.

15

Bienvenido al club. El archivo .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

  • dividir el icono y los recursos de la versión de esta manera:

    {_icon.res $ R *}

    {$ R * ._ version.res}

  • desactivar inc automático de la BuildNumber

  • añadir un evento de pre-construcción para el proyecto que
    • incrementa el número de compilación en un archivo .ini correspondiente proyecto
    • genera un archivo .rc con la información de la versión del archivo .ini
    • compila un archivo .res desde el archivo .rc
  • agregar el archivo * _icon.res de control de código fuente, que nunca cambia lo que esta es segura
  • agregar el archivo .ini con la información de la versión de control de código fuente, se trata de un archivo de texto por lo que es fácil de diff

La herramienta que he escrito para generar el archivo de versión .res es software libre, available here y también de SourceForge

Cuestiones relacionadas