リポジトリ以外のフォルダでは無視されるgit状態のシミュレーション

リポジトリ以外のフォルダでは無視されるgit状態のシミュレーション

本質的に重複する可能性があります。この問題しかし、私が知っている限り、提供されたPerlスクリプトは私の場合は動作しません。複数のパターンを探す質問もたくさん出ていますが、Googleでは「パターンファイル」と「ファイル名パターン」を区別しないようで、検索が意外と難しいです。

フォローしたい

git status --ignored --porcelain | awk '{print $2}'

リポジトリではなくフォルダにあります。それは、次の制約を使用して、(指定された)ファイルにリストされているパターンに一致するファイルとディレクトリを一覧表示したいと思います。:

  • 使用するモードですgitignoreの構文、特に空白行とコメントはスクリプトで無視する必要があります。
  • スクリプトは現在の作業ディレクトリから開始する必要があります。
  • スクリプトはいいえ一致するディレクトリ(つまり、一致は常にリーフ)に移動するか、シンボリックリンクに移動します。

簡単な例は次のとおりです。

$> cat .gitignore 
    *.DS_Store*
    tmp/
    a/**/foo

$> tree -a .
.
|-- .DS_store
|-- .gitignore
|-- a
|   |-- b
|   |   |-- foo
|   |   |   `-- file
|   |   `-- tmp
|   |-- foo
|   `-- tmp
|       `-- file
`-- c
    |-- .DS_Store?
    `-- foo

5 directories, 8 files

$> git status --ignored --porcelain | awk '{print $2}'
    .DS_store
    a/b/foo/
    a/foo
    a/tmp/
    c/.DS_Store?

可能であれば、osxとlinuxの両方で実行され、posix-egrep形式のパターンを考慮するように拡張できるソリューションに特に興味があります。最後の部分では、このような操作は機能しますfind . -print | egrep -f patternfileが、一致するディレクトリに移動して作業が非常に遅くなる可能性があります。

ベストアンサー1

おすすめ記事