গিতে সর্বাধিক পরিবর্তিত ফাইল সন্ধান করা হচ্ছে


উত্তর:


46

আপনি git effort( git-extrasপ্যাকেজ থেকে ) কমান্ডটি ব্যবহার করতে পারেন যা ফাইল প্রতি কতগুলি কমিট (কমিট এবং সক্রিয় দিনগুলি দ্বারা) সম্পর্কিত পরিসংখ্যান দেখায়।

সম্পাদনা করুন: গিট প্রচেষ্টা কেবলমাত্র একটি বাশ স্ক্রিপ্ট যা আপনি এখানে খুঁজে পেতে পারেন এবং আপনার আরও বিশেষ কিছু প্রয়োজন হলে আপনার প্রয়োজনের সাথে খাপ খাইয়ে নিতে পারেন।


আউটপুটটি দ্বি-বিভক্ত হবে, প্রথমে আপনি অরসেটেড ফলাফল পাবেন, তারপরে বাছাই করা (এবং রঙিন) ফলাফল পাবেন। ঠিক?
অ্যান্ডি

@ এবং এটি মনে হয় (এবং git help effortএটি সম্পর্কে কোনও তথ্য নেই: /)। আমি ধরে নিলাম ফলাফলের প্রথম সেটটি ফাইল নাম দ্বারা অর্ডার করা হয়েছে, এবং দ্বিতীয়টি ফাইল প্রতি প্রতিশ্রুতি সংখ্যার দ্বারা। ম্যান পেজটি সমস্যাগুলি প্রতিবেদন করতে github.com/tj/git-extras/issues উল্লেখ করেছে
আসেনার

এটি কি এর সাথে মিল রয়েছে? blog.riff.org/…

158

আপনি নিম্নলিখিত মত কিছু করতে পারে:

git log --pretty=format: --name-only | sort | uniq -c | sort -rg | head -10

লগটি প্রতিটি প্রতিশ্রুতিতে পরিবর্তিত হওয়া ফাইলগুলির নাম দেয়, তবে এটির বাকিগুলি কেবল শীর্ষস্থানীয় 10 টি সর্বাধিক ঘন ঘন প্রদর্শিত ফাইলের নামগুলি আউটপুট করে।


আপনি কি দয়া করে আমাকে বলতে পারেন এটি বর্তমান শাখার উপর ভিত্তি করে আছে বা এটি পুরো সংগ্রহস্থলের জন্য কিনা? এখনও শাখা সম্পর্কে একীভূত হয়নি?
কার্তিক এস

@ কার্থিকস: এটি কেবলমাত্র বর্তমান শাখায় অঙ্গীকারের জন্য - আপনি যদি আপনার স্থানীয় কোনও শাখায় কমিট অন্তর্ভুক্ত করতে চান তবে আপনি যুক্ত --branchesকরতে git logপারেন।
লংগায়ার

4
ভাল লাগল এছাড়াও, আমি এটি বেশিরভাগ আগে মুছে ফেলা ফাইলের প্রতিবেদনও পেয়েছি। দ্রুত সমাধানটি সময় সীমাবদ্ধ করা ছিল, যেমন: --সিনস = "গত বছর"
ফ্র্যাক্টালস্পেস

4
--since "1 month ago"সময় উইন্ডোটি সংকুচিত করতে ব্যবহারকারীর বা অন্যান্য বিকল্পগুলি

4
আমার উত্তরের অংশটি git log --pretty=format: --since="1 year ago" --name-only -- "*.java" | sort | uniq -c | sort -rg | head -10
পেয়েছে

13

আমি লক্ষ্য করেছি যে মার্কের এবং সেহের উভয় উত্তরই --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

git-most.sh


4
এর প্রসারিত করতে আমি gist.github.com/caleb15/da591031936f35d80e14a42ca7ba4350 তৈরি করেছি এটি ফোল্ডারের মাধ্যমে পরিবর্তনগুলিকে একত্রিত করে, বিশেষত rolesআমার ক্ষেত্রে ডিরেক্টরিতে প্রতিটি ফোল্ডার দ্বারা তবে সহজেই আপনার ব্যবহারের ক্ষেত্রে ফিট করার জন্য এটি পরিবর্তন করা হয়েছে।
Almenon

3

পাওয়ারশেলের জন্য, ধরে নিচ্ছি আপনি গিট ব্যাশ ইনস্টল করেছেন

git log --pretty=format: --name-only | sort | uniq -c | sort -Descending | select -First 10

3

এটি একটি উইন্ডোজ সংস্করণ

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

কারণ আমি এক্সেল সম্পর্কে অনেক কিছু জানি না আমি এই নির্দেশাবলী বুঝতে পারি না।
বিগমিনার

2
git whatchanged --all | \grep "\.\.\." | cut -d' ' -f5- | cut -f2- | sort | uniq -c | sort

আপনি যদি কেবল নিজের ফাইলগুলি যুক্ত --authorকরতে চান তবে git whatchanged --author=name --all


2

পুরানো প্রশ্ন, তবে আমি এখনও একটি খুব দরকারী প্রশ্ন মনে করি। স্ট্রেইট পাওয়ারশেলের একটি কার্যকারী উদাহরণ এখানে। আপনি যে শাখায় রয়েছেন সে সম্পর্কে এটি আপনার রেপোতে শীর্ষ 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

0

উদাহরণস্বরূপ আমরা দুটি কমিট বা শাখার মধ্যে পরিবর্তিত ফাইলগুলিও খুঁজে পেতে পারি

git log  --pretty=format: --name-only <source_branch>...<target_branch> | sort | uniq -c | sort -rg | head -50 

0

এটি সম্ভবত সুস্পষ্ট, তবে প্রদত্ত অনুসন্ধানগুলি সমস্ত ফাইল প্রদর্শন করবে তবে সম্ভবত আপনার কনফিগারেশন বা প্রকল্পের ফাইলগুলি সর্বাধিক আপডেট হওয়া তা জানতে আপনি আগ্রহী নন। একটি সাধারণ গ্রেপ আপনার কোড ফাইলগুলিতে পৃথক হবে, উদাহরণস্বরূপ:

git log --pretty=format: --name-only | grep .cs$ | sort | uniq -c | sort -rg | head -20
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.