git-remote-ext - اتصال و
پل ارتباطی
انتقال
هوشمند
داده به
دستور
خارجی
git remote add <nick> "ext::<command>[ <arguments>...]"
این ابزار
کمکی راه
دور از <command>
مشخصشده
برای اتصال
به یک سرور
راه دور گیت
استفاده
میکند.
دادههای
نوشتهشده
در ورودی
استاندارد
(stdin) دستور <command>
مشخصشده
به عنوان
دادههای
ارسالی به
یک سرور git://،
git-upload-pack، git-receive-pack یا git-upload-archive
(بسته به
موقعیت) در
نظر گرفته
میشوند، و
دادههای
خواندهشده
از خروجی
استاندارد
(stdout) دستور <command>
به عنوان
دادههای
دریافتی از
همان سرویس
فرض
میشوند.
دستور و
آرگومانهای
آن با فاصله
غیراسکیپشده
از یکدیگر
جدا
میشوند.
توالیهای
زیر دارای
معانی
ویژهای
هستند:
'% '
فاصله
تحتاللفظی
در دستور یا
آرگومان.
%%
علامت
درصد
تحتاللفظی.
%s
با نام
سرویسی که
گیت
میخواهد
فراخوانی
کند (receive-pack، upload-pack،
یا upload-archive)
جایگزین
میشود.
%S
با نام
کامل
سرویسی که
گیت
میخواهد
فراخوانی
کند (git-receive-pack، git-upload-pack،
یا git-upload-archive)
جایگزین
میشود.
%G (باید
نخستین
نویسهها
در یک
آرگومان
باشد)
این
آرگومان به
<command> ارسال
نخواهد شد.
در عوض،
باعث
میشود که
برنامه
کمکی با
ارسال
درخواستهای
سرویس git:// به
سمت راه دور
شروع به کار
کند، به
طوری که
فیلد service روی
مقدار
مناسب و
فیلد repository روی
بقیه
آرگومان
تنظیم
میشود.
حالت
پیشفرض،
عدم ارسال
چنین
درخواستی
است.
این گزینه
زمانی مفید
است که طرف
راه دور، یک
سرور git:// باشد
که از طریق
یک تونل
قابل
دسترسی
است.
%V (باید
نخستین
نویسهها
در آرگومان
باشد)
این
آرگومان به
<command> ارسال
نخواهد شد.
در عوض،
فیلد vhost را در
درخواست
سرویس git:// (روی
بقیه
آرگومان)
تنظیم
میکند.
حالت
پیشفرض،
عدم ارسال vhost
در چنین
درخواستی
است (در صورت
ارسال
درخواست).
GIT_TRANSLOOP_DEBUG
در صورت
تنظیم،
اطلاعات
اشکالزدایی
درباره
عملیات
گوناگون
خواندن/نوشتن
را چاپ
میکند.
GIT_EXT_SERVICE
روی نام
کامل
سرویسی که
ابزار کمکی
باید
فراخوانی
کند (مانند
git-upload-pack و غیره)
تنظیم
میشود.
GIT_EXT_SERVICE_NOPREFIX
روی نام
کوتاه
سرویسی که
ابزار کمکی
باید
فراخوانی
کند (مانند upload-pack
و غیره)
تنظیم
میشود.
این ابزار
کمکی راه
دور به صورت
نامحسوس
توسط گیت
استفاده
میشود،
هنگامی که
از
دستوراتی
مانند "git fetch
<URL>"، "git clone <URL>"،
"git push <URL>" یا "git remote add
<nick> <URL>"
استفاده
میکنید که
در آنها <URL>
با ext:: آغاز
میشود.
مثالها:
"ext::ssh -i /home/foo/.ssh/somekey user@host.example %S
foo/repo"
مشابه
host.example:foo/repo است،
اما از /home/foo/.ssh/somekey
به عنوان
جفتکلید و
از user به
عنوان
کاربر در
سمت راه دور
استفاده
میکند. این
کار نیاز به
ویرایش .ssh/config را
برطرف
میسازد.
"ext::socat -t3600 - ABSTRACT-CONNECT:/git-server
%G/somerepo"
نشاندهنده
مخزنی با
مسیر /somerepo است
که از طریق
پروتکل git در
نشانی فضای
نام
انتزاعی /git-server
قابل
دسترسی
است.
"ext::git-server-alias foo %G/repo"
نشاندهنده
مخزنی با
مسیر /repo است
که با
استفاده از
برنامه
کمکی "git-server-alias foo"
مورد
دسترسی
قرار
میگیرد.
مسیر مخزن و
نوع
درخواست در
خط فرمان
ارسال
نمیشوند،
بلکه طبق
معمولِ
پروتکل git://
بخشی از
جریان
پروتکل
هستند.
"ext::git-server-alias foo %G/repo %Vfoo"
نشاندهنده
مخزنی با
مسیر /repo است
که با
استفاده از
برنامه
کمکی "git-server-alias foo"
مورد
دسترسی
قرار
میگیرد.
نام میزبان
سرور راه
دور که در
جریان
پروتکل
ارسال
میشود "foo"
خواهد بود
(این کار
امکان
اشتراکگذاری
یک آدرس سطح
پیوند را
میان چندین
سرور مجازی
گیت فراهم
میکند).
"ext::git-server-alias foo %G/repo% with% spaces
%Vfoo"
نشاندهنده
مخزنی با
مسیر /repo with spaces
است که با
استفاده از
برنامه
کمکی "git-server-alias foo"
مورد
دسترسی
قرار
میگیرد.
نام میزبان
سرور راه
دور که در
جریان
پروتکل
ارسال
میشود "foo"
خواهد بود
(این کار
امکان
اشتراکگذاری
یک آدرس سطح
پیوند را
میان چندین
سرور مجازی
گیت فراهم
میکند).
"ext::git-ssl foo.example /bar"
نشاندهنده
مخزنی است
که با
استفاده از
برنامه
کمکی "git-ssl foo.example /bar"
مورد
دسترسی
قرار
میگیرد.
نوع
درخواست
میتواند
توسط ابزار
کمکی و با
استفاده از
متغیرهای
محیطی
تعیین شود
(به بخش بالا
نگاه کنید).