这是 gitweb 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
gitweb - Git Web 界面(Git 存储库的 Web 前端)
概要
要开始使用 gitweb,请运行 git-instaweb(1) 来自 Git 存储库。 这个会
配置并启动您的 Web 服务器,并运行指向 gitweb 的 Web 浏览器。
商品描述
Gitweb 为 Git 存储库提供了一个 Web 界面。 其特点包括:
· 使用公共根查看多个 Git 存储库。
· 浏览存储库的每个修订版。
· 在任何版本中查看存储库中文件的内容。
· 查看分支的修订日志、文件和目录的历史记录,查看发生了什么
何时,由谁改变。
· 查看任何文件的责备/注释详细信息(如果启用)。
· 为任何分支生成提交的 RSS 和 Atom 提要。 饲料是
可在现代 Web 浏览器中自动发现。
· 查看修订版中更改的所有内容,并逐步执行修订版
时间,查看存储库的历史记录。
· 查找与给定搜索词匹配的提交消息的提交。
参见 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 行为的各个方面
gitweb_config.perl or /etc/gitweb.conf。 请参阅 配置文件(5) 详情。
库
Gitweb 可以显示来自一个或多个 Git 存储库的信息。 这些存储库必须
全部在本地文件系统上,并且必须共享公共存储库根目录,即全部在一个
单父存储库(但另请参阅“高级 Web 服务器设置”部分,“Web 服务器
具有多个项目根的配置”小节)。
我们的 $projectroot = '/path/to/parent/directory';
$projectroot 的默认值是 / 发布 / git. 您可以在构建 gitweb 期间更改它
通过 GITWEB_PROJECTROOT 构建配置变量。
默认情况下,$projectroot 下的所有 Git 存储库都可见并可用于 gitweb。
默认情况下通过扫描 $projectroot 目录生成项目列表
Git 存储库(对于对象数据库更准确;gitweb 对
工作区,最适合显示“裸”存储库)。
gitweb 中存储库的名称是其 $GIT_DIR(其对象数据库)的路径
相对于 $projectroot。 因此,可以在以下位置找到存储库 $repo
“$projectroot/$repo”。
项目 名单 文件 格式
而不是让 gitweb 通过扫描文件系统来查找存储库
$projectroot,你可以通过设置提供一个预先生成的可见项目列表
$projects_list 指向一个带有项目列表的纯文本文件(带有一些额外的
信息)。
此文件使用以下格式:
· 每行一条记录(用于项目/存储库); 不支持续行
(换行符转义)。
· 前导和尾随空格被忽略。
· 空格分隔的字段; 任何空格都可以用作字段分隔符
(Perl 的 "split(" ", $line)" 规则)。
· 字段使用修改后的 URI 编码,在 RFC 3986 的第 2.1 节(百分比编码)中定义,
或者更确切地说“查询字符串编码”(请参阅
http://en.wikipedia.org/wiki/Query_string#URL_编码),不同之处在于 SP
(" ") 可以编码为“+”(因此“+”也必须进行百分比编码)。
保留字符有:“%”(用于编码)、“+”(可用于编码SPACE)、
Perl 中定义的所有空白字符,包括 SP、TAB 和 LF,(用于
记录中的单独字段)。
· 目前公认的领域有:
存储库 GIT_DIR 的路径,相对于 $projectroot
显示为存储库所有者,最好是全名或电子邮件,或两者兼而有之
您可以使用 project_index 操作生成项目列表索引文件( TXT 链接
在项目列表页面上)直接来自 gitweb; 另请参阅“使用
gitweb”部分。
示例内容:
foo.git 乔+R+黑客+[email protected]>
foo/bar.git O+W+Ner+[email protected]>
默认情况下,此文件仅控制哪些项目是 可见 在项目列表页面上(注意
不会显示未指向正确识别的 Git 存储库的条目
通过 gitweb)。 即使项目在项目列表页面上不可见,您也可以查看它
尽管如此,还是通过手工制作一个 gitweb URL。 通过设置 $strict_export 配置
变量(见 配置文件(5)) 真正的价值,你可以只允许查看存储库
也显示在概览页面上(即只有在项目列表中明确列出的项目
文件将可以访问)。
发电 工程 名单 运用 吉特网
我们假设 GITWEB_CONFIG 有其默认的 Makefile 值,即 gitweb_config.perl.
将以下内容放入 gitweb_make_index.perl 文件:
read_config_file("gitweb_config.perl");
$projects_list = $projectroot;
然后创建以下脚本以获取适合以下格式的项目列表
GITWEB_LIST 构建配置变量(或 gitweb 配置中的 $projects_list 变量):
#!/ bin / sh的
导出 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 设置为其文件名。
控制 ACCESS 至 混帐 资料库
默认情况下,$projectroot 下的所有 Git 存储库都可见并可用于 gitweb。
但是,您可以配置 gitweb 如何控制对存储库的访问。
· 如“项目列表文件格式”部分所述,您可以控制哪些项目
旨在 可见 通过有选择地在项目列表文件中包含存储库,并设置
$projects_list gitweb 配置变量指向它。 设置 $strict_export 后,
项目列表文件可用于控制哪些存储库是 可使用 以及。
· 您可以将 gitweb 配置为仅列出并允许查看显式导出的
存储库,通过 gitweb 配置文件中的 $export_ok 变量; 看 配置文件(5)
联机帮助页。 如果它的计算结果为 true,则 gitweb 仅在此文件命名为
$export_ok 存在于其对象数据库中(如果目录具有名为
$export_ok)。
举个例子 git守护进程(1) 默认情况下(除非使用 --export-all 选项)允许
只为那些有的存储库拉 git-daemon-导出-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);
我的 $path = "$_[0]/HEAD";
我的 $r = Apache2::RequestUtil->request;
我的 $sub = $r->lookup_file($path);
返回 $sub->filename eq $path
&& $sub->status == Apache2::Const::HTTP_OK;
};
每个存储库 吉特网 配置
您可以通过在 gitweb 中创建文件来配置显示在 gitweb 中的各个存储库 GIT_目录
Git 存储库,或者通过设置一些存储库配置变量(在 GIT_DIR/配置,请参阅
混帐配置(1))。
您可以使用存储库中的以下文件:
自述文件
包含在 gitweb 项目“摘要”页面上的 html 文件(HTML 片段)
里面块元素。 您可以使用它来对项目进行更详细的描述,以
提供链接(例如到项目的主页)等。这仅在 XSS 时被识别
预防已关闭($prevent_xss 为假,请参阅 配置文件(5)); 一种包含一个的方法
将来可能会制定出 XSS 预防开启时安全的自述文件。
描述(或 gitweb.description)
短(在项目列表页面中缩短为 $projects_list_description_width,其中
默认为 25 个字符; 看 配置文件(5)) 一个项目的单行描述
(存储库的)。 纯文本文件; HTML 将被转义。 默认设置为
未命名的存储库; 编辑此文件以将其命名为 gitweb。
来自创建存储库期间的模板,通常安装在
/usr/share/git-core/模板/. 您可以使用 gitweb.description repo 配置
变量,但文件优先。
类别(或 gitweb.category)
项目的单行类别,用于对项目进行分组,如果
$projects_list_group_categories 已启用。 默认情况下(文件和配置
变量不存在),未分类的项目放在 $project_list_default_category
类别。 您可以使用 gitweb.category repo 配置变量,但文件
优先。
配置变量 $projects_list_group_categories 和
$project_list_default_category 在 配置文件(5)
cloneurl(或多值 gitweb.url)
带有存储库 URL 的文件(用于克隆和获取),每行一个。 显示在
项目摘要页面。 您可以使用多值 gitweb.url 存储库配置
变量,但文件优先。
这是基于全局前缀的@git_base_url_list 的每个存储库增强/版本
gitweb 配置变量(见 配置文件(5))。
gitweb.owner
您可以使用 gitweb.owner 存储库配置变量来设置存储库的
所有者。 它显示在项目列表和摘要页面中。
如果未设置,则使用文件系统目录的所有者(通过 GECOS 字段,即真实姓名
领域从 获取数据(3)) 如果 $projects_list 未设置(gitweb 扫描 $projectroot
存储库); 如果 $projects_list 指向带有存储库列表的文件,则
项目所有者默认为给定存储库的此文件中的值。
各种 gitweb.* 配置变量(在配置中)
阅读 %feature hash 的描述以获取详细列表和描述。 也可以看看
中的“配置 gitweb 功能”部分 配置文件(5)
行动, AND 网址
Gitweb 可以使用基于 path_info(组件)的 URL,也可以传递所有必要的信息
通过查询参数。 典型的 gitweb URL 分为五个部分:
.../gitweb.cgi/ / / :/ ?
回购
将在其上执行操作的存储库。
除了列出所有可用项目的操作以外的所有操作,无论以何种形式,
需要这个参数。
行动
将运行的操作。 默认为 项目列表 如果未设置回购,并
摘要 除此以外。
调整
修订显示。 默认为 HEAD。
径
内的路径执行操作,对于这些操作
需要它。
参数
控制动作行为的任何参数。
某些操作需要或允许指定两个修订版,有时甚至是两个路径名。
在大多数通用形式中,基于 path_info(组件)的 gitweb URL 如下所示:
.../gitweb.cgi/ / / :/ .. :/ ?
每个操作都作为一个子程序实现,并且必须出现在 %actions 哈希中。 一些
默认情况下禁用操作,必须通过功能机制打开。 例如
启用 怪 在 gitweb 配置文件中添加以下内容:
$feature{'blame'}{'default'} = [1];
行动:
标准动作是:
项目列表
列出可用的 Git 存储库。 如果没有存储库,这是默认命令
在 URL 中指定。
摘要
显示有关给定存储库的摘要。 如果没有操作,这是默认命令
在 URL 中指定,并且仅指定存储库。
头,遥控器
列出给定存储库中的所有本地或所有远程跟踪分支。
除非配置,否则默认情况下后者不可用。
标签
列出给定存储库中的所有标签(轻量级和带注释)。
斑点, 树
显示给定版本库路径中的文件和目录。 这是
如果在 URL 中没有指定动作,则默认命令,并给出路径。
blob_plain
返回给定存储库中给定路径和修订版本的文件的原始数据。
此操作的链接已标记 原.
斑点
显示同一文件的两个修订版之间的差异。
责备,责备_增量
显示文件的责备(也称为注释)信息。 以每行为基础
它显示了上次更改该行的修订版以及提交的用户
改变。 增量版本(如果已配置,则在
JavaScript 已启用)使用 Ajax 递增地将指责信息添加到
给定的文件。
出于性能原因,默认情况下禁用此操作。
提交,提交差异
显示有关存储库中特定提交的信息。 这 承诺 观看节目
更详细的关于提交的信息, 提交差异 动作显示变更集
给定的提交。
补丁
以纯文本邮件格式返回提交,适用于申请 混帐(1)。
行李牌
显示特定的注释标签(标签对象)。
日志,短日志
显示给定分支的日志信息(提交消息或仅提交主题)
(从给定的修订版开始)。
这个 短日志 视图更紧凑; 它每行显示一个提交。
历史
显示给定存储库路径中文件或目录的历史记录,从给定的
修订版(默认为 HEAD,即默认分支)。
这种观点类似于 短日志 视图。
RSS,原子
生成存储库更改的 RSS(或 Atom)提要。
网络服务器 配置
本节介绍如何配置一些常见的 web 服务器来运行 gitweb。 在所有情况下,
示例中的 /path/to/gitweb 是您运行安装 gitweb 的目录,其中包含
gitweb_config.perl。
如果您为 gitweb 配置了未在此处列出的 Web 服务器,请发送
说明,以便它们可以包含在未来的版本中。
阿帕奇 as CGI
Apache 必须配置为支持 gitweb 所在目录中的 CGI 脚本
安装。 让我们假设它是 /var/www/cgi-bin 目录。
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
选项索引 FollowSymlinks ExecCGI
设置AllowOverride无
订单允许,否认
允许从所有
使用该配置,浏览存储库的完整路径将是:
http://server/cgi-bin/gitweb.cgi
阿帕奇 - mod_perl, 通过 ModPerl::注册表
您可以在 gitweb 中使用 mod_perl。 您必须安装 Apache::Registry(对于 mod_perl 1.x)或
ModPerl::Registry(用于 mod_perl 2.x)以启用此支持。
假设 gitweb 安装到 /var/www/perl,下面的Apache配置
(对于 mod_perl 2.x)是合适的。
别名 /perl "/var/www/perl"
SetHandler perl 脚本
PerlResponseHandler ModPerl::注册表
Perl选项+ParseHeaders
选项索引 FollowSymlinks +ExecCGI
设置AllowOverride无
订单允许,否认
允许从所有
使用该配置,浏览存储库的完整路径将是:
http://server/perl/gitweb.cgi
阿帕奇 - 快速CGI
Gitweb 适用于 Apache 和 FastCGI。 首先你需要重命名、复制或符号链接 gitweb.cgi
到 gitweb.fcgi。 让我们假设 gitweb 安装在 /usr/共享/gitweb 目录。 的
以下 Apache 配置是合适的(未经测试!)
FastCgi服务器 /usr/share/gitweb/gitweb.cgi
脚本别名 /gitweb /usr/share/gitweb/gitweb.cgi
别名 /gitweb/static /usr/share/gitweb/静态
<目录 /usr/share/gitweb/静态>
SetHandler 默认处理程序
使用该配置,浏览存储库的完整路径将是:
http://server/gitweb
高级课程 WEB 服务器 设置
所有这些示例都使用请求重写,并且需要 mod_rewrite(或等效的;示例
下面是为 Apache 编写的)。
集成的 网址 HPMC胶囊 吉特网 和 HPMC胶囊 正在取得
如果您想为 gitweb 和 http:// 存储库使用一个 URL,您可以
像这样配置Apache:
服务器名称 git.example.org
文档根目录 /pub/git
SetEnv GITWEB_CONFIG /etc/gitweb.conf
# 开启模组重写
RewriteEngine叙述上
# 使首页成为 gitweb 脚本的内部重写
重写规则 ^/$ /cgi-bin/gitweb.cgi
# 使访问“哑客户端”工作
重写规则 ^/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ \
/cgi-bin/gitweb.cgi%{REQUEST_URI} [L,PT]
上述配置希望您的公共存储库能够生活在 / 发布 / git 和会
为他们服务 http://git.domain.org/dir-under-pub-git, 作为可克隆的 Git URL 和作为
可浏览的 gitweb 界面。 如果你然后开始你的 git守护进程(1)与
--base-path=/pub/git --export-all 然后你甚至可以使用 git:// URL 与
相同的路径。
设置环境变量 GITWEB_CONFIG 将告诉 gitweb 使用命名文件
(即在这个例子中 /etc/gitweb.conf) 作为 gitweb 的配置。 你真的不
在上面的例子中需要它; 仅当您的配置文件不同时才需要
放置而不是内置(在编译 gitweb 期间) gitweb_config.perl or /etc/gitweb.conf。 看
配置文件(5) 有关详细信息,尤其是有关优先规则的信息。
如果您使用示例中的重写规则 可能 还需要类似的东西
在您的 gitweb 配置文件(/etc/gitweb.conf 以下示例):
@stylesheets = ("/some/absolute/path/gitweb.css");
$my_uri = "/";
$home_link = "/";
$per_request_config = 1;
现在虽然 gitweb 应该在需要时创建 HTML 基本标签(为
相对链接),所以它应该自动工作。
支持网络端 配置 - 多 项目' 根
如果您想将 gitweb 与多个项目根一起使用,您可以编辑您的 Apache 虚拟主机
和 gitweb 配置文件的方式如下。
虚拟主机配置(在 Apache 配置文件中)应如下所示:
服务器名称 git.example.org
文档根目录 /pub/git
SetEnv GITWEB_CONFIG /etc/gitweb.conf
# 开启模组重写
RewriteEngine叙述上
# 使首页成为 gitweb 脚本的内部重写
重写规则 ^/$ /cgi-bin/gitweb.cgi [QSA,L,PT]
# 在 unix 用户的家中查找 public_git 文件夹
# http://git.example.org/~ /
重写规则 ^/\~([^\/]+)(/|/gitweb.cgi)?$ /cgi-bin/gitweb.cgi \
[QSA,E=GITWEB_PROJECTROOT:/ home /$1/public_git/,L,PT]
# http://git.example.org/+ /
#RewriteRule ^/\+([^\/]+)(/|/gitweb.cgi)?$ /cgi-bin/gitweb.cgi \
[QSA,E=GITWEB_PROJECTROOT:/ home /$1/public_git/,L,PT]
# http://git.example.org/user//
#RewriteRule ^/user/([^\/]+)/(gitweb.cgi)?$ /cgi-bin/gitweb.cgi \
[QSA,E=GITWEB_PROJECTROOT:/ home /$1/public_git/,L,PT]
# 定义的项目根列表
重写规则 ^/scm(/|/gitweb.cgi)?$ /cgi-bin/gitweb.cgi \
[QSA,E=GITWEB_PROJECTROOT:/pub/scm/,L,PT]
重写规则^/ VAR(/|/gitweb.cgi)?$ /cgi-bin/gitweb.cgi \
[QSA,E=GITWEB_PROJECTROOT:/var/git/,L,PT]
# 使访问“哑客户端”工作
重写规则 ^/(.*\.git/(?!/?(HEAD|info|objects|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 引用的代码中;
这些配置使两件事成为可能。 首先,每个unix用户( ) 的服务器将
能够浏览在 gitweb 中找到的 Git 存储库 〜/ public_git / 与
以下网址:
http://git.example.org/~ /
如果您不想在您的服务器上使用此功能,只需删除第二个重写规则。
如果您已经在虚拟主机中使用了“mod_userdir”,或者您不想使用“~”作为
第一个字符,只需注释或删除第二个重写规则,并取消注释其中一个
按照你想要的。
二、发现的仓库 /发布/scm/ 和 /变种/混帐/ 将可以通过
http://git.example.org/scm/ 和 http://git.example.org/var/. 您可以添加尽可能多的项目
通过添加第三个和第四个等重写规则,根据需要添加根。
PATH_INFO 用法
如果您通过放置在 gitweb 中启用 PATH_INFO 用法
$feature{'pathinfo'}{'default'} = [1];
在您的 gitweb 配置文件中,可以设置您的服务器,以便它
以表单的形式使用和生成 URL
http://git.example.com/project.git/shortlog/sometag
即没有 gitweb.cgi 部分,通过使用如下配置。 这个
配置假设 /var/www/gitweb 是您的网络服务器的 DocumentRoot,包含
gitweb.cgi 脚本和补充静态文件(样式表、网站图标、JavaScript):
服务器别名 git.example.com
文档根目录 /var/www/gitweb
选件ExecCGI
AddHandler cgi 脚本 cgi
目录索引 gitweb.cgi
RewriteEngine On
RewriteCond%{REQUEST_FILENAME}!-F
的RewriteCond%{REQUEST_FILENAME}-D!
重写规则 ^.* /gitweb.cgi/$0 [L,PT]
重写规则保证现有的静态文件将得到适当的服务,而
任何其他 URL 将作为 PATH_INFO 参数传递给 gitweb。
通知 在这种情况下,您不需要为@stylesheets、$my_uri 和
$home_link,但是您失去了对项目 .git 目录的“哑客户端”访问权限(在
“用于 gitweb 和用于获取的单一 URL”部分)。 后者的可能解决方法是
以下内容:在您的项目根目录中(例如 / 发布 / git) 将项目命名为 也完全不需要 a
.git 扩展名(例如 /发布/git/项目 而不是 /pub/git/project.git) 并配置
阿帕奇如下:
服务器别名 git.example.com
文档根目录 /var/www/gitweb
别名匹配 ^(/.*?)(\.git)(/.*)?$ /pub/git$1$3
选件ExecCGI
AddHandler cgi 脚本 cgi
目录索引 gitweb.cgi
RewriteEngine On
RewriteCond%{REQUEST_FILENAME}!-F
的RewriteCond%{REQUEST_FILENAME}-D!
重写规则 ^.* /gitweb.cgi/$0 [L,PT]
额外的 AliasMatch 使得
http://git.example.com/project.git
将提供对项目的 Git 目录的原始访问权限(以便可以克隆项目),而
http://git.example.com/project
将提供人性化的 gitweb 访问。
这个解决方案不是 100% 万无一失的,从某种意义上说,如果某个项目有一个命名引用
(分支,标签)以 混帐/,然后路径如
http://git.example.com/project/command/abranch..git/abranch
将失败并显示 404 错误。
使用 onworks.net 服务在线使用 gitweb