¿Qué archivos generados por Autotools debo mantener en el repositorio de control de versiones?


Soy nuevo en autotools y estoy trabajando en un proyecto C. Quiero añadir mi proyecto a un repositorio git. ¿Qué archivos generados por autotools necesito rastrear en mi sistema de control de versiones y cuáles deben ignorarse?

Author: brandizzi, 2010-07-20

3 answers

No debe mantener ningún archivo bajo control de versiones que no esté editado a mano. Eso significa que cualquier archivo generado debe ser ignorado por el sistema de control de versiones. Básicamente pongo solo lo siguiente bajo control de versiones:

  • configure.ac
  • Makefile.am
  • los archivos de documentación tales como AUTHORS, NEWS etc.
  • Makefile.am en subdirectorios

Para abordar el punto de tener una versión "lista para instalar" presentada por Scharron, algunas personas incluya un script en el directorio raíz del proyecto, llamado bootstrap o autogen.sh, que ejecute una vez cuando compruebe una copia nueva. Puede ver un ejemplo en uno de mis proyectos aquí. Para un proyecto más simple, su autogen.sh realmente solo necesita consistir en una línea:

autoreconf --install || exit 1

Aunque algunas personas prefieren ejecutar ./configure automáticamente al final de autogen.sh.

¿Por qué no rastrear todos los archivos generados en el control de versiones? Porque su contenido depende de la máquina en la que está construyendo, la versión de autotools que los generan, y la fase de la luna. Cada vez que cualquiera de estos cambios, los archivos autotools generados cambiarán, y obtendrá una gran cantidad de basura en sus confirmaciones.

Además, cualquier persona que compruebe su código fuera del control de versiones para compilarlo debe tener instaladas las herramientas de desarrollo adecuadas, por lo que realmente no necesita preocuparse de que la gente se encuentre en problemas debido a la falta de autotools.

Lo que VonC dice sobre los proyectos C viene con un archivo configure para generar la Makefiles es cierto para distribuciones de código fuente (el archivo .tar.gz que se obtiene cuando se escribe make dist), pero no necesariamente para copias recién retiradas del control de versiones.

 64
Author: ptomato,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-20 14:46:59

Nota: Estoy de acuerdo con ptomato'ss answer, y dejo esta respuesta como Wiki de la Comunidad.
Tiene sentido para las distribuciones de código fuente, pero su proyecto puede no ser uno.
Para fines de desarrollo, la respuesta de ptomato tiene más sentido.


Todos los proyectos de C generalmente vienen con un archivo configure capaz de generar el Makefile real utilizado para la compilación.

Así que cuando consideras la cadena autotool, te recomendaría versionar todos los archivos generados al archivo configure, ya que normalmente son una operación de generación única.

http://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Autoconf.svg/309px-Autoconf.svg.png

Eso significa que cualquier persona con una copia extraída de su proyecto de versión puede comenzar inmediatamente:

./configure
make
make install

Así que, si bien generalmente es cierto que no debe versionar ningún archivo generado, podría almacenarlos, especialmente si el otro lector de ese proyecto puede:

  • benefíciese de no volver a generar esos archivos (para un resultado idéntico)
  • comience inmediatamente a configurar y compilar.
 13
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:40

Generalmente, no debe mantener ningún archivo generado en un repositorio (de lo contrario, verá cambios y tendrá que confirmarlos / revertirlos). Sin embargo, si desea tener la versión "lista para instalar" agregada (= etiquetada) a su repositorio, recomendaría mantener los archivos configure y Makefile. Son los necesarios para una instalación, que debería funcionar sin autotools.

 -2
Author: Scharron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-20 14:27:13