গাছের আড়ালে gitignored ফাইল আছে hide


15

treeযে ফাইলগুলিকে উপেক্ষা করা হবে তা না দেখানোর কোনও উপায় আছে .gitignore?


2
আপনি যদি সত্যিই সমস্ত সম্ভাব্য উপেক্ষা করা ফাইল বিবেচনা করতে চান তবে এর আউটপুটকে বিশ্লেষণ করার চেষ্টা করুন git ls-files
ফ্রাঙ্কলিন ইউ

উত্তর:


5

এটি সাহায্য করতে পারে: ফিল্টার gitজন্য প্রায় সামঞ্জস্যপূর্ণ উপায়ে উপেক্ষা করা ফাইল তালিকা tree:

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}" "$@"
}

8

গাছ -Iপতাকা সমর্থন করে ।

-I pattern
   Do not list those files that match the wild-card pattern.

গাছ একটি একক প্যাটার্ন সমর্থন করে যা এর সাথে মেলে এমন সমস্ত ফাইল / ডিরেক্টরি বাদ দেবে।

গিটের উপেক্ষা করা ফাইলগুলি কিছুটা জটিল:

অব্যাহতির একাধিক ফাইল থেকে আসতে পারেন, $HOME/.config/git/ignore, আউটপুট git config --get core.excludesfile, .gitignore(ডিরেক্টরির প্রতি), ~/.gitignoreএবং আরো অনেক কিছু (দেখুন man gitignore)।

আর একটি সমস্যা হ'ল প্যাটার্নগুলি যা treeসমর্থন করে গিটের চেয়ে আলাদা (@ ব্র্যাড উরানির দ্বারা উল্লিখিত)।

তবে আমরা ঘনিষ্ঠতা পেতে পারি ...

tree -I "$(grep -hvE '^$|^#' {~/,,$(git rev-parse --show-toplevel)/}.gitignore|sed 's:/$::'|tr \\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
}

নিস! আমি কি সত্য যে এটি .gitignore থেকে মন্তব্য লাইনগুলি সরছে না তা সমস্যার কারণ হবে?
ব্র্যাড উরণী

আমি অনুমান করি যে এটি বাড়ির dir এর বাইরে .gitignore ফাইলগুলিকে শ্রদ্ধা করবে না B
ব্র্যাড উরণী

@ ব্র্যাডউরানি - আমি gitফাইলটি সন্ধান করার জন্য আদেশগুলি ব্যবহার করতে আমার উত্তর আপডেট করেছি । যে রিটার্নগুলি তা আপনার কী সেটিং এর উপর নির্ভর করবে।
ডার্কহার্ট

এটি আমার পক্ষে কাজ করছে না, আমি মনে করি কারণ এটি আমার ~/.gitignoreএকটি সিমিলিংক। আমি gitকী উপেক্ষা করেছি তা বলার জন্য নির্ভর করার একটা উপায় অনুসন্ধান করার চেষ্টা করেছি , তবে সঠিক সংমিশ্রণটি অনুসন্ধান করার জন্য আমার সমস্ত প্রচেষ্টা অসুবিধা বা অস্পষ্ট পরিস্থিতির মধ্যে চলেছে।
ব্র্যাড উরণী

এছাড়াও দেখে মনে হচ্ছে tree -Iসমস্ত গ্লোব্বিং বিকল্পগুলির প্রতি শ্রদ্ধা .gitignoreরাখে যা আমাকে মনে করে যে কোনও সঠিক সমাধান নেই। গত রাতের সেরা echo "node_modules|tmp|_build" > ~/.treeignoretree -I "$(cat ~/.treeignore)"
সান্নিধ্যের
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.