2009-10-21 10 views
10

que quiero hacer caso omiso de los archivos ejecutables que no tienen una extensiónGIT - ignorar los archivos basándose en el modo

Por ejemplo:

gcc -o foo foo.c 

Sé que podría añadir 'foo' a mi archivo .gitignore, pero si decido cambiar el nombre del ejecutable necesitaría actualizar mi archivo .gitignore ...

+0

No se puede ignorar la base de archivos en el modo (permisos), pero como dice Jefromi, puede ignorar todos los archivos excepto los que tienen una extensión. –

Respuesta

8

Realmente va a ser mejor para usted mantener manualmente el gitignore, probablemente. Usted puede hacer esto:

* 
!*.* 

para excluir todo, entonces incluir todo, con una, pero sospecho que sus directorios no tienen extensiones "". Los directorios actualmente rastreados seguirían siendo rastreados, por supuesto, pero si agrega uno nuevo, git-status no lo vería, y tendría que usar add -f para obtenerlo.

Probablemente no sea bueno asumirlo todo los archivos sin extensión no se deben rastrear, de todos modos. Puede terminar con algunos de forma natural, por ejemplo, README e INSTALL son bastante comunes. Es mucho peor ignorar accidentalmente un archivo que tener que modificar el gitignore también. Modificar el gitignore puede tomar unos segundos, pero será obvio cuando necesites hacerlo. Si accidentalmente ignora un archivo, fácilmente podría no registrarlo y perder el trabajo.

10

Normalmente lo manejo usando hacks de makefile. En mi Makefile tengo el nombre del ejecutable $ (nombre) y luego hago esto:

#first rule 
all: gitignoreadd ... more depends 
    ... some commands ... 

gitignoreadd: 
    grep -v "$(name)" .gitignore > temp 
    echo $(name) >> temp 
    mv temp .gitignore 

gitignoreremove: 
    grep -v "$(name)" .gitignore > temp 
    mv temp .gitignore 

Esa regla puede entonces ser simplemente una dependencia de la marca en algún lugar apropiado. Entonces usted generalmente tiene una regla de 'make clean' como sigue:

clean: gitignoreremove 
    rm *.o *.othergarbagefiles $(name) 

Esto debería hacer el truco. Es un truco pero funciona para mí. Lo único es que debe ejecutar make clean antes de cambiar el nombre para limpiar todo automáticamente.

Cuestiones relacionadas