عن المشروع

`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؛ قد تظهر أسماء المؤلفين بأحرف بديلة.