Réponses:
Cela pourrait aider: répertorier les gitfichiers ignorés d'une manière presque compatible pour le treefiltre:
function tree-git-ignore {
# tree respecting gitignore
local ignored=$(git ls-files -ci --others --directory --exclude-standard)
local ignored_filter=$(echo "$ignored" \
| egrep -v "^#.*$|^[[:space:]]*$" \
| sed 's~^/~~' \
| sed 's~/$~~' \
| tr "\\n" "|")
tree --prune -I ".git|${ignored_filter: : -1}" "$@"
}
Tree prend en charge le -Idrapeau.
-I pattern Do not list those files that match the wild-card pattern.
Tree prend en charge un modèle unique qui exclura tous les fichiers / répertoires qui lui correspondent.
Les fichiers ignorés de Git sont un peu plus compliqués:
L'exclusion peut provenir de plusieurs fichiers $HOME/.config/git/ignore,, de la sortie de git config --get core.excludesfile, .gitignore(par répertoire) ~/.gitignore, et plus (voir man gitignore).
Un autre problème est que les modèles pris en treecharge diffèrent de ce que fait git (comme l'a noté @Brad Urani).
Mais nous pouvons obtenir de près ...
tree -I "$(grep -hvE '^$|^#' {~/,,$(git rev-parse --show-toplevel)/}.gitignore|sed 's:/$::'|tr \\n '\|')"
Ou en fonction:
function gtree {
git_ignore_files=("$(git config --get core.excludesfile)" .gitignore ~/.gitignore)
ignore_pattern="$(grep -hvE '^$|^#' "${git_ignore_files[@]}" 2>/dev/null|sed 's:/$::'|tr '\n' '\|')"
if git status &> /dev/null && [[ -n "${ignore_pattern}" ]]; then
tree -I "${ignore_pattern}" "${@}"
else
tree "${@}"
fi
}
gitcommandes pour essayer de trouver le fichier. Ce que cela rapporte dépendra de votre réglage.
~/.gitignoreest un lien symbolique. J'ai essayé de trouver un moyen de m'appuyer gitpour me dire ce qui est ignoré, mais tous mes efforts pour trouver la bonne combinaison continuent de se heurter à des difficultés ou à des situations ambiguës.
tree -Icela respecte toutes les options de globbing qui le .gitignorefont, ce qui me fait penser qu'il n'y a pas de solution parfaite. La meilleure approximation que j'ai trouvée la nuit dernière est echo "node_modules|tmp|_build" > ~/.treeignoreettree -I "$(cat ~/.treeignore)"
git ls-files.