2008-10-14 13 views
11

¿Hay alguna forma de seleccionar paquetes de tiempo designado en las bases de un proyecto?Cargando paquetes de tiempo de diseño de Delphi en una base de proyecto

Los paquetes son muy útiles en proyectos grandes para mantener el tiempo de compilación aceptable, pero también son una auténtica pita en esos grandes proyectos. Cuando un desarrollador agrega un nuevo paquete, se rompe para compilar para el resto hasta que instale el nuevo paquete en su máquina. Y luego está la versión de los paquetes ...

¿Alguien tiene una solución adecuada para esto? (me ha estado molestando durante años)

Respuesta

8

En mi trabajo anterior, escribí una pequeña herramienta para ayudarnos con los paquetes de control de versiones. Realmente debería volver a crear esa herramienta en mi tiempo libre y ponerla a disposición. Sin embargo, la herramienta no fue difícil de escribir, así que tal vez pueda implementar algo así como usted mismo.

Básicamente se trabajó como esto:

  • repo Subversion con todos los paquetes en las subcarpetas. Cada carpeta de paquete en el repositorio tenía las mismas subcarpetas: Lib (para DCU), Fuente, Ayuda (si es necesario)
  • En la carpeta raíz del repositorio se encuentra la herramienta junto con un archivo XML.
  • El archivo XML especificó toda la información necesaria para cada paquete: qué carpeta contenía DCU, qué carpeta contenía la fuente, qué comando se debía ejecutar para la ayuda.
  • La herramienta lee en el XML y muestra una lista de verificación de todos los paquetes disponibles. Los paquetes instalados (leídos del registro BDS) están marcados como marcados.
  • El usuario puede hacer una selección de los paquetes para instalar/desinstalar.
  • La herramienta agrega/elimina las claves necesarias en el registro de BDS. Agrega la carpeta DCU/Lib a la ruta de búsqueda del IDE, agrega la carpeta de origen a la ruta de exploración IDE y registra el comando de ayuda con un experto IDE personalizado (Este experto proporciona una extensión al menú de ayuda predeterminado para iniciar la ayuda para todos los paquetes instalados)
  • La herramienta incluso verificará los conflictos y las dependencias entre los paquetes. Por ejemplo, las versiones 3 y 4 de Raize Components estaban disponibles y no podían estar activas al mismo tiempo.Dependencias comprobación era útil para componentes en-casa que derivan de TurboPower AsyncPro (lote de componentes en-casa dependido de comunicación en serie a través de AsyncPro)

Una posible extensión habría sido la de ser capaz de guardar/cargar la selección de empaqueta y almacena esa selección con cada proyecto para que pueda tener solo los paquetes cargados que son necesarios para un proyecto en particular.

Implementé todo esto cuando la empresa se estaba moviendo de Delphi 5/7 a Delphi 2007. Tuvimos muchos problemas con el versionado de paquetes antes y queríamos alguna manera de versionar todos los diferentes paquetes.

Este enfoque ofrece algunas ventajas bonito:

  • Cuando correcciones de errores se tuvieron que hacer o nuevas versiones de paquetes de terceros fueron puestos en libertad, una persona tenía que confirmar los cambios en la subversión. Todos los demás desarrolladores podrían hacer una actualización desde subversión y tener la última versión sin ningún problema.
  • Cuando se agregaron nuevos paquetes de componentes al entorno, una persona tuvo que enviar todos los archivos, cambiar la lista de paquetes XML y luego los otros desarrolladores pudieron hacer una actualización de subversión y ejecutar la herramienta para integrar el paquete fácilmente.
  • Todos los componentes internos de terceros y personalizados ahora se versionaron fácilmente.
  • Al incluir las DCU (y otros binarios) en el repositorio de subversión, nos aseguramos de que todos los desarrolladores usaran la misma versión compilada. Antes era posible que las diferentes compilaciones usaran configuraciones diferentes que causaban que algunos componentes se comportaran de manera diferente.
  • Cuando todos los demás desarrolladores finalmente instalaron Delphi 2007, sus paquetes se configuraron en menos de 10 minutos (la mayor parte del tiempo se pasaba descargando todo del repositorio de subversión; la herramienta en sí misma podía instalar 20 paquetes en menos de 2 segundos). Antes, con la instalación manual de todos los paquetes para Delphi5/7, podía llevar hasta 2 días instalar todo.

Esto no se acaba de usar para algunos componentes en casa solo, el repositorio también incluyó algunos de los grandes paquetes de componentes: Componentes Raize, JCL/JVCL (El uso de su instalador en lugar de la herramienta sin embargo), DevExpress Quantum Cuadrícula 3 y 4, TurboPower AsyncPro

+0

¡Eso suena muy útil! Por favor hazlo disponible. . . –

+0

Sí, me encantaría que esté disponible. Pero tendré que volver a crearlo desde cero (no tan divertido y me perdería muchas correcciones de errores del original) o conseguir que mi empleador anterior lo abra con código abierto. Vale la pena intentar hablar con ellos sin embargo, todavía tengo buenos contactos allí. – Otherside

+0

Esto es muy cercano a lo que yo mismo tenía en mente. Esperaba que algo como esto existiera ya. Espero que pueda encontrar algo de tiempo libre para trabajar en esto, ya que este es uno de los pensamientos que obliga a los desarrolladores a otros entornos. Gracias. – Glenner003

6

Esto no es fácil también. Puede hacerlo sin embargo, con el uso de un corte del registro personalizado y un bds de acceso directo específico por cada configuración que está interesado en:

de usar, basta crear un nuevo acceso directo y modificar la línea de comandos para pasar, por ejemplo, -rMyAlternateBDSReg. Luego, después de ejecutarlo una vez, la entrada reg es creada y pueden configurar ese registro alternativo todo lo que deseen, borrando paquetes, etc., sin preocupándose por estropear la instalación predeterminada .

De codegear

Si configura una configuración para cada proyecto, a continuación, puede iniciar el acceso directo apropiado para el proyecto dado. No es automático, pero es mejor que tener todo allí todo el tiempo.

Un efecto secundario agradable es que los tiempos de carga se mejorarán.

0

Ponemos la fuente de nuestros paquetes en control de fuente junto con un archivo por lotes que los reconstruye. Si hay un cambio en el árbol para los paquetes, entonces los reconstruimos. Esto no soluciona la instalación de paquetes nuevos, pero hay hits de registro que pueden encargarse de eso, por lo que es posible que podamos incluir fragmentos .reg para manejar eso.

Cuestiones relacionadas