'\" t .\" Title: gitweb .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 2026-06-29 .\" Manual: دستورات عمومی کاربر .\" Source: Git 2.55.0 .\" Language: Persian .\" .TH "GITWEB" "1" "2026\-06\-29" "Git 2\&.55\&.0" "دستورات عمومی کاربر" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" gitweb \- رابط تحت وب گیت (فرانت‌اند تحت وب برای مخازن گیت) .SH "خلاصه دستور (SYNOPSIS)" .sp برای شروع کار با gitweb، دستور \fBgit-instaweb\fR(1) را درون یک مخزن گیت اجرا کنید\&. این کار وب‌سرور شما را پیکربندی کرده و راه‌اندازی می‌کند، و مرورگر وبی را باز می‌نماید که به gitweb اشاره دارد\&. .SH "توضیحات (DESCRIPTION)" .sp ابزار Gitweb یک رابط تحت وب برای مخازن گیت فراهم می‌کند\&. قابلیت‌های آن شامل موارد زیر است: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} مشاهده چندین مخزن گیت با یک ریشه مشترک\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} مرور تمام بازبینی‌های مخزن\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} مشاهده محتویات فایل‌ها در مخزن در هر بازبینی دلخواه\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} مشاهده سیاهه بازبینی شاخه‌ها، تاریخچه فایل‌ها و دایرکتوری‌ها، و دیدن اینکه چه چیزی، در چه زمانی و توسط چه کسی تغییر کرده است\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} مشاهده جزئیات انتساب/حاشیه‌نویسی (blame/annotation) هر فایل (در صورت فعال بودن)\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} تولید خوراک‌های RSS و Atom برای کامیت‌ها، برای هر شاخه\&. این خوراک‌ها در مرورگرهای وب امروزی به صورت خودکار قابل شناسایی هستند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} مشاهده تمام تغییرات اعمال‌شده در یک بازبینی، و گام برداشتن در بازبینی‌ها یکی پس از دیگری جهت بررسی تاریخچه مخزن\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} یافتن کامیت‌هایی که پیام کامیت آن‌ها با عبارت جستجوی ارائه‌شده مطابقت دارد\&. .RE .sp جهت مشاهده کد منبع gitweb که با استفاده از خود gitweb مرور می‌شود، به \m[blue]\fBhttps://repo\&.or\&.cz/w/git\&.git/tree/HEAD:/gitweb\fR\m[] مراجعه کنید\&. .SH "پیکربندی (CONFIGURATION)" .sp جنبه‌های مختلف رفتار gitweb را می‌توان از طریق فایل پیکربندی \fBgitweb_config\&.perl\fR یا \fB/etc/gitweb\&.conf\fR کنترل کرد\&. برای جزئیات به \fBgitweb.conf\fR(5) مراجعه کنید\&. .SS "مخازن (Repositories)" .sp ابزار Gitweb می‌تواند اطلاعات یک یا چند مخزن گیت را نمایش دهد\&. تمام این مخازن باید روی فایل‌سیستم محلی قرار داشته باشند و ریشه مخزن مشترکی داشته باشند؛ یعنی همگی زیر یک مخزن والد منفرد قرار گیرند (البته زیربخش «پیکربندی وب‌سرور با چند ریشه پروژه» در بخش «راه‌اندازی پیشرفته وب‌سرور» را نیز ببینید)\&. .sp .if n \{\ .RS 4 .\} .nf our $projectroot = \*(Aq/path/to/parent/directory\*(Aq; .fi .if n \{\ .RE .\} .sp .sp مقدار پیش‌فرض برای \fB$projectroot\fR برابر با \fB/pub/git\fR است\&. می‌توانید هنگام ساخت gitweb آن را از طریق متغیر پیکربندی ساخت \fBGITWEB_PROJECTROOT\fR تغییر دهید\&. .sp به طور پیش‌فرض تمام مخازن گیت واقع در \fB$projectroot\fR برای gitweb قابل مشاهده و در دسترس هستند\&. فهرست پروژه‌ها به طور پیش‌فرض با پیمایش دایرکتوری \fB$projectroot\fR برای یافتن مخازن گیت تولید می‌شود (به بیان دقیق‌تر برای پایگاه‌های داده اشیاء؛ gitweb نیازی به ناحیه کاری ندارد و برای نمایش مخازن «bare» مناسب‌تر است)\&. .sp نام مخزن در gitweb همان مسیر به \fB$GIT_DIR\fR آن (پایگاه داده اشیاء آن) به صورت نسبی نسبت به \fB$projectroot\fR است\&. بنابراین مخزن $repo را می‌توان در "$projectroot/$repo" پیدا کرد\&. .SS "قالب فایل فهرست پروژه‌ها (Projects list file format)" .sp به جای اینکه gitweb با پیمایش فایل‌سیستم از $projectroot مخازن را پیدا کند، می‌توانید با تنظیم متغیر \fB$projects_list\fR به نحوی که به یک فایل متنی ساده حاوی فهرستی از پروژه‌ها (همراه با برخی اطلاعات اضافی) اشاره کند، فهرستی از پیش تولیدشده از پروژه‌های قابل مشاهده را ارائه دهید\&. .sp این فایل از قالب زیر استفاده می‌کند: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} هر رکورد (برای پروژه / مخزن) در یک خط قرار می‌گیرد؛ شکستن خط در ادامه‌اش (گریز از خط جدید) پشتیبانی نمی‌شود\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} فاصله‌های خالی ابتدایی و انتهایی نادیده گرفته می‌شوند\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} فیلدها با فاصله‌های خالی از هم جدا می‌شوند؛ هر دنباله‌ای از فاصله‌های خالی می‌تواند به عنوان جداکننده فیلد عمل کند (قوانین مربوط به "\fBsplit\fR(" ", \fB$line\fR)" در پرل)\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} فیلدها از کدگذاری اصلاح‌شده URI استفاده می‌کنند که در RFC 3986، بخش ۲\&.۱ (کدگذاری درصدی) یا به عبارت دقیق‌تر «کدگذاری رشته پرسمان» (نگاه کنید به \m[blue]\fBhttps://en\&.wikipedia\&.org/wiki/Query_string#URL_encoding\fR\m[]) تعریف شده است؛ تفاوت در این است که SP (" ") می‌تواند به صورت "+" کدگذاری شود (و بنابراین خود "+" نیز باید با درصد کدگذاری گردد)\&. .sp نویسه‌های رزرو شده عبارتند از: "%" (برای کدگذاری)، "+" (می‌تواند برای کدگذاری فاصله خالی استفاده شود)، و تمام نویسه‌های فاصله خالی طبق تعریف پرل، شامل SP، TAB و LF (برای جداسازی فیلدها در یک رکورد)\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} فیلدهایی که در حال حاضر شناسایی می‌شوند عبارتند از: .PP .RS 4 مسیر به GIT_DIR مخزن، به صورت نسبی نسبت به \fB$projectroot\fR .RE .PP .RS 4 به عنوان مالک مخزن نمایش داده می‌شود، ترجیحاً نام کامل، یا ایمیل، یا هر دو .RE .RE .sp می‌توانید فایل نمایه فهرست پروژه‌ها را با استفاده از کنش project_index (پیوند \fITXT\fR در صفحه فهرست پروژه‌ها) مستقیماً از gitweb تولید کنید؛ همچنین بخش «تولید فهرست پروژه‌ها با استفاده از gitweb» در زیر را ببینید\&. .sp نمونه محتویات: .sp .if n \{\ .RS 4 .\} .nf foo\&.git Joe+R+Hacker+ foo/bar\&.git O+W+Ner+ .fi .if n \{\ .RE .\} .sp .sp به طور پیش‌فرض این فایل تنها مشخص می‌کند که کدام پروژه‌ها در صفحه فهرست پروژه‌ها \fBقابل مشاهده\fR هستند (توجه داشته باشید مواردی که به مخازن به درستی شناسایی‌شده گیت اشاره نکنند توسط gitweb نمایش داده نخواهند شد)\&. حتی اگر پروژه‌ای در صفحه فهرست پروژه‌ها قابل مشاهده نباشد، همچنان می‌توانید با ساخت دستی یک نشانی اینترنتی gitweb آن را مشاهده کنید\&. با تنظیم متغیر پیکربندی \fB$strict_export\fR (به \fBgitweb.conf\fR(5) مراجعه کنید) روی یک مقدار درستی (true)، می‌توانید اجازه دهید تنها مخازنی مشاهده شوند که در صفحه مرور کلی نمایش داده شده‌اند (یعنی فقط پروژه‌هایی که صریحاً در فایل فهرست پروژه‌ها ذکر شده‌اند در دسترس خواهند بود)\&. .SS "تولید فهرست پروژه‌ها با استفاده از gitweb (Generating projects list using gitweb)" .sp فرض می‌کنیم که GITWEB_CONFIG مقدار پیش‌فرض Makefile خود یعنی \fIgitweb_config\&.perl\fR را دارد\&. خطوط زیر را در فایل \fIgitweb_make_index\&.perl\fR قرار دهید: .sp .if n \{\ .RS 4 .\} .nf read_config_file("gitweb_config\&.perl"); $projects_list = $projectroot; .fi .if n \{\ .RE .\} .sp .sp سپس اسکریپت زیر را ایجاد کنید تا فهرست پروژه‌ها را در قالبی مناسب برای متغیر پیکربندی ساخت GITWEB_LIST (یا متغیر \fB$projects_list\fR در پیکربندی gitweb) دریافت نمایید: .sp .if n \{\ .RS 4 .\} .nf #!/bin/sh export GITWEB_CONFIG="gitweb_make_index\&.perl" export GATEWAY_INTERFACE="CGI/1\&.1" export HTTP_ACCEPT="*/*" export REQUEST_METHOD="GET" export QUERY_STRING="a=project_index" perl \-\- /var/www/cgi\-bin/gitweb\&.cgi .fi .if n \{\ .RE .\} .sp .sp این اسکریپت را اجرا کرده و خروجی آن را در یک فایل ذخیره کنید\&. سپس می‌توان از این فایل به عنوان فایل فهرست پروژه‌ها استفاده کرد، به این معنی که می‌توانید \fB$projects_list\fR را روی نام فایل آن تنظیم کنید\&. .SS "کنترل دسترسی به مخازن گیت (Controlling access to Git repositories)" .sp به طور پیش‌فرض تمام مخازن گیت واقع در \fB$projectroot\fR برای gitweb قابل مشاهده و در دسترس هستند\&. با این حال می‌توانید نحوه کنترل دسترسی به مخازن توسط gitweb را پیکربندی کنید\&. .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} همان‌طور که در بخش «قالب فایل فهرست پروژه‌ها» شرح داده شد، می‌توانید پروژه‌های \fBقابل مشاهده\fR را با گنجاندن انتخابی مخازن در فایل فهرست پروژه‌ها، و تنظیم متغیر پیکربندی \fB$projects_list\fR در gitweb به منظور اشاره به آن کنترل کنید\&. با تنظیم بودن \fB$strict_export\fR ، فایل فهرست پروژه‌ها می‌تواند برای کنترل اینکه کدام مخازن \fBدر دسترس\fR هستند نیز استفاده شود\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} می‌توانید gitweb را به گونه‌ای پیکربندی کنید که تنها مخازنی را فهرست و مجاز به مشاهده کند که صریحاً صادر شده‌اند؛ این کار از طریق متغیر \fB$export_ok\fR در فایل پیکربندی gitweb انجام می‌شود؛ به صفحه راهنمای \fBgitweb.conf\fR(5) مراجعه کنید\&. اگر مقدار این متغیر درستی ارزیابی شود، gitweb مخازن را تنها در صورتی نمایش می‌دهد که فایل نام‌گذاری‌شده توسط \fB$export_ok\fR در پایگاه داده اشیاء آن وجود داشته باشد (اگر دایرکتوری دارای فایل جادویی به نام \fB$export_ok\fR باشد)\&. .sp برای نمونه، دستور \fBgit-daemon\fR(1) به طور پیش‌فرض (مگر اینکه گزینه \fB\-\-export\-all\fR استفاده شود) تنها دریافت مخازنی را مجاز می‌داند که فایل \fIgit\-daemon\-export\-ok\fR را داشته باشند\&. افزودن .sp .if n \{\ .RS 4 .\} .nf our $export_ok = "git\-daemon\-export\-ok"; .fi .if n \{\ .RE .\} .sp باعث می‌شود gitweb فقط مخازنی را نمایش دهد و اجازه دسترسی به آن‌ها را بدهد که امکان واکشی از آن‌ها از طریق پروتکل \fBgit://\fR وجود داشته باشد\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} در نهایت، امکان تعیین یک زیرروال دلخواه در پرل وجود دارد که برای هر مخزن فراخوانی می‌شود تا مشخص گردد آیا امکان صدور آن وجود دارد یا خیر\&. این زیرروال یک مسیر مطلق به پروژه (مخزن) را به عنوان تنها پارامتر خود دریافت می‌کند (یعنی "$projectroot/$project")\&. .sp برای مثال، اگر از mod_perl برای اجرای اسکریپت استفاده می‌کنید و احراز هویت پروتکل سنتی HTTP (dumb HTTP) برای مخازن شما پیکربندی شده است، می‌توانید از قلاب زیر برای اعطای دسترسی تنها در صورت مجاز بودن کاربر به خواندن فایل‌ها استفاده کنید: .sp .if n \{\ .RS 4 .\} .nf $export_auth_hook = sub { use Apache2::SubRequest (); use Apache2::Const \-compile => qw(HTTP_OK); my $path = "$_[0]/HEAD"; my $r = Apache2::RequestUtil\->request; my $sub = $r\->lookup_file($path); return $sub\->filename eq $path && $sub\->status == Apache2::Const::HTTP_OK; }; .fi .if n \{\ .RE .\} .sp .RE .SS "پیکربندی gitweb به تفکیک مخزن (Per\-repository gitweb configuration)" .sp می‌توانید مخازن منفرد نمایش‌داده‌شده در gitweb را با ایجاد فایل در \fBGIT_DIR\fR مخزن گیت، یا با تنظیم برخی متغیرهای پیکربندی مخزن (در \fBGIT_DIR/config\fR، به \fBgit-config\fR(1) مراجعه کنید) پیکربندی نمایید\&. .sp می‌توانید از فایل‌های زیر در مخزن استفاده کنید: .PP README\&.html .RS 4 یک فایل html (قطعه HTML) که در صفحه خلاصه ("summary") پروژه در gitweb درون یک عنصر بلوکی \fI
\fR گنجانده می‌شود\&. می‌توانید از آن برای توضیحات طولانی‌تر یک پروژه، ارائه پیوندها (مثلاً به صفحه خانگی پروژه) و غیره استفاده کنید\&. این مورد تنها در صورتی شناسایی می‌شود که جلوگیری از XSS غیرفعال باشد (\fB$prevent_xss\fR نادرست باشد، به \fBgitweb.conf\fR(5) مراجعه کنید)؛ راهکاری برای گنجاندن امن README در زمان فعال بودن جلوگیری از XSS ممکن است در آینده تدوین شود\&. .RE .PP description (یا \fBgitweb\&.description\fR) .RS 4 توضیح تک‌خطی کوتاه (کوتاه‌شده به \fB$projects_list_description_width\fR در صفحه فهرست پروژه‌ها که به طور پیش‌فرض ۲۵ نویسه است؛ به \fBgitweb.conf\fR(5) مراجعه کنید) از یک پروژه (یک مخزن)\&. فایل متنی ساده؛ کدهای HTML گریز داده خواهند شد\&. به طور پیش‌فرض روی مقدار زیر تنظیم می‌شود: .sp .if n \{\ .RS 4 .\} .nf Unnamed repository; edit this file to name it for gitweb\&. .fi .if n \{\ .RE .\} .sp که در زمان ایجاد مخزن از قالب برداشته شده و معمولاً در \fB/usr/share/git\-core/templates/\fR نصب شده است\&. می‌توانید از متغیر پیکربندی مخزن \fBgitweb\&.description\fR استفاده کنید، اما فایل اولویت دارد\&. .RE .PP category (یا \fBgitweb\&.category\fR) .RS 4 دسته‌بندی تک‌خطی یک پروژه که برای گروه‌بندی پروژه‌ها در صورت فعال بودن \fB$projects_list_group_categories\fR به کار می‌رود\&. به طور پیش‌فرض (در صورت نبود فایل و متغیر پیکربندی)، پروژه‌های دسته‌بندی‌نشده در دسته \fB$project_list_default_category\fR قرار می‌گیرند\&. می‌توانید از متغیر پیکربندی مخزن \fBgitweb\&.category\fR استفاده کنید، اما فایل اولویت دارد\&. .sp متغیرهای پیکربندی \fB$projects_list_group_categories\fR و \fB$project_list_default_category\fR در \fBgitweb.conf\fR(5) شرح داده شده‌اند\&. .RE .PP cloneurl (یا چندمقداری \fBgitweb\&.url\fR) .RS 4 فایلی شامل نشانی‌های اینترنتی مخزن (مورد استفاده برای کلون و واکشی)، هر کدام در یک خط\&. در صفحه خلاصه پروژه نمایش داده می‌شود\&. می‌توانید از متغیر چندمقداری \fBgitweb\&.url\fR در پیکربندی مخزن برای این منظور استفاده کنید، اما فایل اولویت دارد\&. .sp این قابلیت نسخه پیشرفته‌تر / اختصاصی برای هر مخزن از متغیر پیکربندی سراسری و مبتنی بر پیشوند \fB@git_base_url_list\fR در gitweb است (به \fBgitweb.conf\fR(5) مراجعه کنید)\&. .RE .PP gitweb\&.owner .RS 4 می‌توانید از متغیر پیکربندی مخزن \fBgitweb\&.owner\fR برای تعیین مالک مخزن استفاده کنید\&. این مقدار در فهرست پروژه‌ها و صفحه خلاصه نمایش داده می‌شود\&. .sp اگر تنظیم نشده باشد، در صورتی که \fB$projects_list\fR تنظیم نشده باشد (هنگامی که gitweb دایرکتوری \fB$projectroot\fR را برای یافتن مخازن جستجو می‌کند) از مالک دایرکتوری در فایل‌سیستم استفاده می‌شود (از طریق فیلد GECOS، یعنی فیلد نام واقعی حاصل از \fBgetpwuid\fR(3))؛ و اگر \fB$projects_list\fR به فایلی حاوی فهرست مخازن اشاره کند، مقدار پیش‌فرض مالک پروژه همان مقدار موجود در این فایل برای مخزن مورد نظر خواهد بود\&. .RE .PP متغیرهای پیکربندی مختلف \fBgitweb\&.*\fR (در پیکربندی) .RS 4 توضیحات مربوط به درهم‌سازی (هش) \fB%feature\fR را برای دریافت فهرست تفصیلی و توضیحات مطالعه کنید\&. همچنین به بخش «پیکربندی قابلیت‌های gitweb» در \fBgitweb.conf\fR(5) مراجعه نمایید\&. .RE .SH "کنش‌ها و نشانی‌های اینترنتی (ACTIONS, AND URLS)" .sp ابزار Gitweb می‌تواند از نشانی‌های اینترنتی مبتنی بر path_info (مؤلفه‌ای) استفاده کند، یا تمام اطلاعات لازم را از طریق پارامترهای پرسمان (query) انتقال دهد\&. نشانی‌های اینترنتی معمول gitweb به پنج مؤلفه تقسیم می‌شوند: .sp .if n \{\ .RS 4 .\} .nf \&.\&.\&./gitweb\&.cgi///:/? .fi .if n \{\ .RE .\} .sp .PP repo .RS 4 مخزنی که کنش روی آن اجرا خواهد شد\&. .sp تمام کنش‌ها به جز کنش‌هایی که تمام پروژه‌های موجود را به هر شکلی فهرست می‌کنند، به این پارامتر نیاز دارند\&. .RE .PP action .RS 4 کنشی که اجرا خواهد شد\&. در صورت تنظیم نبودن repo، مقدار پیش‌فرض آن \fIprojects_list\fR و در غیر این صورت \fIsummary\fR است\&. .RE .PP revision .RS 4 بازبینی نمایش‌داده‌شده\&. مقدار پیش‌فرض HEAD است\&. .RE .PP path .RS 4 مسیری درون که کنش بر روی آن برای آن دسته از کنش‌هایی که به آن نیاز دارند، انجام می‌شود\&. .RE .PP arguments .RS 4 هر آرگومانی که رفتار کنش را کنترل می‌کند\&. .RE .sp برخی کنش‌ها نیازمند تعیین دو بازبینی، و گاهی حتی دو نام مسیر هستند یا این امکان را می‌دهند\&. در کلی‌ترین حالت، چنین نشانی‌های اینترنتی مبتنی بر path_info (مؤلفه‌ای) در gitweb به صورت زیر خواهند بود: .sp .if n \{\ .RS 4 .\} .nf \&.\&.\&./gitweb\&.cgi///:/\&.\&.:/? .fi .if n \{\ .RE .\} .sp .sp هر کنش به صورت یک زیرروال پیاده‌سازی شده و باید در درهم‌سازی (هش) %actions وجود داشته باشد\&. برخی کنش‌ها به طور پیش‌فرض غیرفعال هستند و باید از طریق سازوکار قابلیت‌ها (feature) فعال شوند\&. برای نمونه جهت فعال‌سازی نمای \fIblame\fR، خط زیر را به فایل پیکربندی gitweb اضافه کنید: .sp .if n \{\ .RS 4 .\} .nf $feature{\*(Aqblame\*(Aq}{\*(Aqdefault\*(Aq} = [1]; .fi .if n \{\ .RE .\} .sp .SS "کنش‌ها (Actions):" .sp کنش‌های استاندارد عبارتند از: .PP project_list .RS 4 مخازن گیت موجود را فهرست می‌کند\&. در صورتی که هیچ مخزنی در نشانی اینترنتی مشخص نشده باشد، این دستور پیش‌فرض است\&. .RE .PP summary .RS 4 خلاصه‌ای از مخزن داده‌شده را نمایش می‌دهد\&. اگر هیچ کنشی در نشانی مشخص نشده باشد و تنها مخزن مشخص شده باشد، این دستور پیش‌فرض است\&. .RE .PP heads, remotes .RS 4 تمام شاخه‌های محلی یا تمام شاخه‌های ردیابی از راه دور را در مخزن داده‌شده فهرست می‌کند\&. .sp مورد دوم به طور پیش‌فرض در دسترس نیست، مگر اینکه پیکربندی شده باشد\&. .RE .PP tags .RS 4 تمام برچسب‌ها (سبک و حاشیه‌نویسی‌شده) را در مخزن داده‌شده فهرست می‌کند\&. .RE .PP blob, tree .RS 4 فایل‌ها و دایرکتوری‌ها را در یک مسیر مشخص از مخزن و در بازبینی داده‌شده نمایش می‌دهد\&. اگر هیچ کنشی در نشانی مشخص نشده باشد و مسیر مشخص شده باشد، این دستور پیش‌فرض است\&. .RE .PP blob_plain .RS 4 داده‌های خام فایل را در مخزن داده‌شده در مسیر و بازبینی مشخص بازمی‌گرداند\&. پیوندهای مربوط به این کنش با برچسب \fIraw\fR مشخص می‌شوند\&. .RE .PP blobdiff .RS 4 تفاوت میان دو بازبینی از یک فایل یکسان را نمایش می‌دهد\&. .RE .PP blame, blame_incremental .RS 4 اطلاعات انتساب (یا حاشیه‌نویسی) یک فایل را نمایش می‌دهد\&. به صورت خط به خط بازبینی‌ای را که آن خط در آن آخرین بار تغییر کرده و کاربری که آن تغییر را کامیت کرده است نمایش می‌دهد\&. نسخه افزایشی (که در صورت پیکربندی و فعال بودن جاوااسکریپت به طور خودکار استفاده می‌شود)، از Ajax برای اضافه کردن تدریجی اطلاعات انتساب به محتویات فایل استفاده می‌کند\&. .sp این کنش به دلایل مربوط به کارایی به طور پیش‌فرض غیرفعال است\&. .RE .PP commit, commitdiff .RS 4 اطلاعات مربوط به یک کامیت خاص را در یک مخزن نمایش می‌دهد\&. نمای \fIcommit\fR اطلاعات کامیت را با جزئیات بیشتر نشان می‌دهد و کنش \fIcommitdiff\fR مجموعه تغییرات (changeset) کامیت مورد نظر را نمایش می‌دهد\&. .RE .PP patch .RS 4 کامیت را در قالب نامه متنی ساده که برای اعمال با \fBgit-am\fR(1) مناسب است، بازمی‌گرداند\&. .RE .PP tag .RS 4 برچسب حاشیه‌نویسی‌شده مشخص (شیء برچسب) را نمایش می‌دهد\&. .RE .PP log, shortlog .RS 4 اطلاعات سیاهه‌ها (پیام کامیت یا فقط موضوع کامیت) را برای یک شاخه مشخص (شروع از بازبینی داده‌شده) نمایش می‌دهد\&. .sp نمای \fIshortlog\fR فشرده‌تر است؛ در هر خط یک کامیت را نمایش می‌دهد\&. .RE .PP history .RS 4 تاریخچه فایل یا دایرکتوری را در مسیر مشخصی از مخزن، از بازبینی داده‌شده شروع می‌کند (پیش‌فرض آن HEAD یعنی شاخه پیش‌فرض است)\&. .sp این نما شبیه به نمای \fIshortlog\fR است\&. .RE .PP rss, atom .RS 4 خوراک RSS (یا Atom) تغییرات اعمال‌شده در مخزن را تولید می‌کند\&. .RE .SH "پیکربندی وب‌سرور (WEBSERVER CONFIGURATION)" .sp این بخش نحوه پیکربندی برخی از وب‌سرورهای متداول برای اجرای gitweb را شرح می‌دهد\&. در تمام مثال‌ها، مسیر \fB/path/to/gitweb\fR دایرکتوری‌ای است که gitweb نصب‌شده در آن اجرا شده و شامل \fBgitweb_config\&.perl\fR است\&. .sp اگر وب‌سروری را برای gitweb پیکربندی کرده‌اید که در اینجا فهرست نشده است، لطفاً دستورالعمل‌های آن را ارسال کنید تا در نسخه‌های بعدی گنجانده شود\&. .SS "آپاچی به عنوان CGI (Apache as CGI)" .sp آپاچی باید به گونه‌ای پیکربندی شود که از اسکریپت‌های CGI در دایرکتوری محل نصب gitweb پشتیبانی کند\&. فرض کنیم این دایرکتوری \fB/var/www/cgi\-bin\fR باشد\&. .sp .if n \{\ .RS 4 .\} .nf ScriptAlias /cgi\-bin/ "/var/www/cgi\-bin/" Options Indexes FollowSymlinks ExecCGI AllowOverride None Order allow,deny Allow from all .fi .if n \{\ .RE .\} .sp .sp با این پیکربندی، مسیر کامل برای مرور مخازن به صورت زیر خواهد بود: .sp .if n \{\ .RS 4 .\} .nf http://server/cgi\-bin/gitweb\&.cgi .fi .if n \{\ .RE .\} .SS "آپاچی با mod_perl، از طریق ModPerl::Registry (Apache with mod_perl, via ModPerl::Registry)" .sp می‌توانید از mod_perl همراه با gitweb استفاده کنید\&. برای فعال‌سازی این پشتیبانی باید بسته Apache::Registry (برای mod_perl 1\&.x) یا ModPerl::Registry (برای mod_perl 2\&.x) را نصب کنید\&. .sp با فرض اینکه gitweb در \fB/var/www/perl\fR نصب شده باشد، پیکربندی آپاچی زیر (برای mod_perl 2\&.x) مناسب است\&. .sp .if n \{\ .RS 4 .\} .nf Alias /perl "/var/www/perl" SetHandler perl\-script PerlResponseHandler ModPerl::Registry PerlOptions +ParseHeaders Options Indexes FollowSymlinks +ExecCGI AllowOverride None Order allow,deny Allow from all .fi .if n \{\ .RE .\} .sp .sp با این پیکربندی، مسیر کامل برای مرور مخازن به صورت زیر خواهد بود: .sp .if n \{\ .RS 4 .\} .nf http://server/perl/gitweb\&.cgi .fi .if n \{\ .RE .\} .SS "آپاچی با FastCGI (Apache with FastCGI)" .sp ابزار Gitweb با آپاچی و FastCGI کار می‌کند\&. ابتدا باید فایل gitweb\&.cgi را به gitweb\&.fcgi تغییر نام داده، کپی کرده یا به صورت پیوند نمادین درآورید\&. فرض کنیم gitweb در دایرکتوری \fB/usr/share/gitweb\fR نصب شده است\&. پیکربندی آپاچی زیر مناسب است (تست‌نشده!) .sp .if n \{\ .RS 4 .\} .nf FastCgiServer /usr/share/gitweb/gitweb\&.cgi ScriptAlias /gitweb /usr/share/gitweb/gitweb\&.cgi Alias /gitweb/static /usr/share/gitweb/static SetHandler default\-handler .fi .if n \{\ .RE .\} .sp .sp با این پیکربندی، مسیر کامل برای مرور مخازن به صورت زیر خواهد بود: .sp .if n \{\ .RS 4 .\} .nf http://server/gitweb .fi .if n \{\ .RE .\} .SH "راه‌اندازی پیشرفته وب‌سرور (ADVANCED WEB SERVER SETUP)" .sp تمام این مثال‌ها از بازنویسی درخواست‌ها استفاده می‌کنند و نیازمند ماژول \fBmod_rewrite\fR (یا معادل آن؛ مثال‌های زیر برای آپاچی نوشته شده‌اند) هستند\&. .SS "نشانی اینترنتی یکسان برای gitweb و برای واکشی مخزن (Single URL for gitweb and for fetching)" .sp اگر می‌خواهید یک نشانی اینترنتی یکسان برای هم gitweb و هم مخازن \fBhttp://\fR خود داشته باشید، می‌توانید آپاچی را به این صورت پیکربندی کنید: .sp .if n \{\ .RS 4 .\} .nf ServerName git\&.example\&.org DocumentRoot /pub/git SetEnv GITWEB_CONFIG /etc/gitweb\&.conf # turning on mod rewrite RewriteEngine on # make the front page an internal rewrite to the gitweb script RewriteRule ^/$ /cgi\-bin/gitweb\&.cgi # make access for "dumb clients" work RewriteRule ^/(\&.*\e\&.git/(?!/?(HEAD|info|objects|refs))\&.*)?$ \e /cgi\-bin/gitweb\&.cgi%{REQUEST_URI} [L,PT] .fi .if n \{\ .RE .\} .sp .sp پیکربندی بالا انتظار دارد مخازن عمومی شما زیر دایرکتوری \fB/pub/git\fR قرار داشته باشند و آن‌ها را به صورت \fBhttp://git\&.domain\&.org/dir\-under\-pub\-git\fR ارائه می‌دهد، هم به عنوان یک نشانی اینترنتی قابل کلون در گیت و هم به عنوان رابط قابل مرور در gitweb\&. اگر سپس \fBgit-daemon\fR(1) خود را با \fB\-\-base\-path=/pub/git\fR \fB\-\-export\-all\fR راه‌اندازی کنید، حتی می‌توانید از نشانی \fBgit://\fR با دقیقاً همان مسیر استفاده کنید\&. .sp تنظیم متغیر محیطی \fBGITWEB_CONFIG\fR به gitweb می‌گوید که از فایل نام‌برده (یعنی در این مثال \fB/etc/gitweb\&.conf\fR) به عنوان پیکربندی برای gitweb استفاده کند\&. در مثال بالا واقعاً به آن نیازی ندارید؛ این مورد تنها زمانی الزامی است که فایل پیکربندی شما در مکانی متفاوت از فایل‌های توکار (هنگام کامپایل gitweb) یعنی \fIgitweb_config\&.perl\fR یا \fB/etc/gitweb\&.conf\fR قرار داشته باشد\&. برای جزئیات، به ویژه اطلاعات مربوط به قوانین اولویت‌بندی، به \fBgitweb.conf\fR(5) مراجعه کنید\&. .sp اگر از قوانین بازنویسی موجود در این مثال استفاده می‌کنید، ممکن است به چیزی شبیه به موارد زیر نیز در فایل پیکربندی gitweb خود (\fB/etc/gitweb\&.conf\fR مطابق این مثال) نیاز داشته باشید: .sp .if n \{\ .RS 4 .\} .nf @stylesheets = ("/some/absolute/path/gitweb\&.css"); $my_uri = "/"; $home_link = "/"; $per_request_config = 1; .fi .if n \{\ .RE .\} .sp .sp هرچند امروزه gitweb باید در صورت نیاز تگ پایه HTML (برای تنظیم URI پایه پیوندهای نسبی) را به درستی ایجاد کند، بنابراین باید به طور خودکار کار کند\&. .SS "پیکربندی وب‌سرور با چند ریشه پروژه (Webserver configuration with multiple projects\*(Aq root)" .sp اگر می‌خواهید از gitweb با چندین ریشه پروژه استفاده کنید، می‌توانید میزبان مجازی آپاچی و فایل‌های پیکربندی gitweb خود را به روش زیر ویرایش نمایید\&. .sp پیکربندی میزبان مجازی (در فایل پیکربندی آپاچی) باید به شکل زیر باشد: .sp .if n \{\ .RS 4 .\} .nf ServerName git\&.example\&.org DocumentRoot /pub/git SetEnv GITWEB_CONFIG /etc/gitweb\&.conf # turning on mod rewrite RewriteEngine on # make the front page an internal rewrite to the gitweb script RewriteRule ^/$ /cgi\-bin/gitweb\&.cgi [QSA,L,PT] # look for a public_git directory in unix users\*(Aq home # http://git\&.example\&.org/~/ RewriteRule ^/\e~([^\e/]+)(/|/gitweb\&.cgi)?$ /cgi\-bin/gitweb\&.cgi \e [QSA,E=GITWEB_PROJECTROOT:/home/$1/public_git/,L,PT] # http://git\&.example\&.org/+/ #RewriteRule ^/\e+([^\e/]+)(/|/gitweb\&.cgi)?$ /cgi\-bin/gitweb\&.cgi \e [QSA,E=GITWEB_PROJECTROOT:/home/$1/public_git/,L,PT] # http://git\&.example\&.org/user// #RewriteRule ^/user/([^\e/]+)/(gitweb\&.cgi)?$ /cgi\-bin/gitweb\&.cgi \e [QSA,E=GITWEB_PROJECTROOT:/home/$1/public_git/,L,PT] # defined list of project roots RewriteRule ^/scm(/|/gitweb\&.cgi)?$ /cgi\-bin/gitweb\&.cgi \e [QSA,E=GITWEB_PROJECTROOT:/pub/scm/,L,PT] RewriteRule ^/var(/|/gitweb\&.cgi)?$ /cgi\-bin/gitweb\&.cgi \e [QSA,E=GITWEB_PROJECTROOT:/var/git/,L,PT] # make access for "dumb clients" work RewriteRule ^/(\&.*\e\&.git/(?!/?(HEAD|info|objects|refs))\&.*)?$ \e /cgi\-bin/gitweb\&.cgi%{REQUEST_URI} [L,PT] .fi .if n \{\ .RE .\} .sp .sp در اینجا ریشه واقعی پروژه از طریق متغیر محیطی \fBGITWEB_PROJECT_ROOT\fR از وب‌سرور به gitweb ارسال می‌شود، بنابراین باید خط زیر را در فایل پیکربندی gitweb (در مثال بالا \fB/etc/gitweb\&.conf\fR) قرار دهید: .sp .if n \{\ .RS 4 .\} .nf $projectroot = $ENV{\*(AqGITWEB_PROJECTROOT\*(Aq} || "/pub/git"; .fi .if n \{\ .RE .\} .sp .sp \fBتوجه داشته باشید\fR که این مورد نیازمند آن است که برای هر درخواست تنظیم شود، بنابراین یا باید \fB$per_request_config\fR نادرست باشد، یا کد فوق باید در کدی قرار گیرد که توسط \fB$per_request_config\fR ارجاع داده می‌شود؛ .sp این پیکربندی‌ها دو قابلیت را فعال می‌کنند\&. نخست اینکه هر کاربر یونیکس (\fI\fR) در سرور می‌تواند مخازن گیت موجود در \fB~/public_git/\fR را از طریق gitweb با نشانی زیر مرور کند: .sp .if n \{\ .RS 4 .\} .nf http://git\&.example\&.org/~/ .fi .if n \{\ .RE .\} .sp اگر این ویژگی را روی سرور خود نمی‌خواهید، کافی است قانون دوم بازنویسی را حذف کنید\&. .sp اگر پیش‌تر از \(oqmod_userdir` در میزبان مجازی خود استفاده می‌کنید یا نمی‌خواهید از \*(Aq~\(cq به عنوان اولین نویسه استفاده کنید، کافی است قانون بازنویسی دوم را کامنت یا حذف کرده و بسته به آنچه می‌خواهید یکی از خطوط پس از آن را از حالت کامنت خارج نمایید\&. .sp دوم اینکه، مخازن موجود در \fB/pub/scm/\fR و \fB/var/git/\fR از طریق \fBhttp://git\&.example\&.org/scm/\fR و \fBhttp://git\&.example\&.org/var/\fR در دسترس خواهند بود\&. با افزودن قوانین بازنویسی شبیه به قوانین سوم و چهارم، می‌توانید هر تعداد ریشه پروژه را که می‌خواهید اضافه کنید\&. .SS "استفاده از PATH_INFO (PATH_INFO usage)" .sp اگر استفاده از PATH_INFO را در gitweb با قرار دادن .sp .if n \{\ .RS 4 .\} .nf $feature{\*(Aqpathinfo\*(Aq}{\*(Aqdefault\*(Aq} = [1]; .fi .if n \{\ .RE .\} .sp در فایل پیکربندی gitweb خود فعال کنید، می‌توان سرور را به گونه‌ای راه‌اندازی کرد که نشانی‌های اینترنتی را به شکل زیر دریافت و تولید کند: .sp .if n \{\ .RS 4 .\} .nf http://git\&.example\&.com/project\&.git/shortlog/sometag .fi .if n \{\ .RE .\} .sp یعنی بدون بخش \fIgitweb\&.cgi\fR، با استفاده از پیکربندی‌ای مانند موارد زیر\&. این پیکربندی فرض می‌کند که \fB/var/www/gitweb\fR همان ریشه سند (DocumentRoot) وب‌سرور شما است، و شامل اسکریپت gitweb\&.cgi و فایل‌های استاتیک مکمل (برگه استایل، فاوآیکون، جاوااسکریپت) است: .sp .if n \{\ .RS 4 .\} .nf ServerAlias git\&.example\&.com DocumentRoot /var/www/gitweb Options ExecCGI AddHandler cgi\-script cgi DirectoryIndex gitweb\&.cgi RewriteEngine On RewriteCond %{REQUEST_FILENAME} !\-f RewriteCond %{REQUEST_FILENAME} !\-d RewriteRule ^\&.* /gitweb\&.cgi/$0 [L,PT] .fi .if n \{\ .RE .\} .sp .sp قانون بازنویسی تضمین می‌کند که فایل‌های استاتیک موجود به درستی ارائه شوند، در حالی که هر نشانی دیگری به عنوان پارامتر PATH_INFO به gitweb ارسال خواهد شد\&. .sp \fBتوجه\fR کنید که در این حالت شما به تنظیمات خاصی برای \fB@stylesheets\fR، \fB$my_uri\fR و \fB$home_link\fR نیاز ندارید، اما دسترسی «کلاینت‌های سنتی (dumb clients)» به دایرکتوری‌های git\&. پروژه خود را از دست می‌دهید (که در بخش «نشانی اینترنتی یکسان برای gitweb و برای واکشی مخزن» شرح داده شد)\&. یک راهکار احتمالی برای این مورد به شرح زیر است: در دایرکتوری ریشه پروژه خود (مثلاً \fB/pub/git\fR) نام پروژه‌ها را \fBبدون\fR پسوند git\&. قرار دهید (مثلاً \fB/pub/git/project\fR به جای \fB/pub/git/project\&.git\fR) و آپاچی را به این صورت پیکربندی کنید: .sp .if n \{\ .RS 4 .\} .nf ServerAlias git\&.example\&.com DocumentRoot /var/www/gitweb AliasMatch ^(/\&.*?)(\e\&.git)(/\&.*)?$ /pub/git$1$3 Options ExecCGI AddHandler cgi\-script cgi DirectoryIndex gitweb\&.cgi RewriteEngine On RewriteCond %{REQUEST_FILENAME} !\-f RewriteCond %{REQUEST_FILENAME} !\-d RewriteRule ^\&.* /gitweb\&.cgi/$0 [L,PT] .fi .if n \{\ .RE .\} .sp .sp دستور اضافی AliasMatch شرایطی را فراهم می‌کند که .sp .if n \{\ .RS 4 .\} .nf http://git\&.example\&.com/project\&.git .fi .if n \{\ .RE .\} .sp دسترسی خام به دایرکتوری گیت پروژه را فراهم نماید (تا امکان کلون کردن پروژه وجود داشته باشد)، در حالی که .sp .if n \{\ .RS 4 .\} .nf http://git\&.example\&.com/project .fi .if n \{\ .RE .\} .sp دسترسی کاربرپسند به gitweb را فراهم خواهد ساخت\&. .sp این راهکار کاملاً و ۱۰۰٪ بی‌نقص نیست، به این معنا که اگر پروژه‌ای دارای یک مرجع (شاخه، برچسب) باشد که با \fBgit/\fR آغاز شود، مسیرهایی مانند .sp .if n \{\ .RS 4 .\} .nf http://git\&.example\&.com/project/command/abranch\&.\&.git/abranch .fi .if n \{\ .RE .\} .sp با خطای ۴۰۴ مواجه خواهند شد\&. .SH "اشکالات (BUGS)" .sp لطفاً هرگونه باگ یا درخواست ویژگی را به \m[blue]\fBgit@vger\&.kernel\&.org\fR\m[]\&\s-2\u[1]\d\s+2 گزارش دهید و عبارت "gitweb" را در موضوع ایمیل قرار دهید\&. .SH "همچنین ببینید (SEE ALSO)" .sp \fBgitweb.conf\fR(5), \fBgit-instaweb\fR(1) .sp \fBgitweb/README\fR, \fBgitweb/INSTALL\fR .SH "گیت (GIT)" .sp بخشی از مجموعه \fBgit\fR(1) .SH "یادداشت‌ها (NOTES)" .IP " 1." 4 git@vger.kernel.org .RS 4 \%mailto:git@vger.kernel.org .RE