عن المشروع
`git-stats` هي أداة سطر أوامر مكتوبة بلغة Rust تقوم بتحليل معلومات `git log` لإنتاج إحصاءات التزامات مجمعة. تقرأ المستودع مباشرة باستخدام `gitoxide`، وهو تنفيذ بلغة Rust خالصة لـ git، مما يلغي الحاجة إلى ملف git التنفيذي.
## الميزات
- **إحصاءات مجمعة**: تلخص الالتزامات حسب المؤلف، مع عرض عدد الالتزامات والملفات المتغيرة والإضافات والحذف وصافي تغييرات الأسطر.
- **نطاقات المراجعات**: تدعم المراجعات المفردة ونطاقات `A..B` و`A...B`، مع تحديد نقاط النهاية كمراجع أو تجزئات قصيرة أو `@{n}` وغيرها.
- **التصفية**: التحديد حسب المؤلف (تعبير نمطي) ونطاق التاريخ (`--since` و`--until`) ونطاق المراجعة.
- **تتبع المراجعة**: يعرض اختياريًا المراجعين/المختبرين بناءً على إشارات git `Acked-by` و`Tested-by` و`Reviewed-by`.
- **الترتيب**: الترتيب حسب أي عمود (المؤلف، الالتزامات، الملفات، الإضافات، الحذف، الصافي) بترتيب تصاعدي أو تنازلي.
- **عرض البريد الإلكتروني**: يعرض اختياريًا عناوين البريد الإلكتروني للمؤلفين.
## التثبيت
التثبيت من crates.io:
```
cargo install git-stats --locked
```
أو باستخدام `cargo-binstall` للحصول على ملفات تنفيذية جاهزة:
```
cargo binstall git-stats
```
على Arch Linux، استخدم حزم AUR `git-stats` (المصدر) أو `git-stats-bin` (جاهزة).
مع `mise`، ثبّت ملفًا تنفيذيًا جاهزًا مع التحقق من checksum وSLSA provenance:
```
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 والطوابع الزمنية Unix والتواريخ النسبية مثل "2 weeks ago". تتم التصفية على تاريخ المُلتزِم.
- **مطابقة المؤلف**: تتم المطابقة مقابل المؤلف المُحلَّل عبر mailmap، بخلاف `git log --author` الذي يستخدم الترويسات الخام.
- **التزامات الدمج**: تُحتسب كالتزامات لكنها لا تساهم بأي تغييرات في الأسطر/الملفات.
- **الاستنساخات السطحية**: تعمل، لكن قد تختلف الإحصاءات عن الاستنساخات الكاملة؛ تُطبع تحذير.
- **الوحدات الفرعية**: تُحتسب كملفات متغيرة مفردة، مع اختلافات طفيفة عن معالجة إعادة التسمية في git.
- **عدّ الأسطر**: من محرك diff في gitoxide، قد يختلف قليلاً عن git في بعض المقاطع.
- **مستودعات SHA-256**: غير مدعومة (قيد في gitoxide).
- **ترميزات الالتزامات**: لا يتم تحويل الترميزات غير UTF-8؛ قد تظهر أسماء المؤلفين بأحرف بديلة.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.