العودة إلى التحديثات
New releaseSep 7, 2026

git-dumper v1.0.9

أداة لتفريغ مستودع git من موقع ويب

مشاركة

git-dumper

أداة لتفريغ مستودع git من موقع ويب.

التثبيت

يمكن تثبيتها بسهولة باستخدام pip:

pip install git-dumper

الاستخدام

usage: git-dumper [options] URL DIR

Dump a git repository from a website.

positional arguments:
  URL                   url
  DIR                   output directory

optional arguments:
  -h, --help            show this help message and exit
  --proxy PROXY         use the specified proxy
  -j JOBS, --jobs JOBS  number of simultaneous requests
  -r RETRY, --retry RETRY
                        number of request attempts before giving up
  -t TIMEOUT, --timeout TIMEOUT
                        maximum time in seconds before giving up
  -u USER_AGENT, --user-agent USER_AGENT
                        user-agent to use for requests
  -H HEADER, --header HEADER
                        additional http headers, e.g `NAME=VALUE`
  --client-cert-p12 CLIENT_CERT_P12
                        client certificate in PKCS#12 format
  --client-cert-p12-password CLIENT_CERT_P12_PASSWORD
                        password for the client certificate
  -b BRANCH, --branch BRANCH
                        additional branch name to check for (repeatable)

مثال

git-dumper http://website.com/.git ~/website

تنبيه

استخدم هذه الأداة على مسؤوليتك الخاصة!

يجب أن تعلم أنه إذا كان المستودع الذي تقوم بتنزيله تحت سيطرة مهاجم، فقد يؤدي ذلك إلى تنفيذ تعليمات برمجية عن بُعد على جهازك.

البناء من المصدر

ببساطة قم بتثبيت التبعيات باستخدام pip:

pip install -r requirements.txt

ثم، استخدم ببساطة:

./git_dumper.py http://website.com/.git ~/website

كيف تعمل؟

ستتحقق الأداة أولاً مما إذا كان عرض الدليل متاحًا. إذا كان كذلك، فستقوم فقط بتنزيل دليل .git بشكل متكرر (ما ستفعله باستخدام wget).

إذا لم يكن عرض الدليل متاحًا، فستستخدم عدة طرق للعثور على أكبر عدد ممكن من الملفات. خطوة بخطوة، سيقوم git-dumper بـ:

  • جلب جميع الملفات الشائعة (.gitignore, .git/HEAD, .git/index, إلخ)؛
  • العثور على أكبر عدد ممكن من المراجع (refs) (مثل refs/heads/master, refs/remotes/origin/HEAD, إلخ) من خلال تحليل .git/HEAD و.git/logs/HEAD و.git/config و.git/packed-refs وهكذا؛
  • العثور على أكبر عدد ممكن من الكائنات (sha1) من خلال تحليل .git/packed-refs و.git/index و.git/refs/* و.git/logs/*؛
  • جلب جميع الكائنات بشكل متكرر، مع تحليل كل commit للعثور على آبائهم؛
  • تشغيل git checkout . لاستعادة الشجرة العاملة الحالية.

الفئات