গাছের আড়ালে 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.