প্রকল্প সম্পর্কে
`git-stats` হলো Rust-এ লেখা একটি কমান্ড-লাইন টুল যা `git log` তথ্য বিশ্লেষণ করে সমন্বিত কমিট পরিসংখ্যান তৈরি করে। এটি `gitoxide`, একটি পিওর-Rust git ইমপ্লিমেন্টেশন ব্যবহার করে সরাসরি রিপোজিটরি পড়ে, ফলে git বাইনারির প্রয়োজন হয় না।
## বৈশিষ্ট্যসমূহ
- **সমন্বিত পরিসংখ্যান**: লেখক অনুযায়ী কমিটের সংখ্যা, পরিবর্তিত ফাইল, সংযোজন (insertions), বিয়োজন (deletions) এবং নেট লাইন পরিবর্তন সংক্ষিপ্ত করে দেখায়।
- **রিভিশন রেঞ্জ**: একক রিভিশন, `A..B`, এবং `A...B` রেঞ্জ সাপোর্ট করে, যেখানে প্রান্তবিন্দুগুলো refs, শর্ট হ্যাশ, `@{n}` ইত্যাদি হিসেবে উল্লেখ করা যায়।
- **ফিল্টারিং**: লেখক (regex), তারিখের রেঞ্জ (`--since`, `--until`), এবং রিভিশন রেঞ্জ অনুযায়ী সীমাবদ্ধতা আরোপ করা যায়।
- **রিভিউ ট্র্যাকিং**: `Acked-by`, `Tested-by`, এবং `Reviewed-by` git ট্রেইলারের ভিত্তিতে ঐচ্ছিকভাবে রিভিউয়ার/পরীক্ষক দেখায়।
- **সর্টিং**: যেকোনো কলাম (লেখক, কমিট, ফাইল, সংযোজন, বিয়োজন, নেট) অনুযায়ী উর্ধ্বক্রম বা অবরোহী ক্রমে সাজানো যায়।
- **ইমেইল প্রদর্শন**: ঐচ্ছিকভাবে লেখকের ইমেইল ঠিকানা দেখানো যায়।
## ইনস্টলেশন
Crates.io থেকে ইনস্টল করুন:
```
cargo install git-stats --locked
```
অথবা প্রিবিউল্ট বাইনারির জন্য `cargo-binstall` ব্যবহার করুন:
```
cargo binstall git-stats
```
Arch Linux-এ, AUR প্যাকেজ `git-stats` (সোর্স) অথবা `git-stats-bin` (প্রিবিউল্ট) ব্যবহার করুন।
`mise`-এর মাধ্যমে চেকসাম এবং SLSA প্রোভেন্যান্স ভেরিফিকেশনসহ একটি প্রিবিউল্ট বাইনারি ইনস্টল করুন:
```
mise use -g github:lukehsiao/git-stats
```
## ব্যবহার
```
Usage: git-stats [OPTIONS] [revision-range]
Arguments:
[revision-range] Show only commits in the specified revision range [default: HEAD]
Options:
-e, --email Show the email address of each author
-r, --reviews Show who reviewed/tested commits based on git trailers
-s, --sort <SORT> What column to sort by [default: commits] [possible values: author, commits, files, insertions, deletions, net]
--reverse Reverse the sorting order
-a, --author <AUTHOR> Limit commits to those matching a regex pattern
--since <SINCE> Limit to commits more recent than a date
--until <UNTIL> Limit to commits older than a date
-h, --help Print help
-V, --version Print version
```
উদাহরণ আউটপুট:
```
$ git stats -r origin..HEAD
Author Commits Changed Files Insertions Deletions Net Δ
Luke Hsiao 67 117 +2616 -1126 +1490
dependabot[bot] 31 62 +203 -267 -64
Total 98 179 +2819 -1393 +1426
Reviewer/Tester Commits
Luke Hsiao 1
```
## নোটসমূহ
- **রিভিশন রেঞ্জ**: কেবল সহজ ফর্মগুলো সাপোর্ট করা হয়; জটিল gitrevisions(7) সিনট্যাক্স ব্যাখ্যা করা হয় না।
- **তারিখ ফিল্টারিং**: ISO 8601, RFC 2822, ইউনিক্স টাইমস্ট্যাম্প এবং "2 weeks ago"-এর মতো আপেক্ষিক তারিখ গ্রহণ করে। ফিল্টারিং কমিটারের তারিখের (committer date) ভিত্তিতে করা হয়।
- **লেখক মিল**: mailmap-রেজলভড লেখকের সাথে মিলানো হয়, যা `git log --author`-এর থেকে ভিন্ন কারণ এটি র-হেডার ব্যবহার করে।
- **মার্জ কমিট**: কমিট হিসেবে গণনা করা হয় কিন্তু কোনো লাইন বা ফাইল পরিবর্তনে অবদান রাখে না।
- **শ্যালো ক্লোন**: কাজ করে, কিন্তু পরিসংখ্যান ফুল ক্লোনের থেকে ভিন্ন হতে পারে; একটি সতর্কবার্তা প্রদর্শিত হয়।
- **সাবমডিউল**: একটি পরিবর্তিত ফাইল হিসেবে গণনা করা হয়, git-এর রিনেম হ্যান্ডলিং-এর সাথে সামান্য পার্থক্য থাকতে পারে।
- **লাইন গণনা**: gitoxide-এর ডিফ ইঞ্জিন থেকে আসে, কিছু হাঙ্কে (hunks) git-এর সাথে সামান্য ভিন্ন হতে পারে।
- **SHA-256 রিপোজিটরি**: সাপোর্ট করা হয় না (gitoxide-এর সীমাবদ্ধতা)।
- **কমিট এনকোডিং**: নন-UTF-8 এনকোডিং রূপান্তরিত হয় না; লেখকের নামে রিপ্লেসমেন্ট ক্যারেক্টার দেখা যেতে পারে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.