| GIT-DAEMON(1) | Git Manual | GIT-DAEMON(1) |
نام (NAME)
git-daemon - یک کارساز بسیار ساده برای مخازن گیت
خلاصه دستور (SYNOPSIS)
git daemon [--verbose] [--syslog] [--export-all]
[--timeout=<n>] [--init-timeout=<n>] [--max-connections=<n>]
[--strict-paths] [--base-path=<path>] [--base-path-relaxed]
[--user-path | --user-path=<path>]
[--interpolated-path=<pathtemplate>]
[--reuseaddr] [--detach] [--pid-file=<file>]
[--enable=<service>] [--disable=<service>]
[--allow-override=<service>] [--forbid-override=<service>]
[--access-hook=<path>] [--[no-]informative-errors]
[--inetd |
[--listen=<host-or-ipaddr>] [--port=<n>]
[--user=<user> [--group=<group>]]]
[--log-destination=(stderr|syslog|none)]
[<directory>...]
توضیحات (DESCRIPTION)
یک دیمون (کارساز پسزمینه) فوقالعاده ساده TCP برای گیت که به طور معمول روی درگاه «DEFAULT_GIT_PORT» یعنی ۹۴۱۸ گوش فرا میدهد. این برنامه منتظر برقراری اتصال برای درخواست یک سرویس میماند، و در صورت فعال بودن آن سرویس، به آن پاسخ میدهد.
این برنامه بررسی میکند که دایرکتوری دارای فایل ویژه "git-daemon-export-ok" باشد، و از صادر کردن هر دایرکتوری گیت که صریحاً به این روش برای صدور علامتگذاری نشده باشد خودداری میکند (مگر اینکه پارامتر --export-all مشخص شده باشد). اگر مسیرهایی از دایرکتوریها را به عنوان آرگومانهای git daemon ارسال کنید، خدمات محدود به مخازن درون همان دایرکتوریها خواهد شد.
به طور پیشفرض، فقط سرویس upload-pack فعال است که به کلاینتهای git fetch-pack و git ls-remote (که از سوی git fetch، git pull و git clone فراخوانی میشوند) سرویسدهی میکند.
این حالت برای بهروزرسانیهای فقطخواندنی، یعنی دریافت (pull) از مخازن گیت، ایدهآل است.
همچنین سرویس upload-archive برای سرویسدهی به git archive وجود دارد.
گزینهها (OPTIONS)
--strict-paths
--base-path=<path>
--base-path-relaxed
--interpolated-path=<pathtemplate>
--export-all
--inetd
--listen=<host-or-ipaddr>
--port=<n>
--init-timeout=<n>
--timeout=<n>
--max-connections=<n>
--syslog
--log-destination=<destination>
stderr
syslog
none
مقصد پیشفرض در صورتی که --inetd یا --detach مشخص شده باشد syslog است، در غیر این صورت stderr میباشد.
--user-path, --user-path=<path>
--verbose
--reuseaddr
--detach
--pid-file=<file>
--user=<user>, --group=<group>
دادن این گزینهها در صورت استفاده با --inetd یک خطا محسوب میشود؛ در صورت نیاز، پیش از راهاندازی git daemon از امکانات دیمون inet برای دستیابی به همین هدف استفاده کنید.
مانند بسیاری از برنامههایی که شناسه کاربر را تعویض میکنند، این دیمون هنگام اجرای برنامههای گیت مانند upload-pack و receive-pack متغیرهای محیطی نظیر HOME را بازنشانی نمیکند. هنگام استفاده از این گزینه، ممکن است بخواهید پیش از شروع دیمون HOME را طوری تنظیم و export کنید که به دایرکتوری خانگی <user> اشاره کند، و اطمینان حاصل کنید که هر فایل پیکربندی گیت در آن دایرکتوری توسط <user> قابل خواندن باشد.
--enable=<service>, --disable=<service>
--allow-override=<service>, --forbid-override=<service>
--informative-errors, --no-informative-errors
--access-hook=<path>
دستور خارجی میتواند به صورت اختیاری یک سطر در خروجی استاندارد خود بنویسد تا هنگام رد سرویس، به عنوان پیام خطا برای درخواستکننده ارسال شود.
<directory>
سرویسها (SERVICES)
این سرویسها میتوانند با استفاده از گزینههای خط فرمان این دستور به صورت سراسری فعال/غیرفعال شوند. اگر کنترل دقیقتری مورد نیاز باشد (برای مثال، اجازه اجرای git archive تنها در چند مخزن منتخب که دیمون ارائه میدهد)، میتوان از فایل پیکربندی اختصاصی هر مخزن برای فعال یا غیرفعال کردن آنها استفاده کرد.
upload-pack
upload-archive
receive-pack
مثالها (EXAMPLES)
ما موارد زیر را در /etc/services فرض میکنیم:
$ grep 9418 /etc/services git 9418/tcp # Git Version Control System
git daemon به عنوان کارساز inetd
git stream tcp nowait nobody /usr/bin/git
git daemon --inetd --verbose --export-all
/pub/foo /pub/bar
git daemon به عنوان کارساز inetd برای میزبانهای مجازی
git stream tcp nowait nobody /usr/bin/git
git daemon --inetd --verbose --export-all
--interpolated-path=/pub/%H%D
/pub/www.example.org/software
/pub/www.example.com/software
/software
در این مثال، دایرکتوری سطح ریشه /pub شامل یک زیردایرکتوری برای هر نام میزبان مجازی پشتیبانیشده خواهد بود. علاوه بر این، هر دو میزبان مخازن را صرفاً به عنوان git://www.example.com/software/repo.git اعلان میکنند. برای کلاینتهای قبل از ۱.۴.۰، یک پیوند نمادین از /software به مخزن پیشفرض مناسب نیز میتواند ایجاد شود.
git daemon به عنوان یک دیمون معمولی برای میزبانهای مجازی
git daemon --verbose --export-all
--interpolated-path=/pub/%IP/%D
/pub/192.168.1.200/software
/pub/10.10.220.23/software
در این مثال، دایرکتوری سطح ریشه /pub شامل یک زیردایرکتوری برای هر آدرس IP میزبان مجازی پشتیبانیشده خواهد بود. با این حال، با فرض اینکه نامهای میزبان متناظر با این آدرسهای IP باشند، مخازن همچنان از طریق نام میزبان نیز قابل دسترسی هستند.
فعال/غیرفعال کردن انتخابی سرویسها به ازای هر مخزن
[daemon]
uploadpack = false
uploadarch = true
محیط (ENVIRONMENT)
دستور git daemon در صورت در دسترس بودن آدرس IP، متغیر REMOTE_ADDR را روی آدرس IP کلاینتی که به آن متصل شده است تنظیم میکند. متغیر REMOTE_ADDR در محیط قلابهایی که هنگام اجرای سرویسها فراخوانی میشوند در دسترس خواهد بود.
GIT
بخشی از مجموعه git(1)
| 2026-06-29 | Git 2.55.0 |