هذا هو الأمر git-http-backend الذي يمكن تشغيله في موفر الاستضافة المجاني OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت
برنامج:
اسم
git-http-backend - تطبيق Git من جانب الخادم عبر HTTP
موجز
طائرة نفاثة http-الواجهة الخلفية
الوصف
برنامج CGI بسيط لخدمة محتويات مستودع Git لعملاء Git الذين يمكنهم الوصول إليه
المستودع عبر بروتوكولات http:// وhttps://. يدعم البرنامج جلب العملاء
باستخدام كل من بروتوكول HTTP الذكي وبروتوكول HTTP الغبي المتوافق مع الإصدارات السابقة، مثل
بالإضافة إلى العملاء الذين يدفعون باستخدام بروتوكول HTTP الذكي.
إنه يتحقق من أن الدليل يحتوي على الملف السحري "git-daemon-export-ok"، وسيفعل ذلك
رفض تصدير أي دليل Git لم يتم تحديده بشكل صريح للتصدير بهذه الطريقة
(ما لم يتم تعيين المتغير البيئي GIT_HTTP_EXPORT_ALL).
بشكل افتراضي، يتم تمكين خدمة تحميل الحزمة فقط، والتي تخدم طائرة نفاثة أحضر حزمة و طائرة نفاثة
ليرة سورية عن بعد العملاء، والتي يتم استدعاؤها من طائرة نفاثة جلب, طائرة نفاثة سحبو طائرة نفاثة استنساخ. إذا كان
تتم مصادقة العميل، ويتم تمكين خدمة تلقي الحزمة، والتي تخدم طائرة نفاثة إرسال حزمة
العملاء، والذي يتم استدعاؤه من طائرة نفاثة دفع.
خدماتنا
يمكن تمكين/تعطيل هذه الخدمات باستخدام ملف التكوين لكل مستودع:
http.getanyfile
يخدم هذا عملاء Git الأقدم من الإصدار 1.6.6 والذين لا يستطيعون استخدام التحميل
خدمة الحزمة. عند التمكين، يكون العملاء قادرين على قراءة أي ملف داخل المستودع،
بما في ذلك الكائنات التي لم يعد من الممكن الوصول إليها من أحد الفروع ولكنها لا تزال موجودة. هو - هي
يتم تمكينه بشكل افتراضي، ولكن يمكن للمستودع تعطيله عن طريق تعيين هذا التكوين
البند إلى كاذبة.
http.uploadpack
هذا يخدم طائرة نفاثة أحضر حزمة و طائرة نفاثة ليرة سورية عن بعد عملاء. يتم تمكينه بشكل افتراضي، ولكن أ
يمكن للمستودع تعطيله عن طريق تعيين عنصر التكوين هذا على خطأ.
http.receivepack
هذا يخدم طائرة نفاثة إرسال حزمة العملاء، مما يسمح بالدفع. يتم تعطيله افتراضيًا لـ
مستخدمين مجهولين، ويتم تمكينه افتراضيًا للمستخدمين الذين تمت مصادقتهم بواسطة خادم الويب. هو - هي
يمكن تعطيله عن طريق تعيين هذا العنصر على "خطأ"، أو تمكينه لجميع المستخدمين، بما في ذلك
المستخدمين المجهولين، عن طريق تعيينه على صحيح.
URL TRANSLATION
لتحديد موقع المستودع على القرص، طائرة نفاثة http-الواجهة الخلفية يسلسل
متغيرات البيئة PATH_INFO، والتي يتم تعيينها تلقائيًا بواسطة خادم الويب، و
GIT_PROJECT_ROOT، والذي يجب ضبطه يدويًا في تكوين خادم الويب. لو
لم يتم تعيين GIT_PROJECT_ROOT، طائرة نفاثة http-الواجهة الخلفية يقرأ PATH_TRANSLATED، والذي تم تعيينه أيضًا
تلقائيا عن طريق خادم الويب.
أمثلة
تقوم جميع الأمثلة التالية بتعيين http://$hostname/git/foo/bar.git إلى
/var/www/git/foo/bar.git.
اباتشي 2.x
تأكد من تمكين mod_cgi وmod_alias وmod_env، وقم بتعيين GIT_PROJECT_ROOT (أو
DocumentRoot) بشكل مناسب، وقم بإنشاء ScriptAlias إلى CGI:
SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
الاسم المستعار للنص /git/ /usr/libexec/git-core/git-http-backend/
لتمكين الوصول المجهول للقراءة مع إمكانية الوصول للكتابة المصادق عليها، يجب الحصول على إذن
لكل من إعلان المرجع الأولي (الذي نكتشفه كدفعة عبر الخدمة
المعلمة في سلسلة الاستعلام)، واستدعاء حزمة الاستلام نفسه:
خدمة RewriteCond %{QUERY_STRING}=git-receive-pack [OR]
أعد كتابة Cond %{REQUEST_URI} /git-receive-pack$
قاعدة إعادة الكتابة ^/git/ - [E=AUTHREQUIRED:yes]
أمر رفض ، سماح
رفض من env=AUTHREQUIRED
AuthType الأساسية
اسم المصادقة "Git Access"
تتطلب مرتكبي المجموعة
إرضاء أي
إذا لم يكن لديك mod_rewrite متاحًا لمطابقته مع سلسلة الاستعلام، فهو كذلك
يكفي فقط لحماية git-receive-pack نفسها، مثل:
AuthType الأساسية
اسم المصادقة "Git Access"
تتطلب مرتكبي المجموعة
في هذا الوضع، لن يطلب الخادم المصادقة حتى يقوم العميل فعليًا
يبدأ مرحلة التفاوض على الكائن من الدفع، وليس أثناء المرحلة الأولية
اتصال. لهذا السبب، يجب عليك أيضًا تمكين خيار التكوين http.receivepack في
أي مستودعات يجب أن تقبل الدفع. السلوك الافتراضي، إذا كان http.receivepack
لم يتم تعيينه، وهو رفض أي دفعات من قبل مستخدمين غير مصادقين؛ الطلب الأولي سوف
لذلك أبلغ عن 403 ممنوع للعميل، حتى دون إعطاء فرصة لذلك
المصادقة.
لطلب المصادقة لكل من عمليات القراءة والكتابة، استخدم توجيه الموقع
المستودع، أو أحد أدلةه الرئيسية:
AuthType الأساسية
AuthName "الوصول إلى Git الخاص"
تتطلب مرتكبي المجموعة
لخدمة gitweb على نفس عنوان url، استخدم ScriptAliasMatch لعناوين URL تلك فقط طائرة نفاثة
http-الواجهة الخلفية يمكنه التعامل مع الباقي وإعادة توجيهه إلى gitweb:
ScriptAliasMatch \
"(?x)^/git/(.*/(HEAD | \
معلومات/المراجع | \
الكائنات/(معلومات/[^/]+ | \
[0-9a-f]{2}/[0-9a-f]{38} | \
pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
git-(تحميل|تلقي)-حزمة))$" \
/usr/libexec/git-core/git-http-backend/$1
الاسم المستعار للنص /git/ /var/www/cgi-bin/gitweb.cgi/
لخدمة مستودعات متعددة من مختلف gitnamespaces(7) في مستودع واحد:
SetEnvIf Request_URI "^/git/([^/]*)" GIT_NAMESPACE=$1
ScriptAliasMatch ^/git/[^/]*(.*) /usr/libexec/git-core/git-http-backend/storage.git$1
تسريع ثابت أباتشي 2.x
مشابه لما سبق، ولكن يمكن استخدام Apache لإرجاع الملفات الثابتة المخزنة عليه
القرص. قد يكون هذا أكثر كفاءة في العديد من الأنظمة حيث يمكن لـ Apache أن يطلب من النواة النسخ
محتويات الملف من نظام الملفات مباشرة إلى الشبكة:
SetEnv GIT_PROJECT_ROOT /var/www/git
AliasMatch ^/git/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$ /var/www/git/$1
AliasMatch ^/git/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /var/www/git/$1
الاسم المستعار للنص /git/ /usr/libexec/git-core/git-http-backend/
يمكن دمج هذا مع تكوين gitweb:
SetEnv GIT_PROJECT_ROOT /var/www/git
AliasMatch ^/git/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$ /var/www/git/$1
AliasMatch ^/git/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /var/www/git/$1
ScriptAliasMatch \
"(?x)^/git/(.*/(HEAD | \
معلومات/المراجع | \
الكائنات/المعلومات/[^/]+ | \
git-(تحميل|تلقي)-حزمة))$" \
/usr/libexec/git-core/git-http-backend/$1
الاسم المستعار للنص /git/ /var/www/cgi-bin/gitweb.cgi/
لايت باد
تأكد من تحميل mod_cgi، وmod_alias، وmod_auth، وmod_setenv، ثم قم بتعيينها
GIT_PROJECT_ROOT بشكل مناسب وأعد توجيه جميع الطلبات إلى CGI:
الاسم المستعار.url += ( "/git" => "/usr/lib/git-core/git-http-backend")
$HTTP["url"] =~ "^/git" {
cgi.assis = ("" => "")
setenv.add-البيئة = (
"GIT_PROJECT_ROOT" => "/var/www/git",
"GIT_HTTP_EXPORT_ALL" => ""
)
}
لتمكين وصول القراءة المجهول ولكن الوصول للكتابة المصادق عليه:
$HTTP["querystring"] =~ "service=git-receive-pack" {
تضمين "git-auth.conf"
}
$HTTP["url"] =~ "^/git/.*/git-receive-pack$" {
تضمين "git-auth.conf"
}
حيث يبدو git-auth.conf كالتالي:
المصادقة تتطلب = (
"/" => (
"الطريقة" => "الأساسية"،
"المجال" => "الوصول إلى Git"،
"تتطلب" => "مستخدم صالح"
)
)
# ... وقم بإعداد auth.backend هنا
لطلب المصادقة لكل من القراءة والكتابة:
$HTTP["url"] =~ "^/git/private" {
تضمين "git-auth.conf"
}
البيئة
طائرة نفاثة http-الواجهة الخلفية يعتمد على متغيرات بيئة CGI التي يحددها خادم الويب المستدعي،
بما في ذلك:
· PATH_INFO (إذا تم تعيين GIT_PROJECT_ROOT، وإلا PATH_TRANSLATED)
· REMOTE_USER
· REMOTE_ADDR
· نوع المحتوى
· QUERY_STRING
· REQUEST_METHOD
قد يتم تمرير المتغير البيئي GIT_HTTP_EXPORT_ALL إلى بوابة http الخلفية لتجاوز
التحقق من وجود ملف "git-daemon-export-ok" في كل مستودع قبل السماح بتصديره
هذا المستودع.
متغير البيئة GIT_HTTP_MAX_REQUEST_BUFFER (أو تكوين http.maxRequestBuffer
متغير) لتغيير أكبر طلب تفاوض للمرجع الذي سيتعامل معه git
أثناء الجلب؛ لن ينجح أي جلب يتطلب مخزنًا مؤقتًا أكبر. وينبغي لهذه القيمة
لا تحتاج عادةً إلى التغيير، ولكنها قد تكون مفيدة إذا كنت تقوم بالجلب من أحد المستودعات
مع عدد كبير جدًا من المراجع. يمكن تحديد القيمة بوحدة (على سبيل المثال، 100M
مقابل 100 ميجابايت). الافتراضي هو 10 ميغا بايت.
تقوم عملية الواجهة الخلفية بتعيين GIT_COMMITTER_NAME على $REMOTE_USER وGIT_COMMITTER_EMAIL إلى
${REMOTE_USER}@http.${REMOTE_ADDR}، مع التأكد من أن أي عمليات إعادة تسجيل تم إنشاؤها بواسطة بوابة-استقبال-حزمة
تحتوي على بعض المعلومات التعريفية للمستخدم البعيد الذي أجرى عملية الدفع.
جميع متغيرات بيئة CGI متاحة لكل من الخطافات التي يتم استدعاؤها بواسطة ملف
بوابة-استقبال-حزمة.
GIT
جزء من طائرة نفاثة(1) جناح
استخدم git-http-backend عبر الإنترنت باستخدام خدمات onworks.net