2010-02-19 11 views
7

Lo que necesitamos en nuestra empresa es una especie de herramienta de gestión de versiones para Linux/C++. Nuestros productos consisten en múltiples bibliotecas y archivos de configuración. Aquí voy a enumerar las características básicas que queremos tal sistema tenga:Sistema de gestión de versiones para Linux

  • Capacidad de seguimiento de las dependencias, aumentar fácilmente versiones principales de las bibliotecas cuyas dependencias consiguió su versión principal aumentó. Debería construir algún tipo de gráfico de dependencia internamente para que pueda saber quién se ve afectado por una actualización.

  • Sepa cómo construir los productos que maneja. Ya sea un archivo de compilación específico o incluso mejor: capacidad de leer y comprender archivos make.

  • Trabaja con SVN para que pueda comprobar si hay nuevas versiones desde allí y si la compila.

  • Genera algunos instaladores, en formato rpm o tar.gz. Para ese fin, debe ser capaz de comprender el formato de archivo de especificación de rpm.

Actualmente estamos trabajando en una herramienta que ya es bastante utilizable. Sin embargo, creo que nuestra tarea no es única y debe haber alguna herramienta que haga el trabajo.

Respuesta

1

En el proyecto en el que estoy trabajando actualmente utilizamos cmake y otras herramientas de Kitware para manejar la mayoría de estos problemas para el código nativo (C++).Contestación punto por punto:

  • Las secuencias de comando cmake manejan las dependencias para nuestros diferentes proyectos. Tenemos un gráfico de dependencia, pero no sé si es un script hecho en casa o es una funcionalidad que proporciona cmake.

  • Bien cmake genera los makefiles con respecto a la plataforma. Genero proyectos para eclipse cdt y visual studio si se solicita hacerlo en caso de desarrollo.

  • Cmake tiene un par de herramientas, ctest y cdash que usamos para hacer la compilación diaria y ver cómo le está yendo a la prueba.

  • Para crear el instalador cmake tiene cpack. Desde solo un script, puede generar archivos tar.gz, deb o rpm en Linux o un script de NSIS generado automáticamente para generar instaladores en Windows.

Para el código de Java utilizamos maven y hudson que ya hemos mencionado aquí.

0

Maven tiene un native code plugin. No creo que haga todo lo que quiera, pero es bueno para rastrear los números de versión de las dependencias, construirá artefactos y funcionará con su VCS.

0
  • Ni idea
  • cmake/scons: He utilizado cmake pero yo no exactamente encanta, pero he oído cosas muy buenas sobre scons. Pero scons está basado en python, por lo que debe tener Python instalado en las máquinas de compilación/desarrollo.
  • Yo uso Hudson, que tiene un complemento para buscar desde svn. Se desempeña de forma inteligente en general, y en compilaciones particulares solo si algún archivo ha cambiado en una actualización de svn. Hudson es fácil de empezar. Hudson está basado en Java y es bastante popular entre la comunidad Java. Esto significa que es bastante multiplataforma, pero necesita tener JRE instalado en la máquina de compilación.
  • Probablemente pueda llamar a alguna herramienta de rpm dentro de Hudson.
1

Eche un vistazo a este artículo de DDJ, en el que se presenta e implementa un concepto de sistema de construcción más robusto (que la marca). No estoy seguro de que se ajuste a sus requisitos, pero es lo más parecido que he visto. Estuve buscando lo mismo hace meses, y luego descubrí el artículo.

http://www.drdobbs.com/architect/218400678

2

Usted debe mirar en el uso de una mezcla entre Hudson, Maven (para la gestión de construcción), la hiedra (para las dependencias de gestión) y Archiva (por artefactos Archivo).

Además, si está buscando en cross.compilation, eche un vistazo a Make Project Creator (MPC) y Bakefile.

¡Diviértete!

Cuestiones relacionadas