2012-01-27 28 views
5

Tengo en mi proyecto actual Delphi 7 (llamado, digamos, Project1.dpr), dos archivos (Project1.dof y Project1.cfg) que mi equipo y yo no podemos decidir poner bajo control de versiones (utilizamos Mercurial por cierto)Delphi 7 .dof y .cfg: ¿debería rastrearlos bajo control de versión?

El asunto es este: dentro de los dos archivos anteriores se indican algunas vías de acceso de bibliotecas, componentes y extensiones que están relacionadas con el sistema en el que se encuentra el programador.

Mi equipo está compuesto por unos tipos que utilizan 32 bits de Windows XP y algunos chicos (yo incluido) usando 64 bits de Windows 7.

Así que esto nos lleva a la pregunta: ya que en 64 bits de Windows 7 extensiones, componentes Delphi y las bibliotecas están ubicadas en c:\program files (x86)\... y en 32 bits XP simplemente están bajo c:\program files\..., la modificación de dichos archivos provocaría la ruptura de la configuración del proyecto de otros colegas.

¿Alguien tiene alguna sugerencia para una situación como esta?

+1

¿En qué parte de sus archivos .dof y .cfg aparecen las rutas a los componentes de terceros? ¿Cuál es tu proceso de construcción? Espero que no estés compilando desde IDE. –

+0

Sí, estoy compilando desde IDE. Por cierto, voy a editar mi publicación para incluir esta información lo antes posible. –

Respuesta

2

Si se queda en Delphi 7, o incluso si no lo está, le sugiero que compruebe sus archivos .DOF, pero que también considere NO confiar en ellos para sus compilaciones finales. Actualización: el OP decidió no registrar los archivos .DOF y usar el constructor final.

También es trivialmente fácil pedirle a sus personas de 64 bits QUE NO REVISEN SUS CAMBIOS .DOF. Incluso si a veces se olvidan de que no deben cometer "hacks locales", es bastante fácil hacer una pequeña utilidad para leer y arreglar sus archivos .DOF para su caso local. Ejecútelo cada vez que saque cambios de repositorios de otras personas.

La segunda idea brillante es verificar en un archivo .dofdefault, y hacer que su archivo Build.Bat copie project.dofdefault a project.def si no existe. Problema resuelto.

Para compilaciones finales, y para evitar que sus "compilaciones se rompan por razones estúpidas", le sugiero que consulte Final Builder, y que compruebe las secuencias de comandos finales de compilador en el control de versiones, y solo las compilaciones de clientes que tengan estado en Final Builder De esta forma, no tendrá que preocuparse por enviar a sus clientes compilaciones misteriosas que no pueda contabilizar.

¿Cómo asocia actualmente las revisiones exactas de conjuntos de cambios mercuriales (valores hexadecimales md5) con el código que la contiene y las opciones utilizadas para construirla?

Una idea aún más inteligente sería dejar caer Delphi 7, que ahora tiene más de 10 años, y considerar avanzar de manera sólida hacia el siglo XXI.

+1

+1, "Una idea aún más inteligente sería dejar caer Delphi 7" – Kromster

+0

@Warren P: gracias por sus sugerencias, finalmente decidimos excluir .dof y .cfg de nuestro flujo de trabajo de scm normal, y mover el proceso de compilación a un máquina servidor, con la configuración .dof adecuada. –

+0

@Warren P: nos gustaría movernos completamente al siglo XXI con Delphi XE2, que acabamos de comprar hace algunas semanas, pero uno de los principales productos de nuestra compañía todavía está fabricado con D7, mi equipo no puede hacer nada en contra esta. Ahora nos estamos preparando para entregar la versión 3 de nuestro producto; la versión 3.5 está programada para la transferencia XE2. Que la fuerza esté con nosotros. –

5

Antes que nada: estoy totalmente de acuerdo con las sugerencias de Warrens.

Si aún quiere quedarse con su sistema actual, puede usar $(ProgramFiles) como prefijo para los pathes de la biblioteca. Esto debería funcionar en ambos sabores del sistema operativo.

+0

Pensé que es lo mismo que% PROGRAMFILES% en un archivo de proceso por lotes, lo que significa "archivos de programa de 32 bits en un sistema de 32 bits y archivos de programa de 64 bits en un sistema de 64 bits". Incluso el nombre de la variable de entorno cambia a '% ProgramFiles (x86)%' aka '$ (ProgramFiles (x86))'. –

+0

@Warren, en una aplicación de 64 bits% PROGRAMFILES% apunta a la carpeta de 64 bits, mientras que una aplicación de 32 bits (como el IDE) ve la carpeta x86. Puede verificar esto en XE2 inspeccionando las variables de entorno integradas. La variable% ProgramFiles (x86)% solo se usa en una aplicación de 64 bits. –

+0

@ Warren, el OP afirma que en los sistemas de 32 bits, la ruta debería decir c: \ archivos de programa \, mientras que en los sistemas de 64 bits debería decir c: \ archivos de programa (x86) \. Ese es exactamente el contenido de $ (ProgramFiles) visto desde dentro del IDE que se ejecuta en ambos sabores del sistema operativo. –

0

Acepto la sugerencia de Warren de actualizar a una versión más nueva de Delphi. Hay tantas funciones realmente útiles que se han agregado durante la última década. Puede pensar que se lleva bien sin ellos, pero una vez que empiece a usarlos comenzará a preguntarse por qué esperó tanto tiempo.

Dicho esto, si no puede actualizar, le sugiero que copie los componentes de terceros fuera de Archivos de programa y en una subcarpeta del árbol de proyectos. Hice esto con un proyecto Delphi 6 y, al hacerlo, descubrí que no todos usaban la misma versión de los componentes.

Si incluir el .dof y .cfg en el control de la versión es una llamada de juicio. Si confía en ellos para sus compilaciones de lanzamiento, entonces probablemente deberían estar bajo control de versión. Pueden contener configuraciones de compilador y condicionales que son necesarios para una compilación adecuada. También es beneficioso que todos los desarrolladores estén usando las configuraciones correctas cuando trabajan en sus propias máquinas.

Si su proceso de compilación establece estos desde la línea de comandos, no es tan importante.

Coincidentemente, las versiones posteriores de Delphi resuelven este problema reemplazando las dos con un único archivo que puede contener varias configuraciones. También introdujeron una característica llamada conjuntos de opciones que pueden vincularse en múltiples proyectos para que todos sus proyectos utilicen la misma configuración.

+0

Y agregaron la integración de MSBUILD, lo que hace que la construcción desde la línea de comandos MUCHO más fácil. –

0

Puede usar algún tipo de redirección de ruta como subst o hardlinks para consolidar la instalación diferente. Después de resolver este problema, sugiero verificar los archivos dof y usar, por ejemplo. Dof2cfg para generar los archivos cfg para construcciones de línea de comando.

Cuestiones relacionadas