¿Hay alguna manera de hacer que treeno se muestren los archivos que se ignoran .gitignore?
¿Hay alguna manera de hacer que treeno se muestren los archivos que se ignoran .gitignore?
Respuestas:
Esto podría ayudar: enumere los gitarchivos ignorados de una manera casi compatible para el treefiltro:
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}" "$@"
}
El árbol apoya la -Ibandera.
-I pattern Do not list those files that match the wild-card pattern.
Tree admite un patrón único que excluirá todos los archivos / directorios que coincidan.
Los archivos de ignorar de Git son un poco más complicados:
La exclusión puede provenir de múltiples archivos, $HOME/.config/git/ignore, la salida git config --get core.excludesfile, .gitignore(por directorio), ~/.gitignorey más (ver man gitignore).
Otro problema es que los patrones que treesoportan difieren de lo que hace git (como lo señaló @Brad Urani).
Pero podemos acercarnos ...
tree -I "$(grep -hvE '^$|^#' {~/,,$(git rev-parse --show-toplevel)/}.gitignore|sed 's:/$::'|tr \\n '\|')"
O como una función:
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
}
gitcomandos para intentar encontrar el archivo. Lo que eso devuelva dependerá de la configuración que tenga.
~/.gitignorees un enlace simbólico. He estado tratando de encontrar una manera de confiar gitpara decirme lo que se ignora, pero todos mis esfuerzos por encontrar la combinación correcta siguen teniendo dificultades o situaciones ambiguas.
tree -Ique respeta todas las opciones globales que .gitignoreme hace pensar que no hay una solución perfecta. La mejor aproximación que se me ocurrió anoche es echo "node_modules|tmp|_build" > ~/.treeignoreytree -I "$(cat ~/.treeignore)"
git ls-files.