Come si aggiungono i file eseguibili di linux a .gitignore senza dare loro un'estensione esplicita e senza collocarli in una directory specifica o bin? La maggior parte sono denominati come il file C da cui sono stati compilati senza l'estensione ".c".Come aggiungere file eseguibili di Linux a .gitignore?
risposta
Inserirli esplicitamente nel progetto .gitignore. Non è elegante, ma immagino che il tuo progetto non abbia quello molti di loro.
Il motivo per cui sono incappato in questa domanda è esattamente perché * ha * che molti di loro. –
Un modo di generare differenze contro il vostro .gitignore
in un colpo solo da tutti i file eseguibili dalla directory corrente:
find . -perm /111 -type f | sed 's#^./##' | sort | diff -u .gitignore -
questo genera un diff che significa che non perdere le modifiche manuali al file. Ciò presuppone che il tuo file .gitignore
sia già ordinato. La parte sed semplicemente spoglia il leader ./
che trova genera.
Non esiste un modo automatico per ignorare solo i file eseguibili, quindi sarà sempre necessario gestire il file man-man.
Si può ignorare tutto, ma i file del codice sorgente?
Ad esempio:
*
!*.c
!Makefile
Ho scritto uno script per aggiungere automaticamente gli eseguibili 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"
Caratteristiche:
- inizia guardando dalla cartella di primo livello (potrebbe essere un misfeature!)
- ignora i file ELF, escluso .o e file .so che può essere ignorata con una regola generica
- conserva le voci esistenti in .gitignore senza duplicarle
Questa versione single-script è qui: http://sam.nipl.net/b/git-ignore-elf-1
Ecco una versione più modulare, che dipende da altri script (git-root, find-elfo, uniqo) dallo stesso luogo: http://sam.nipl.net/b/git-ignore-elf
c'è una risposta simile usando python e file (1), qui: http://stackoverflow.com/a/19749478/218294 –
La maggior parte degli sviluppatori di solito ha una directory build
nel proprio progetto in cui viene eseguito il processo di compilazione effettivo. Quindi, tutti gli eseguibili, .o
, .so
, .a
, ecc. Sono lì e questa directory di build è stata aggiunta a .gitignore
.
Questo è praticamente un duplicato di http://stackoverflow.com/questions/5711120/gitignore-withoutbinary-files Potrebbe unirli. –
No, c'è una differenza tra file eseguibili e file binari. Vedo la necessità di ignorare sia gli script eseguibili che i file binari. Non penso che questa domanda sia un duplicato. – Alexander