2011-11-23 5 views
42

明示的な拡張子を与えずに、特定のファイルや/ binディレクトリに置かないで、Linuxの実行可能ファイルを.gitignoreにどのように追加しますか?ほとんどのファイルは、拡張子 ".c"を付けずにコンパイルされたCファイルと同じ名前です。Linux実行ファイルを.gitignoreに追加するには?

+0

これは、http://stackoverflow.com/questions/5711120/gitignore-without-binary-filesのかなりの複製です。 それらをマージすることができました。 –

+0

いいえ、実行可能ファイルとバイナリファイルの間に違いがあります。実行可能なスクリプトとバイナリファイルの両方を無視する必要があることがわかります。私はこの質問が重複しているとは思わない。 – Alexander

答えて

10

私は明示的にそれらをプロジェクトの.gitignoreに入れます。それはエレガントではありませんが、私はあなたのプロジェクトが、そのうちの多くがではないと想像しています。

+3

私がこの質問に遭遇した理由は、正確には*それらの多くがあるからです。 –

3

現在のディレクトリからすべての実行可能ファイルから、一度にご.gitignoreに対する差異を発生させる方法は:

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

これは、ファイルを手動で変更を失うことはありません意味の差分を生成します。これは、あなたの.gitignoreファイルが既にソートされていることを前提としています。 sedの部分は、findが生成する先頭の./を取り除くだけです。

実行可能ファイルだけを無視する自動方法はないので、常にファイルを手動で管理する必要があります。

26

ソースコードファイル以外はすべて無視できますか?例えば

* 
!*.c 
!Makefile 
3

私は自動的に.gitignoreにELF実行可能ファイルを追加するためのスクリプトを書きました。

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" 

特徴:最上位のフォルダから見

  • 開始(!設計ミスかもしれません)
  • の.oとの.soファイルを除く、ELFファイルを無視これは一般的なルールで無視することができます
  • は、.gitignoreの既存のエントリを複製せずにそのまま保存します

この単一のスクリプトバージョンはここにある:ここでhttp://sam.nipl.net/b/git-ignore-elf-1

は、他のスクリプトに依存し、よりモジュールバージョン、(gitのルート、見つけるエルフを、uniqo)が同じ場所からです:http://sam.nipl.net/b/git-ignore-elf

+0

pythonとfile(1)を使って同様の答えが得られます:http://stackoverflow.com/a/19749478/218294 –

4

ほとんどの開発者は通常、実際のビルドプロセスが実行されるプロジェクトにbuildというディレクトリを持っています。 したがって、すべての実行ファイル、.o.so.aなどがあり、このビルドディレクトリは.gitignoreに追加されています。

関連する問題