این دستور gitweb است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان ما مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
gitweb - رابط وب Git (طراحی وب به مخازن Git)
خلاصه
برای شروع کار با gitweb، اجرا کنید git-instaweb(1) از یک مخزن Git. این می شود
وب سرور خود را پیکربندی و راه اندازی کنید و مرورگر وب را با اشاره به gitweb اجرا کنید.
شرح
Gitweb یک رابط وب برای مخازن Git فراهم می کند. ویژگی های آن عبارتند از:
· مشاهده چندین مخزن Git با ریشه مشترک.
· مرور هر ویرایشی از مخزن.
· مشاهده محتویات فایل های موجود در مخزن در هر ویرایش.
· مشاهده گزارش تجدید نظر شاخه ها، تاریخچه فایل ها و دایرکتوری ها، ببینید چه چیزی بود
چه زمانی، توسط چه کسی تغییر کرد.
· مشاهده جزئیات سرزنش / حاشیه نویسی هر فایل (در صورت فعال بودن).
· ایجاد فیدهای RSS و Atom از commit ها، برای هر شاخه. فیدها هستند
قابل کشف خودکار در مرورگرهای وب مدرن
· مشاهده همه چیزهایی که در یک بازبینی تغییر کرده است، و گام به گام از طریق تجدیدنظرها یک به یک
زمان، مشاهده تاریخچه مخزن.
یافتن commit هایی که پیام ها را با عبارت جستجو شده مطابقت می دهد.
دیدن http://git.kernel.org/?p=git/git.git;a=tree;f=gitweb or
http://repo.or.cz/w/git.git/tree/HEAD:/gitweb/ برای کد منبع gitweb، با استفاده از مرور
خود گیت وب
پیکربندی
جنبه های مختلف رفتار gitweb را می توان از طریق فایل پیکربندی کنترل کرد
gitweb_config.perl or /etc/gitweb.conf. مشاهده gitweb.conf(5) برای جزئیات.
مخازن
Gitweb می تواند اطلاعات یک یا چند مخزن Git را نشان دهد. این مخازن باید
همه روی سیستم فایل محلی باشند و باید ریشه مخزن مشترک را به اشتراک بگذارند، یعنی همه تحت a باشند
مخزن تک والد (اما به بخش «تنظیم وب سرور پیشرفته»، «وب سرور
پیکربندی با زیر بخش ریشه چندین پروژه).
$projectroot = '/path/to/parent/directory';
مقدار پیش فرض برای $projectroot است /pub/git. شما می توانید آن را در حین ساخت gitweb تغییر دهید
از طریق متغیر پیکربندی ساخت GITWEB_PROJECTROOT.
به طور پیش فرض تمام مخازن Git تحت $projectroot قابل مشاهده و در دسترس برای gitweb هستند.
لیست پروژه ها به طور پیش فرض با اسکن پوشه $projectroot برای ایجاد می شود
مخازن Git (برای دقیق تر بودن پایگاه داده های شی، gitweb به a علاقه ای ندارد
منطقه کاری، و برای نشان دادن مخازن "لخت" مناسب است).
نام مخزن در gitweb مسیری است به $GIT_DIR (پایگاه داده شی آن)
نسبت به $projectroot. بنابراین مخزن $repo را می توان در این آدرس یافت
"$projectroot/$repo".
پروژه ها فهرست پرونده قالب
به جای داشتن gitweb با اسکن فایل سیستم از ابتدا مخازن را پیدا کنید
$projectroot، میتوانید با تنظیم، فهرستی از پیش تولید شده از پروژههای قابل مشاهده ارائه دهید
$projects_list برای اشاره به یک فایل متنی ساده با لیستی از پروژه ها (با مقداری اضافی
اطلاعات)
این فایل از فرمت زیر استفاده می کند:
· یک رکورد (برای پروژه / مخزن) در هر خط. ادامه خط را پشتیبانی نمی کند
(خط جدید فرار می کند).
· فضای خالی پیشرو و انتهایی نادیده گرفته می شود.
· فیلدهای جدا شده با فضای خالی. هر اجرای فضای خالی را می توان به عنوان جداکننده میدان استفاده کرد
(قوانین برای "split(" "، $line)" پرل).
· فیلدها از رمزگذاری URI اصلاح شده استفاده می کنند که در RFC 3986، بخش 2.1 (درصد رمزگذاری) تعریف شده است.
یا بهتر است بگوییم "رمزگذاری رشته پرس و جو" (نگاه کنید به
http://en.wikipedia.org/wiki/Query_string#URL_encoding، تفاوت در این است که SP
(" ") را می توان به صورت "+" رمزگذاری کرد (و بنابراین "+" نیز باید با درصد رمزگذاری شود).
کاراکترهای رزرو شده عبارتند از: "%" (برای رمزگذاری استفاده می شود)، "+" (می توان از آن برای رمزگذاری SPACE استفاده کرد)،
تمام کاراکترهای فضای خالی همانطور که در Perl تعریف شده اند، از جمله SP، TAB و LF، (استفاده می شود
فیلدهای جداگانه در یک رکورد).
فیلدهای شناخته شده در حال حاضر عبارتند از:
مسیر به مخزن GIT_DIR، نسبت به $projectroot
به عنوان مالک مخزن، ترجیحاً نام کامل، یا ایمیل یا هر دو نمایش داده می شود
شما می توانید فایل فهرست پروژه ها را با استفاده از عمل project_index (the TXT پیوند
در صفحه لیست پروژه ها) مستقیماً از gitweb؛ همچنین نگاه کنید به "تولید لیست پروژه ها با استفاده از
gitweb" بخش زیر.
مطالب نمونه:
foo.git Joe+R+Hacker+joe@example.com>
foo/bar.git O+W+Ner+owner@example.org>
به طور پیش فرض این فایل فقط پروژه هایی را کنترل می کند قابل رویت در صفحه فهرست پروژه ها (توجه داشته باشید
که ورودی هایی که به مخازن Git به درستی شناسایی شده اشاره نمی کنند، نمایش داده نمی شوند
توسط gitweb). حتی اگر پروژه ای در صفحه لیست پروژه ها قابل مشاهده نیست، می توانید آن را مشاهده کنید
با این حال، با دست ساخت یک URL gitweb. با تنظیم پیکربندی $strict_export
متغیر (نگاه کنید به gitweb.conf(5)) به مقدار واقعی شما می توانید فقط اجازه مشاهده مخازن را بدهید
همچنین در صفحه نمای کلی نشان داده شده است (یعنی فقط پروژه هایی که به صراحت در لیست پروژه ها فهرست شده اند
فایل قابل دسترسی خواهد بود).
مولد پروژه ها فهرست با استفاده از gitweb
ما فرض می کنیم که GITWEB_CONFIG مقدار Makefile پیش فرض خود را دارد، یعنی gitweb_config.perl.
موارد زیر را در آن قرار دهید gitweb_make_index.perl فایل:
read_config_file("gitweb_config.perl");
$projects_list = $projectroot;
سپس اسکریپت زیر را ایجاد کنید تا لیست پروژه را با فرمت مناسب دریافت کنید
متغیر پیکربندی ساخت GITWEB_LIST (یا متغیر $projects_list در پیکربندی gitweb):
#!/ بن / شل
صادر کردن GITWEB_CONFIG="gitweb_make_index.perl"
صادرات GATEWAY_INTERFACE="CGI/1.1"
صادرات HTTP_ACCEPT="*/*"
صادرات REQUEST_METHOD="GET"
صادر کردن QUERY_STRING="a=project_index"
perl -- /var/www/cgi-bin/gitweb.cgi
این اسکریپت را اجرا کنید و خروجی آن را در یک فایل ذخیره کنید. این فایل سپس می تواند به عنوان پروژه استفاده شود
فایل list، به این معنی که می توانید $projects_list را به نام فایل آن تنظیم کنید.
کنترل دسترسی به رفتن مخازن
به طور پیش فرض تمام مخازن Git تحت $projectroot قابل مشاهده و در دسترس برای gitweb هستند.
با این حال میتوانید نحوه کنترل gitweb دسترسی به مخازن را پیکربندی کنید.
· همانطور که در بخش "فرمت فایل لیست پروژه ها" توضیح داده شده است، می توانید پروژه ها را کنترل کنید
هستند قابل رویت با گنجاندن انتخابی مخازن در فایل لیست پروژه ها و تنظیم
متغیر پیکربندی gitweb $projects_list برای اشاره به آن. با مجموعه $strict_export،
فایل لیست پروژه ها را می توان برای کنترل مخازن استفاده کرد در دسترس نیز هست.
· شما می توانید gitweb را فقط در لیست پیکربندی کنید و اجازه مشاهده صریحاً صادر شده را بدهید
مخازن، از طریق متغیر $export_ok در فایل پیکربندی gitweb. دیدن gitweb.conf(5)
صفحه مدیریت اگر درست ارزیابی شود، gitweb تنها در صورتی مخازن را نشان می دهد که نام این فایل توسط
$export_ok در پایگاه داده شی وجود دارد (اگر دایرکتوری دارای فایل جادویی با نام باشد
$export_ok).
مثلا git-daemon(1) به طور پیش فرض (مگر اینکه از گزینه --export-all استفاده شود) اجازه می دهد
کشیدن فقط برای آن مخازنی که دارند git-daemon-export-ok فایل. اضافه كردن
$export_ok = "git-daemon-export-ok";
باعث می شود gitweb نمایش داده شود و فقط به آن مخازنی که می توان از آنها واکشی کرد، اجازه دسترسی را می دهد
از طریق پروتکل git://
· در نهایت می توان یک زیربرنامه دلخواه perl را مشخص کرد که فراخوانی شود
برای هر مخزن برای تعیین اینکه آیا می توان آن را صادر کرد یا خیر. زیربرنامه یک عدد را دریافت می کند
مسیر مطلق به پروژه (مخزن) به عنوان تنها پارامتر آن (یعنی
"$projectroot/$project").
به عنوان مثال، اگر از mod_perl برای اجرای اسکریپت استفاده می کنید و پروتکل HTTP گنگ دارید
احراز هویت برای مخازن شما پیکربندی شده است، می توانید از هوک زیر استفاده کنید
فقط در صورتی که کاربر مجاز به خواندن فایل ها باشد اجازه دسترسی را بدهید:
$export_auth_hook = زیر {
از Apache2::SubRequest ();
استفاده از Apache2::Const -compile => qw(HTTP_OK);
my $path = "$_[0]/HEAD";
my $r = Apache2::RequestUtil->request;
my $sub = $r->lookup_file($path);
بازگشت $sub-> filename eq $path
&& $sub->status == Apache2::Const::HTTP_OK;
};
هر مخزن gitweb پیکر بندی
شما می توانید مخازن جداگانه نشان داده شده در gitweb را با ایجاد فایل در آن پیکربندی کنید GIT_DIR
از مخزن Git، یا با تنظیم برخی از متغیرهای پیکربندی مخزن (در GIT_DIR/پیکربندی، نگاه کنید به
گیت(1).
می توانید از فایل های زیر در مخزن استفاده کنید:
README.html
یک فایل html (بخش HTML) که در صفحه "خلاصه" پروژه gitweb گنجانده شده است
داخل عنصر بلوک می توانید از آن برای شرح طولانی تر یک پروژه استفاده کنید
پیوندها را ارائه دهید (مثلاً به صفحه اصلی پروژه) و غیره. این فقط در صورت XSS تشخیص داده می شود
پیشگیری خاموش است ($prevent_xss نادرست است، ببینید gitweb.conf(5))؛ راهی برای گنجاندن الف
زمانی که پیشگیری XSS روشن است، با خیال راحت بخوانید، ممکن است در آینده کار شود.
توضیحات (یا gitweb.description)
کوتاه (کوتاه شده به $projects_list_description_width در صفحه فهرست پروژه ها، که
به طور پیش فرض 25 کاراکتر است. دیدن gitweb.conf(5)) شرح تک خطی یک پروژه
(از یک مخزن). فایل متنی ساده؛ HTML فرار خواهد شد. به طور پیش فرض روی
مخزن بی نام؛ این فایل را ویرایش کنید تا آن را برای gitweb نامگذاری کنید.
از قالب در حین ایجاد مخزن، که معمولاً در آن نصب می شود
/usr/share/git-core/templates/. می توانید از پیکربندی مخزن gitweb.description استفاده کنید
متغیر، اما فایل اولویت دارد.
دسته (یا gitweb.category)
دسته بندی خط یک پروژه، برای گروه بندی پروژه ها اگر
$projects_list_group_categories فعال است. به طور پیش فرض (فایل و پیکربندی
متغیر وجود ندارد)، پروژه های دسته بندی نشده در $project_list_default_category قرار می گیرند.
دسته بندی. می توانید از متغیر پیکربندی repo gitweb.category استفاده کنید، اما از فایل
اولویت دارد.
متغیرهای پیکربندی $projects_list_group_categories و
$project_list_default_category در شرح داده شده است gitweb.conf(5)
cloneurl (یا gitweb.url چند ارزشی)
فایل با URL مخزن (برای شبیه سازی و واکشی استفاده می شود)، یک در هر خط. نمایش داده شده در
صفحه خلاصه پروژه می توانید از پیکربندی مخزن gitweb.url چند ارزشی استفاده کنید
متغیر برای آن، اما فایل اولویت دارد.
این بهبود در هر مخزن / نسخه از git_base_url_list مبتنی بر پیشوند جهانی است
متغیر پیکربندی gitweb (نگاه کنید به gitweb.conf(5).
gitweb.owner
می توانید از متغیر پیکربندی مخزن gitweb.owner برای تنظیم مخزن استفاده کنید
مالک در لیست پروژه و صفحه خلاصه نمایش داده می شود.
اگر تنظیم نشده باشد، از مالک فهرست فایل سیستم استفاده می شود (از طریق فیلد GECOS، یعنی نام واقعی
زمینه از getpwuid(3)) اگر $projects_list تنظیم نشده باشد (gitweb $projectroot را اسکن می کند
مخازن)؛ اگر $projects_list به فایل با لیست مخازن اشاره می کند، پس
مالک پروژه مقدار پیش فرض را از این فایل برای مخزن داده شده تعیین می کند.
متغیرهای پیکربندی مختلف gitweb.* (در پیکربندی)
توضیحات %feature hash را برای لیست دقیق و توضیحات بخوانید. همچنین ببینید
بخش "پیکربندی ویژگی های gitweb" در gitweb.conf(5)
اقدامات، و آدرس های اینترنتی
Gitweb می تواند از URL های مبتنی بر path_info (کامپوننت) استفاده کند، یا می تواند تمام اطلاعات لازم را ارسال کند
از طریق پارامترهای پرس و جو URL های معمولی gitweb به پنج جزء تقسیم می شوند:
.../gitweb.cgi/ / / :/ ?
مخزن
مخزن عمل در آن انجام خواهد شد.
همه اقدامات به جز اقداماتی که همه پروژههای موجود را فهرست میکنند، به هر شکل،
نیاز به این پارامتر
اقدام
اقدامی که اجرا خواهد شد. پیش فرض به لیست_پروژه ها اگر مخزن تنظیم نشده باشد، و به
خلاصه در غیر این صورت.
تجدید نظر
بازبینی نشان داده شده است. پیشفرض HEAD است.
مسیر
مسیر درون که عمل در آن انجام می شود، برای آن اقدامات
که به آن نیاز دارند.
استدلال
هر استدلالی که رفتار عمل را کنترل می کند.
برخی از اقدامات مستلزم یا اجازه تعیین دو ویرایش و گاهی اوقات حتی دو نام مسیر را دارند.
در اکثر شکلهای کلی، URL gitweb مبتنی بر path_info (کامپوننت) به شکل زیر است:
.../gitweb.cgi/ / / :/ .. :/ ?
هر عمل به عنوان یک برنامه فرعی اجرا می شود و باید در %actions hash وجود داشته باشد. مقداری
کنشها بهطور پیشفرض غیرفعال هستند و باید از طریق مکانیسم ویژگی روشن شوند. مثلا
برای فعال کردن سرزنش مشاهده موارد زیر را به فایل پیکربندی gitweb اضافه کنید:
$feature{'blame'}{'default'} = [1];
عملیات:
اقدامات استاندارد عبارتند از:
پروژه_لیست
مخازن Git موجود را فهرست می کند. اگر مخزن نباشد این دستور پیش فرض است
در URL مشخص شده است.
خلاصه
خلاصه ای از مخزن داده شده را نمایش می دهد. اگر هیچ اقدامی انجام نشود این دستور پیش فرض است
در URL مشخص شده است و فقط مخزن مشخص شده است.
هد، ریموت
تمام شاخه های محلی یا همه شاخه های ردیابی از راه دور را در مخزن داده شده فهرست می کند.
مورد دوم به طور پیش فرض در دسترس نیست، مگر اینکه پیکربندی شده باشد.
برچسب ها
تمام برچسب ها (سبک و حاشیه نویسی شده) را در مخزن داده شده فهرست کنید.
لکه، درخت
فایلها و دایرکتوریها را در یک مسیر مخزن مشخص، در بازبینی داده شده نشان میدهد. این هست
دستور پیش فرض در صورتی که هیچ اقدامی در URL مشخص نشده باشد و مسیر داده شود.
blob_plain
داده های خام را برای فایل در مخزن داده شده، در مسیر و ویرایش داده شده برمی گرداند.
پیوندهای این عمل علامت گذاری شده است خام.
blobdiff
تفاوت بین دو ویرایش یک فایل را نشان می دهد.
سرزنش، سرزنش_افزاینده
اطلاعات سرزنش (که حاشیه نویسی نیز نامیده می شود) را برای یک فایل نشان می دهد. بر اساس هر خط
این ویرایش آخرین بار در آن خط تغییر کرده است و کاربری که متعهد شده است را نشان می دهد
تغییر. نسخه افزایشی (که در صورت پیکربندی به صورت خودکار استفاده می شود
جاوا اسکریپت فعال است) از Ajax برای افزودن تدریجی اطلاعات سرزنش به محتویات استفاده می کند.
فایل داده شده
این عمل بهطور پیشفرض به دلایل عملکرد غیرفعال است.
متعهد شدن، متعهد شدن
اطلاعات مربوط به یک commit خاص را در یک مخزن نشان می دهد. در مرتکب شدن نمایش نشان می دهد
اطلاعات در مورد commit با جزئیات بیشتر، متعهد اقدام نشان می دهد تغییرات برای
تعهد داده شده
وصله
commit را در قالب پست متنی ساده، مناسب برای اعمال با git-am(1).
برچسب
نمایش برچسب مشروح خاص (شیء برچسب).
ورود به سیستم، لاگ کوتاه
اطلاعات گزارش (پیام commit یا فقط commit موضوع) را برای یک شاخه مشخص نشان می دهد
(شروع از تجدید نظر داده شده).
La کوتاه نمای فشرده تر است. یک commit را در هر خط نشان می دهد.
تاریخ
تاریخچه فایل یا دایرکتوری را در یک مسیر مخزن مشخص، با شروع از داده شده، نشان می دهد
تجدید نظر (به طور پیش فرض به HEAD، یعنی شاخه پیش فرض).
این دیدگاه مشابه است کوتاه چشم انداز.
rss، اتم
یک فید RSS (یا Atom) از تغییرات در مخزن ایجاد می کند.
وب سرور پیکربندی
این بخش نحوه پیکربندی برخی از وب سرورهای رایج برای اجرای gitweb را توضیح می دهد. در تمام موارد،
/path/to/gitweb در مثالها دایرکتوری است که gitweb را در آن نصب کردهاید و حاوی
gitweb_config.perl.
اگر وب سروری را پیکربندی کرده اید که در اینجا برای gitweb فهرست نشده است، لطفاً آن را ارسال کنید
دستورالعمل ها تا بتوان آنها را در نسخه های بعدی گنجاند.
آپاچی as CGI
آپاچی باید برای پشتیبانی از اسکریپت های CGI در دایرکتوری که gitweb در آن قرار دارد پیکربندی شود
نصب شده است. فرض کنیم که هست /var/www/cgi-bin دایرکتوری.
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
گزینه ها فهرست ها FollowSymlinks ExecCGI
مجاز نیست
سفارش اجازه ، انکار
اجازه از همه
با این پیکربندی، مسیر کامل برای مرور مخازن به صورت زیر خواهد بود:
http://server/cgi-bin/gitweb.cgi
آپاچی با mod_perl، از طريق ModPerl::رجیستری
می توانید از mod_perl با gitweb استفاده کنید. شما باید Apache::Registry (برای mod_perl 1.x) یا نصب کنید
ModPerl::Registry (برای mod_perl 2.x) برای فعال کردن این پشتیبانی.
با فرض اینکه gitweb نصب شده است /var/www/perl، پیکربندی آپاچی زیر
(برای mod_perl 2.x) مناسب است.
نام مستعار /perl "/var/www/perl"
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
گزینهها فهرستها FollowSymlinks + ExecCGI
مجاز نیست
سفارش اجازه ، انکار
اجازه از همه
با این پیکربندی، مسیر کامل برای مرور مخازن به صورت زیر خواهد بود:
http://server/perl/gitweb.cgi
آپاچی با FastCGI
Gitweb با Apache و FastCGI کار می کند. ابتدا باید gitweb.cgi را تغییر نام دهید، کپی یا پیوند کنید
به gitweb.fcgi. بیایید فرض کنیم که gitweb در آن نصب شده است /usr/share/gitweb فهرست راهنما.
پیکربندی آپاچی زیر مناسب است (تست نشده!)
FastCgiServer /usr/share/gitweb/gitweb.cgi
ScriptAlias /gitweb /usr/share/gitweb/gitweb.cgi
نام مستعار /gitweb/static /usr/share/gitweb/static
<دایرکتوری /usr/share/gitweb/static>
کنترل کننده پیش فرض SetHandler
با این پیکربندی، مسیر کامل برای مرور مخازن به صورت زیر خواهد بود:
http://server/gitweb
ADVANCED WEB سرور برپایی
همه آن مثالها از بازنویسی درخواست استفاده میکنند و به mod_rewrite (یا معادل؛ مثالها) نیاز دارند.
زیر برای آپاچی نوشته شده است).
تنها URL برای gitweb و برای واکشی
اگر می خواهید یک URL برای مخازن gitweb و http:// خود داشته باشید، می توانید
آپاچی را به این صورت پیکربندی کنید:
نام سرور git.example.org
DocumentRoot /pub/git
SetEnv GITWEB_CONFIG /etc/gitweb.conf
# روشن کردن بازنویسی مد
RewriteEngine در تاریخ
# صفحه اول را یک بازنویسی داخلی در اسکریپت gitweb کنید
RewriteRule ^/$ /cgi-bin/gitweb.cgi
# دسترسی را برای "مشتریان گنگ" کار کنید
RewriteRule ^/(.*\.git/(?!/?(HEAD|اطلاعات|اشیاء|refs)).*)?$
/cgi-bin/gitweb.cgi%{REQUEST_URI} [L,PT]
پیکربندی فوق انتظار دارد که مخازن عمومی شما تحت آن قرار گیرند /pub/git خواهد شد و
به آنها خدمت کنید http://git.domain.org/dir-under-pub-git، هم به عنوان URL Git قابل شبیه سازی و هم به عنوان
رابط gitweb قابل مرور اگر پس از آن خود را شروع کنید git-daemon(1) با
--base-path=/pub/git --export-all سپس می توانید از URL git:// دقیقاً با
همان مسیر
تنظیم متغیر محیطی GITWEB_CONFIG به gitweb می گوید که از فایل نامگذاری شده استفاده کند
(یعنی در این مثال /etc/gitweb.conf) به عنوان پیکربندی برای gitweb. واقعا اینطور نیست
در مثال بالا به آن نیاز دارید. فقط در صورتی لازم است که فایل پیکربندی شما متفاوت باشد
مکان غیر داخلی (در حین کامپایل گیت وب) gitweb_config.perl or /etc/gitweb.confاست. دیدن
gitweb.conf(5) برای جزئیات، به ویژه اطلاعات در مورد قوانین تقدم.
اگر از قوانین بازنویسی از مثال شما استفاده کنید قدرت همچنین نیاز به چیزی شبیه به
فایل پیکربندی gitweb خود را دنبال کنید (/etc/gitweb.conf مثال زیر):
@stylesheets = ("/some/absolute/path/gitweb.css");
$my_uri = "/";
$home_link = "/";
$per_request_config = 1;
اگرچه امروزه gitweb باید در صورت نیاز تگ پایه HTML ایجاد کند (برای تنظیم URI پایه برای
پیوندهای نسبی)، بنابراین باید به طور خودکار کار کند.
وب سرور پیکر بندی با چندگانه پروژه ها' ریشه
اگر می خواهید از gitweb با چندین ریشه پروژه استفاده کنید، می توانید میزبان مجازی آپاچی خود را ویرایش کنید
و فایل های پیکربندی gitweb را به روش زیر انجام دهید.
پیکربندی میزبان مجازی (در فایل پیکربندی آپاچی) باید به شکل زیر باشد:
نام سرور git.example.org
DocumentRoot /pub/git
SetEnv GITWEB_CONFIG /etc/gitweb.conf
# روشن کردن بازنویسی مد
RewriteEngine در تاریخ
# صفحه اول را یک بازنویسی داخلی در اسکریپت gitweb کنید
RewriteRule ^/$ /cgi-bin/gitweb.cgi [QSA,L,PT]
# به دنبال پوشه public_git در خانه کاربران یونیکس بگردید
# http://git.example.org/~ /
RewriteRule ^/\~([^\/]+)(/|/gitweb.cgi)؟$ /cgi-bin/gitweb.cgi
[QSA,E=GITWEB_PROJECTROOT:/ خانه /$1/public_git/,L,PT]
# http://git.example.org/+ /
#RewriteRule ^/\+([^\/]+)(/|/gitweb.cgi)؟$ /cgi-bin/gitweb.cgi
[QSA,E=GITWEB_PROJECTROOT:/ خانه /$1/public_git/,L,PT]
# http://git.example.org/user//
#RewriteRule ^/user/([^\/]+)/(gitweb.cgi)؟$ /cgi-bin/gitweb.cgi
[QSA,E=GITWEB_PROJECTROOT:/ خانه /$1/public_git/,L,PT]
# لیست تعریف شده از ریشه های پروژه
RewriteRule ^/scm(/|/gitweb.cgi)؟$ /cgi-bin/gitweb.cgi
[QSA,E=GITWEB_PROJECTROOT:/pub/scm/,L,PT]
RewriteRule ^/ var(/|/gitweb.cgi)؟$ /cgi-bin/gitweb.cgi
[QSA,E=GITWEB_PROJECTROOT:/var/git/,L,PT]
# دسترسی را برای "مشتریان گنگ" کار کنید
RewriteRule ^/(.*\.git/(?!/?(HEAD|اطلاعات|اشیاء|refs)).*)?$
/cgi-bin/gitweb.cgi%{REQUEST_URI} [L,PT]
در اینجا ریشه واقعی پروژه از طریق متغیر محیطی GITWEB_PROJECT_ROOT به gitweb ارسال می شود.
از یک وب سرور، بنابراین باید خط زیر را در فایل پیکربندی gitweb قرار دهید
(/etc/gitweb.conf در مثال بالا):
$projectroot = $ENV{'GITWEB_PROJECTROOT'} || "/pub/git"؛
توجه داشته باشید: که باید برای هر درخواست تنظیم شود، بنابراین $per_request_config باید باشد
false، یا موارد فوق باید در کدی که توسط $per_request_config ارجاع شده است قرار داده شود.
این تنظیمات دو چیز را امکان پذیر می کند. ابتدا هر کاربر یونیکس ( ) از سرور خواهد شد
بتوانید از طریق مخازن gitweb Git موجود در آن بگردید ~/public_git/ با
آدرس زیر:
http://git.example.org/~ /
اگر این ویژگی را روی سرور خود نمیخواهید، فقط قانون بازنویسی دوم را حذف کنید.
اگر قبلاً از 'mod_userdir' در هاست مجازی خود استفاده می کنید یا نمی خواهید از '~' به عنوان استفاده کنید.
کاراکتر اول، فقط کامنت بگذارید یا قانون بازنویسی دوم را حذف کنید و یکی از آنها را لغو نظر کنید
مطابق آنچه می خواهید دنبال کنید
دوم، مخازن موجود در /pub/scm/ و /var/git/ از طریق قابل دسترسی خواهد بود
http://git.example.org/scm/ و http://git.example.org/var/. شما می توانید به تعداد پروژه اضافه کنید
با اضافه کردن قوانین بازنویسی مانند سوم و چهارم، ریشه ها را همانطور که می خواهید.
PATH_INFO استفاده
اگر استفاده از PATH_INFO را در gitweb با قرار دادن فعال کنید
$feature{'pathinfo'}{'default'} = [1];
در فایل پیکربندی gitweb خود، این امکان وجود دارد که سرور خود را به گونه ای تنظیم کنید که آن را انجام دهد
URL ها را در فرم مصرف و تولید می کند
http://git.example.com/project.git/shortlog/sometag
یعنی بدون gitweb.cgi بخش، با استفاده از پیکربندی مانند زیر. این
پیکربندی این را فرض می کند /var/www/gitweb DocumentRoot سرور وب شما است، شامل
اسکریپت gitweb.cgi و فایلهای ثابت مکمل (سبک، فاویکون، جاوا اسکریپت):
ServerAlias git.example.com
DocumentRoot /var/www/gitweb
گزینه های ExecCGI
AddHandler cgi-script cgi
DirectoryIndex gitweb.cgi
RewriteEngine در
کنید RewriteCond٪ {REQUEST_FILENAME}! -f
کنید RewriteCond٪ {REQUEST_FILENAME}! -d
RewriteRule ^.* /gitweb.cgi/$0 [L,PT]
قانون بازنویسی تضمین می کند که فایل های استاتیک موجود به درستی ارائه می شوند، در حالی که
هر URL دیگری به عنوان پارامتر PATH_INFO به gitweb ارسال می شود.
اطلاع که در این صورت نیازی به تنظیمات خاصی برای @stylesheets، $my_uri و
$home_link، اما دسترسی «مشتری خنگ» به پروژه خود را از دست میدهید. git dirs (شرح داده شده در
بخش "نشانی اینترنتی واحد برای gitweb و برای واکشی"). یک راه حل ممکن برای دومی است
موارد زیر: در ریشه پروژه شما (به عنوان مثال /pub/git) پروژه ها را نامگذاری کنید بدون a
پسوند .git (به عنوان مثال /pub/git/project بجای /pub/git/project.git) و پیکربندی کنید
آپاچی به صورت زیر
ServerAlias git.example.com
DocumentRoot /var/www/gitweb
AliasMatch ^(/.*؟)(\.git)(/.*)؟$ /pub/git$1$3
گزینه های ExecCGI
AddHandler cgi-script cgi
DirectoryIndex gitweb.cgi
RewriteEngine در
کنید RewriteCond٪ {REQUEST_FILENAME}! -f
کنید RewriteCond٪ {REQUEST_FILENAME}! -d
RewriteRule ^.* /gitweb.cgi/$0 [L,PT]
AliasMatch اضافی آن را به گونه ای می سازد
http://git.example.com/project.git
دسترسی خام به Git dir پروژه (به طوری که پروژه می تواند شبیه سازی شود)، در حالی که
http://git.example.com/project
دسترسی انسان دوستانه به gitweb را فراهم می کند.
این راه حل 100% ضد گلوله نیست، به این معنا که اگر پروژه ای دارای ref نامی باشد
(شاخه، برچسب) شروع با git/، سپس مسیرهایی مانند
http://git.example.com/project/command/abranch..git/abranch
با خطای 404 از کار خواهد افتاد.
از gitweb به صورت آنلاین با استفاده از خدمات onworks.net استفاده کنید