2011-02-02 21 views
5

Lo sé, debe ser una pregunta tonta. Supongamos que tengo una biblioteca que usa un sistema de compilación autotools. Tengo todo eso configure, configure.ac, Makefile.am, config.h y otros archivos en la carpeta raíz de mi proyecto. Algunos de ellos fueron escritos por un desarrollador, otros son generados por autotools.Autotools y control de versión

La pregunta es: si uso un sistema de control de versiones (en mi caso - hg) - ¿cuál de todos los archivos autotools debería ser rastreado por un VCS y cuál no debería (hgignore'd)?

Gracias, Serge

+0

posible duplicado de [¿Qué archivos generados por Autotools debo conservar en el repositorio de Git?] (Http://stackoverflow.com/questions/3290908/which-files-generated-by-autotools-should-i-keep-in -git-repository) – ptomato

Respuesta

10

Creo que el mejor procedimiento es poner archivos bajo control de versión que no se generan. Las personas que trabajan con VCS son desarrolladores y deben tener instaladas las autotools en sus máquinas. Registrar los archivos generados solo les causará problemas.

Por otro lado, debe asegurarse de que la distribución a nivel de fuente se realice con todos los archivos generados en su lugar, para que los desarrolladores no puedan crear el software sin las autotools instaladas.

+0

Parece que el problema está resuelto para mí: he agregado un script autogen.sh al repositorio. Este script recrea todos los archivos relacionados con autotools de configure.ac y Makefile.am. Los desarrolladores ahora pueden ejecutar este script y reconstruir el software. Para otros usuarios, hay un objetivo de archivo MAKE - dist. Crea un archivo tar con las fuentes y todos los scripts de autotools incluidos también. – zserge

+3

en realidad no necesita autogen.sh incluso - autoreconf está instalado con autotools y hace exactamente eso por usted. – Flexo

+2

Lo necesita si usa cosas como intltool que requieren un paso de configuración por separado. – ptomato

4

Hay dos escuelas de pensamiento sobre esto:

  1. "Quiero ver el proyecto tal y como era en el tiempo/X versión"
  2. "Me puede siempre vuelve a generar todo lo que se generó automáticamente más tarde "

En general pertenezco al último grupo personalmente, pero el primero puede ser bueno si el Hay problemas con el sistema de compilación en alguna versión específica que probablemente ya no tenga instalada.

En su ejemplo configure y config.h son a la vez (probablemente) generados automáticamente, por lo que si se va a incluir en el control de versiones Me inclinaría a incluir la Makefile.in demasiado.

En mis proyectos que esto significa por lo general que no tengan más autotools archivos relacionados que configure.ac, Makefile.am, la documentación si es GNU y un directorio llamado m4 que incluye las macros personalizadas/no estándar mi configure.ac requiere.

+0

Prefiero la segunda manera, también. En este caso, la biblioteca siempre se compilará a partir de repo en una máquina que tenga instaladas autotools. Por lo tanto, me gustaría tener la menor cantidad posible de archivos relacionados con autotools en mi repositorio. – zserge

+1

Las dos escuelas de pensamiento no son mutuamente excluyentes. Usted almacena los archivos no generados en el VCS y almacena los archivos comprimidos de las versiones en otro lugar, a menudo en un directorio hermano en el repositorio de código fuente canónico. –