Linux実行可能ファイルを.gitignoreに追加するには、明示的な拡張子を指定せずに、特定の/ binディレクトリに配置しませんか?ほとんどは、「。c」拡張子なしでコンパイルされたCファイルと同じ名前が付けられます。
ソースコードファイル以外のすべてを無視できますか?
例えば:
*
!*.c
!Makefile
それらをプロジェクト.gitignoreに明示的に配置します。それはエレガントではありませんが、あなたのプロジェクトにはthatが多くないと思います。
ほとんどの開発者は通常、実際のビルドプロセスが実行されるプロジェクトにbuild
ディレクトリを持っています。したがって、すべての実行可能ファイル、.o
、.so
、.a
などがあり、このビルドディレクトリが.gitignore
。
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"
特徴:
この単一スクリプトバージョンは次のとおりです。 http://sam.nipl.net/b/git-ignore-elf-1
これは、同じ場所にある他のスクリプト(git-root、find-elf、uniqo)に依存する、よりモジュール化されたバージョンです。 http://sam.nipl.net/b/git-ignore-elf
現在のディレクトリのすべての実行可能ファイルから.gitignore
に対して差分を生成する方法:
find . -perm /111 -type f | sed 's#^./##' | sort | diff -u .gitignore -
これは差分を生成します。つまり、ファイルへの手動の変更は失われません。これは、.gitignore
ファイルが既にソートされていることを前提としています。 sed部分は、findが生成する先頭の./
を取り除くだけです。
実行可能ファイルのみを自動的に無視する方法はないため、常にファイルを管理する必要があります。