web-dev-qa-db-fra.com

Comment ajouter des fichiers exécutables Linux à .gitignore?

Comment ajouter des fichiers exécutables linux à .gitignore sans leur donner une extension explicite et sans les placer dans un répertoire spécifique ou/bin? La plupart sont nommés de la même manière que le fichier C à partir duquel ils ont été compilés sans l'extension ".c".

60
haziz

Pouvez-vous ignorer tout, mais les fichiers de code source?

Par exemple:

*
!*.c
!Makefile
37
Havok

Je les mettrais explicitement dans le projet .gitignore. Ce n'est pas élégant, mais j'imagine que votre projet n'en a pas que beaucoup d'entre eux.

13
Ben

La plupart des développeurs ont généralement un répertoire build dans leur projet où s'exécute le processus de construction réel. Ainsi, tous les exécutables, .o, .so, .a, etc. sont là et ce répertoire de construction est ajouté dans le .gitignore.

6
Zaxter

J'ai écrit un script pour ajouter automatiquement des exécutables ELF à .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"

Fonctionnalités:

  • commence à chercher à partir du dossier de niveau supérieur (peut-être une erreur!)
  • ignore les fichiers ELF, à l'exception des fichiers .o et .so qui peuvent être ignorés avec une règle générique
  • conserve les entrées existantes dans .gitignore sans les dupliquer

Cette version à script unique est ici: http://sam.nipl.net/b/git-ignore-elf-1

Voici une version plus modulaire, qui dépend d'autres scripts (git-root, find-elf, uniqo) du même endroit: http://sam.nipl.net/b/git-ignore-elf

5
Sam Watkins

Un moyen de générer des différences par rapport à votre .gitignore d'un coup tous les fichiers exécutables du répertoire courant:

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

cela génère un diff, ce qui signifie que vous ne perdez aucune modification manuelle du fichier. Cela suppose que votre .gitignore le fichier est déjà trié. La partie sed dépouille juste le leader ./ que la recherche génère.

Il n'y a pas de moyen automatique d'ignorer uniquement les fichiers exécutables, vous devrez donc toujours gérer le fichier par l'homme.

3
Mark Fisher