end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

gitwebによるブラウザでのgitリポジトリ閲覧 (iis for win版)

gitwebによるブラウザでのgitリポジトリ閲覧 - end0tknr's kipple - web写経開発

以前の上記entryでは、oracle linux上のapache httpd でしたので、今回は iis for win。

step1 - gitweb.cgi の入手

windows環境に installしている git には、linux版と異なり、gitweb.cgi がありません。 source から buildするのも手間ですので、今回は oracle linux にある

$ tree /var/www/git/
/var/www/git/
|-- gitweb.cgi
`-- static
    |-- git-favicon.png
    |-- git-logo.png
    |-- gitweb.css
    `-- gitweb.js

を「c:/inetpub/wwwroot/gitweb/ 」へ コピーしました。

step2 - iis の ハンドラーマッピング追加

windows11のiisによるperl cgiの動作 - end0tknr's kipple - web写経開発 を参考に以下

step3 - c:/inetpub/wwwroot/gitweb/gitweb.conf 作成

$projectroot の設定は必須で、それ以外は後日

#### refer to https://git-scm.com/docs/gitweb.conf 

$projectroot = "c:/inetpub/wwwroot/git/git";

$feature{'snapshot'}{'default'} = [ 'zip' ];

#$javascript = "/html/git/static/gitweb.js";

#push(@stylesheets,"/html/git/static/custom.css");
#$stylesheet = "/html/git/static/gitweb.css";

#$home_link_str = "HOME";

#$site_header = "/home/end0tknr/local/html/git/header.html";
#$site_footer = "/home/end0tknr/local/html/git/footer.html";

iisが、この設定ファイルを読むようシステム環境変数に以下を設定

GITWEB_CONFIG = c:\inetpub\wwwroot\gitweb\gitweb.conf

step4 - gitweb.cgi の改造

gitweb.cgi は、元々 linux 用ですので、動作するよう少々、改造します。

# 83行目 - gitコマンドの場所
old) our $GIT = "/usr/bin/git";
new) our $GIT = "git";


# 3879行目 - win環境は getpwuid()がない為
return "";  ## ADD
my ($name, $passwd, $uid, $gid, $quota, $comment, $gcos, $dir, $shell) = getpwuid($st_uid);

# win環境は Fcntl::AUTOLOADに対応していない為
# 2010行目
return '----------';  ## ADD
if (S_ISGITLINK($mode)) {

# 2033行目
return "unknown";  ## ADD
if ($mode !~ m/^[0-7]+$/) {

# 2057行目
return "unknown";  ## ADD
if ($mode !~ m/^[0-7]+$/) {

# 4765行目
old) if (S_ISLNK(oct $t->{'mode'})) {
new) if (0) {