2011-11-23 20 views
42

¿Cómo se agregan los archivos ejecutables de Linux a .gitignore sin darles una extensión explícita y sin colocarlos en un directorio específico// bin? La mayoría tienen el mismo nombre que el archivo C desde el que se compilaron sin la extensión ".c".Cómo agregar archivos ejecutables de Linux a .gitignore?

+0

Esto es más o menos un duplicado de http://stackoverflow.com/questions/5711120/gitignore-without-binary-files Podría fusionarlos. –

+0

No, hay una diferencia entre los archivos ejecutables y los archivos binarios. Veo la necesidad de ignorar las secuencias de comandos ejecutables y los archivos binarios. No creo que esta pregunta sea un duplicado. – Alexander

Respuesta

10

Me los pondría explícitamente en el proyecto .gitignore. No es elegante, pero imagino que su proyecto no tiene que muchos de ellos.

+3

La razón por la que tropecé con esta pregunta es exactamente porque * tiene * muchos de ellos. –

3

Una forma de generar diferencias en contra de su .gitignore de una sola vez de todos los archivos ejecutables de directorio actual:

find . -perm /111 -type f | sed 's#^./##' | sort | diff -u .gitignore - 

esto genera un diff lo que significa que no se pierde ningún cambio manual en el archivo. Esto supone que su archivo .gitignore ya está ordenado. La parte sed simplemente elimina el ./ que genera.

No hay forma automática de ignorar solo los archivos ejecutables, por lo que siempre tendrá que gestionar manualmente el archivo.

26

¿Puede ignorar todos, pero los archivos de código fuente?

Por ejemplo:

* 
!*.c 
!Makefile 
3

Escribí un guión para añadir automáticamente ejecutables ELF a .gitignore.

git-ignore-elf:

#!/bin/sh 
set -eu 
cd "$(git rev-parse --show-toplevel)" 
file=.gitignore 
new=$file.new.$$ 
(
if [ -e "$file" ]; then 
    cat "$file" 
fi 
find . -name .git -prune -o -type f ! -name '*.o' ! -name '*.so' \ 
    -print0 | xargs -0 file | grep ': *ELF ' | sed 's/:.*//' | 
sed 's,^./,,' 
) | perl -ne 'print if !$already{$_}++' >"$new" 
mv "$new" "$file" 

Características:

  • empieza a buscar en la carpeta de nivel superior (que podría ser un misfeature!)
  • ignora archivos ELF, excluyendo .o y archivos .so que se puede ignorar con una regla genérica
  • conserva las entradas existentes en .gitignore sin duplicarlas

Esta versión de un solo guión está aquí: http://sam.nipl.net/b/git-ignore-elf-1

Aquí es una versión más modular, que depende de otros scripts (GIT-raíz, encontrar elfo, uniqo) del mismo lugar: http://sam.nipl.net/b/git-ignore-elf

+0

hay una respuesta similar usando python y el archivo (1), aquí: http://stackoverflow.com/a/19749478/218294 –

4

La mayoría de los desarrolladores generalmente tienen un directorio build en su proyecto donde se ejecuta el proceso de compilación real. Por lo tanto, todos los ejecutables, .o, .so, .a, etc. están allí y este directorio de compilación se agrega al .gitignore.

Cuestiones relacionadas