গিটে ফাইলগুলি কীভাবে দেখাতে পারি যা প্রায়শই পরিবর্তন হয়?
গিটে ফাইলগুলি কীভাবে দেখাতে পারি যা প্রায়শই পরিবর্তন হয়?
উত্তর:
আপনি git effort
( git-extras
প্যাকেজ থেকে ) কমান্ডটি ব্যবহার করতে পারেন যা ফাইল প্রতি কতগুলি কমিট (কমিট এবং সক্রিয় দিনগুলি দ্বারা) সম্পর্কিত পরিসংখ্যান দেখায়।
সম্পাদনা করুন: গিট প্রচেষ্টা কেবলমাত্র একটি বাশ স্ক্রিপ্ট যা আপনি এখানে খুঁজে পেতে পারেন এবং আপনার আরও বিশেষ কিছু প্রয়োজন হলে আপনার প্রয়োজনের সাথে খাপ খাইয়ে নিতে পারেন।
git help effort
এটি সম্পর্কে কোনও তথ্য নেই: /)। আমি ধরে নিলাম ফলাফলের প্রথম সেটটি ফাইল নাম দ্বারা অর্ডার করা হয়েছে, এবং দ্বিতীয়টি ফাইল প্রতি প্রতিশ্রুতি সংখ্যার দ্বারা। ম্যান পেজটি সমস্যাগুলি প্রতিবেদন করতে github.com/tj/git-extras/issues উল্লেখ করেছে
আপনি নিম্নলিখিত মত কিছু করতে পারে:
git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10
লগটি প্রতিটি প্রতিশ্রুতিতে পরিবর্তিত হওয়া ফাইলগুলির নাম দেয়, তবে এটির বাকিগুলি কেবল শীর্ষস্থানীয় 10 টি সর্বাধিক ঘন ঘন প্রদর্শিত ফাইলের নামগুলি আউটপুট করে।
--branches
করতে git log
পারেন।
git log --pretty=format: --since="1 year ago" --name-only -- "*.java" | sort | uniq -c | sort -rg | head -10
আমি লক্ষ্য করেছি যে মার্কের
এবং
সেহের উভয়
উত্তরই --follow
ফাইলগুলিতে আসে না, অর্থাত্ তারা যখন কোনও ফাইলের পুনরায় নাম পৌঁছে যায় তখন তারা থামে। এই স্ক্রিপ্টটি অনেক ধীর হবে তবে সেই লক্ষ্যে কাজ করবে।
git ls-files |
while read aa
do
printf . >&2
set $(git log --follow --oneline "$aa" | wc)
printf '%s\t%s\n' $1 "$aa"
done > bb
echo
sort -nr bb
rm bb
roles
আমার ক্ষেত্রে ডিরেক্টরিতে প্রতিটি ফোল্ডার দ্বারা তবে সহজেই আপনার ব্যবহারের ক্ষেত্রে ফিট করার জন্য এটি পরিবর্তন করা হয়েছে।
পাওয়ারশেলের জন্য, ধরে নিচ্ছি আপনি গিট ব্যাশ ইনস্টল করেছেন
git log --pretty=format: --name-only | sort | uniq -c | sort -Descending | select -First 10
এটি একটি উইন্ডোজ সংস্করণ
git log --pretty=format: --name-only > allfiles.csv
তারপর এক্সেল খুলুন
A1: FileName
A2: isVisibleFilename >> =IFERROR(IF(C2>0,TRUE,FALSE),FALSE)
A3: DotLocation >> =FIND("@",SUBSTITUTE(A2,".","@",(LEN(A2)-LEN(SUBSTITUTE(A2,".","")))/LEN(".")))
A4: HasExt >> =C2>1
A5: TYPE >> =IF(D2=TRUE,MID(A2,C2+1,18),"")
পিভট টেবিল তৈরি করুন
values: Type
Filter: isFilename = true
Rows : Type
Sub : FileName
click [Count Of TYPE] -> Sort -> Sort Largest To Smallest
git whatchanged --all | \grep "\.\.\." | cut -d' ' -f5- | cut -f2- | sort | uniq -c | sort
আপনি যদি কেবল নিজের ফাইলগুলি যুক্ত --author
করতে চান তবে git whatchanged --author=name --all
।
পুরানো প্রশ্ন, তবে আমি এখনও একটি খুব দরকারী প্রশ্ন মনে করি। স্ট্রেইট পাওয়ারশেলের একটি কার্যকারী উদাহরণ এখানে। আপনি যে শাখায় রয়েছেন সে সম্পর্কে এটি আপনার রেপোতে শীর্ষ 10 টি পরিবর্তিত ফাইলগুলি পাবেন।
git log --pretty=format: --name-only | Where-Object { ![string]::IsNullOrEmpty($_) } | Sort-Object | Group-Object | Sort-Object -Property Count -Descending | Select-Object -Property Count, Name -First 10
উদাহরণস্বরূপ আমরা দুটি কমিট বা শাখার মধ্যে পরিবর্তিত ফাইলগুলিও খুঁজে পেতে পারি
git log --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50
এটি সম্ভবত সুস্পষ্ট, তবে প্রদত্ত অনুসন্ধানগুলি সমস্ত ফাইল প্রদর্শন করবে তবে সম্ভবত আপনার কনফিগারেশন বা প্রকল্পের ফাইলগুলি সর্বাধিক আপডেট হওয়া তা জানতে আপনি আগ্রহী নন। একটি সাধারণ গ্রেপ আপনার কোড ফাইলগুলিতে পৃথক হবে, উদাহরণস্বরূপ:
git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20