2011-12-16 12 views
1
$dir

私はすべてのファイル/ディレクトリ(再帰的)の概要を取得したいのですが、:のみ(改行が分離されている$リストを想定)どのようにVCSの状態/プログラムを無視するようなものを実装するには?

  • $listに含まれているすべてのファイル/ディレクトリを除外
  • cd $dir && git init && echo "$list" > .gitignore && git status && rm -rf .git .gitignore:私は現在使用してその下全体ではなく、木の$listに含まれていない最もトップレベルのディレクトリ

が含まれます

これはシンプルで、 'untracked files'のリストは私が必要とするものですが、tmp gitリポジトリの不必要なファイルシステムI/Oがあり、ファイルを無視するので、本当にきれいではありません。

私はまた、empty=$(mktemp -d) && rsync -nv --exclude-from=$list $dir/ $emptyのようなプルーンアクションなどでfindを熟考していますが、それらは私が望むように動作しません。

これはどのように実装しますか?これを行う既存のシェル/ python/...ツールはありますか?または私は何とか実際に一時的なgitリポジトリ(または別のvcsツールを作成せずに、どうにかgitコードを再利用できますか?)簡潔1ライナー形式の予め

答えて

1

謝罪(この方法をテストするために簡単だった)

for FILE in `find .`; do eval "case \"$FILE\" in "$list");;*)echo \"$FILE\";;esac";done 

リストの形式は「./path/to/file|dir|dir/*あろう| * allfilesmatchingthis * | * .git ... "

「status」タイプのコマンドに適合するエコーを置き換えます。

関連する問題