
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 .لاستعادة الشجرة العاملة الحالية.