
🧬 استخراج وتحليل معلومات المساهمين من مستودعات git
أداة استخبارات مفتوحة المصدر (OSINT) تستخرج الهويات — الأسماء، البريد الإلكتروني، والروابط بين الحسابات التي تبدو غير مرتبطة — من مستودعات git وجيثب.
gitcolombo.py) — تستنسخ المستودعات، وتتصفح git log، ويمكنها استدعاء واجهة برمجة تطبيقات جيثب للحصول على إشارات أكثر ثراءً.gitcolombo.html) — ملف HTML ثابت واحد؛ افتحه في المتصفح ويمكنك الاستعلام مباشرة عن واجهة برمجة تطبيقات جيثب، بدون تثبيت.للاطلاع على التفصيل الكامل لمصدر كل بريد إلكتروني/اسم (مفاتيح PGP، الأحداث العامة، بحث الالتزامات، توابع رسائل الالتزام، إلخ) راجع docs.md.
مستضافة على https://gitcolombo.soxoj.com — أو افتح gitcolombo.html محلياً. ملف HTML ثابت واحد يستعلم من واجهة برمجة تطبيقات جيثب مباشرة من متصفحك؛ لا تثبيت، لا خادم خلفي.
يتطلب Python 3.10+ وثنائي git عامل. لا تبعيات خارجية لـ Python.
pip install gitcolombo
أو من المصدر:
git clone https://github.com/Soxoj/gitcolombo
cd gitcolombo
pip install -e .
# from any git URL
gitcolombo -u https://github.com/Soxoj/maigret
# from a local directory, recursively
gitcolombo -d ./maigret -r
# clone and scan every public repo of a GitHub user/org
gitcolombo --nickname octocat
# API-only: find emails for a GitHub username without cloning
gitcolombo --search Soxoj
# change where remote repos get cloned (default: ./repos)
gitcolombo -u https://github.com/Soxoj/maigret --repos-dir ./clones
يعمل الأمر python -m gitcolombo بنفس الطريقة إذا كنت تفضل عدم وضع السكربت في مسار $PATH.
يتم استنساخ المستودعات البعيدة إلى ./repos/ افتراضياً؛ يمكنك التجاوز باستخدام --repos-dir. للاستنساخ الدفعي لمجموعات GitLab و Bitbucket استخدم ghorg.
غالباً ما يقوم المطورون بالالتزام بهوية واحدة (مثل حساب العمل)، ثم يتحولون إلى هوية أخرى (مثل حساب شخصي) ويشغلون git commit --amend، متناسين أن هذا يعيد كتابة الملتزم لكنه يترك المؤلف الأصلي في مكانه. ينفصل الدوران، وهذا التباين هو بالضبط ما يربطه Gitcolombo.
شرح مختصر عن الفرق بين المؤلف والملتزم: https://stackoverflow.com/questions/18750808/difference-between-author-and-committer-in-git
مجموعة اختبارات تعتمد فقط على المكتبة القياسية — لا تبعيات خارجية. من جذر المستودع (بعد pip install -e .):
python3 -m unittest test_gitcolombo -v
الاختبار الشامل ينشئ مستودع git حقيقي في مجلد مؤقت، لذا يجب وجود ثنائي git عامل (يتم تخطي الاختبار في حال عدم وجود git).
تعمل الاختبارات مع كل دفعة وطلب سحب عبر GitHub Actions (.github/workflows/tests.yml) على Python 3.10–3.13.
[email protected]، @users.noreply.github.com)